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):
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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.
-
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.