2.2.7.1.1 Client Request Extensions

An SMB_COM_NT_TRANSACT (section 2.2.4.8) command with an NT_TRANSACT_CREATE subcommand is sent by a client to open a file or device on the server. The NT_TRANSACT_CREATE subcommand is specified in [MS-CIFS] section 2.2.7.1. This extension adds the following:

  • An additional flag bit is added to the Flags field. The additional flag, NT_CREATE_REQUEST_EXTENDED_RESPONSE, is used to request an extended response from the server.

  • An additional parameter value, SECURITY_DELEGATION, is added to the ImpersonationLevel field.

  • An additional flag bit is added to the CreateOptions field. The additional flag, FILE_OPEN_REPARSE_POINT, is used to open a reparse point file itself.

All other fields are as specified in [MS-CIFS] section 2.2.7.1.

 NT_Trans_Parameters
   {
   ULONG         Flags;
   ULONG         RootDirectoryFID;
   ULONG         DesiredAccess;
   LARGE_INTEGER AllocationSize;
   SMB_EXT_FILE_ATTR ExtFileAttributes;
   ULONG         ShareAccess;
   ULONG         CreateDisposition;
   ULONG         CreateOptions;
   ULONG         SecurityDescriptorLength;
   ULONG         EALength;
   ULONG         NameLength;
   ULONG         ImpersonationLevel;
   UCHAR         SecurityFlags;
   UCHAR         Name[NameLength];
   }
 NT_Trans_Data
   {
   SECURITY_DESCRIPTOR      SecurityDescriptor;
   FILE_FULL_EA_INFORMATION ExtendedAttributes[];
   }

NT_Trans_Parameters (variable):


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Flags

RootDirectoryFID

DesiredAccess

AllocationSize (variable)

...

ExtFileAttributes

ShareAccess

CreateDisposition

CreateOptions

SecurityDescriptorLength

EALength

NameLength

ImpersonationLevel

SecurityFlags

Name (variable)

...

Flags (4 bytes): A 32-bit field containing a set of flags that modify the client request. Unused bits SHOULD be set to 0 by the client when sending a message and MUST be ignored when received by the server.

Name & bitmask

Meaning

NT_CREATE_REQUEST_OPLOCK

0x00000002

Level I (exclusive) OpLock requested.

NT_CREATE_REQUEST_OPBATCH

0x00000004

Batch OpLock requested.

NT_CREATE_OPEN_TARGET_DIR

0x00000008

Parent directory of the target is to be opened.

NT_CREATE_REQUEST_EXTENDED_RESPONSE

0x00000010

Extended information is requested in the response.

ImpersonationLevel (4 bytes): This field specifies the impersonation level requested by the application that is issuing the create request, and MUST contain one of the following values. The server MUST validate this field but otherwise ignore it.

Impersonation is described in [MS-WPO] section 9.7; for more information about impersonation, see [MSDN-IMPERS].

Value

Meaning

SECURITY_ANONYMOUS

0x00000000

The application-requested impersonation level is Anonymous.

SECURITY_IDENTIFICATION

0x00000001

The application-requested impersonation level is Identification.

SECURITY_IMPERSONATION

0x00000002

The application-requested impersonation level is Impersonation.

SECURITY_DELEGATION

0x00000003

The application-requested impersonation level is Delegation.

CreateOptions (4 bytes): A 32-bit field containing flag options for creating a file or directory. In addition to the flags specified in [MS-CIFS] section 2.2.4.64, the following modifications and extensions apply to the CreateOptions field. FILE_OPEN_REPARSE_POINT is a new flag to SMB. The CreateOptions field MUST be set to 0x00000000 or to a combination of the flags specified in the [MS-CIFS] section 2.2.4.64 CreateOptions table and the following table. Unused bit fields SHOULD be set to 0 when sent and MUST be ignored on receipt. Server implementations SHOULD reserve all bits not specified in the [MS-CIFS] section 2.2.4.64 CreateOptions table and the following table.

Name and bitmask

Meaning

FILE_OPEN_REPARSE_POINT

0x00200000

If the file or directory being opened is a reparse point, open the reparse point itself rather than the target that the reparse point references.

Show: