Revision Summary Date Revision History Revision Class Comments 4/3/2007 0.01 Version 0.01 release 7/3/2007 1.0 MLonghorn+90 7/20/2007 2.0 Major Updated and revised the technical content. 8/10/2007 3.0 Major Updated and revised the technical content. 9/28/2007 4.0 Major Updated and revised the technical content. 10/23/2007 5.0 Major Updated and revised the technical content. 11/30/2007 5.0.1 Editorial Changed language and formatting in the technical content. 1/25/2008 5.0.2 Editorial Changed language and formatting in the technical content. 3/14/2008 5.0.3 Editorial Changed language and formatting in the technical content. 5/16/2008 6.0 Major Updated and revised the technical content. 6/20/2008 7.0 Major Updated and revised the technical content. 7/25/2008 8.0 Updated and revised the technical content. 8/29/2008 9.0 Major Updated and revised the technical content. 10/24/2008 10.0 Major Updated and revised the technical content. 12/5/2008 11.0 Major Updated and revised the technical content. 1/16/2009 12.0 Major Updated and revised the technical content. 2/27/2009 13.0 Major Updated and revised the technical content. 4/10/2009 14.0 Major Updated and revised the technical content. 5/22/2009 15.0 Major Updated and revised the technical content. 7/2/2009 16.0 Major Updated and revised the technical content.
does not affect how data is transferred over the network. FILE_SUPPORTS_OBJECT_IDS 0x00010000 Yes File system supports object identifiers. FILE_SUPPORTS_ENCRYPTION 0x00020000 Yes File system supports encryption. FILE_NAMED_STREAMS 0x00040000 Yes File system supports multiple named data for a file. FILE_READ_ONLY_VOLUME 0x00080000 Yes<7> Specified volume is read-only. FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 Yes<8> Specified volume can be written to one time The write MUST be performed in sequential order. FILE_SUPPORTS_TRANSACTIONS 0x00200000 Yes<9> File system supports transaction processing. FILE_SUPPORTS_HARD_LINKS 0x00400000 Yes<10> File system supports direct links to other devices and partitions. FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 Yes<11> File system supports extended attributes (EAs). FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 Yes<12> File system supports open by FileID. FILE_SUPPORTS_USN_JOURNAL 0x02000000 Yes<13> File system supports update sequence number (USN) journals. Reserved 0xFE007E00 N/A These bits fields SHOULD be set to zero when sending and MUST be ignored when the message is received. Unique Identifiers The SMB Version 1.0 Protocol makes use of the following data types from : GUID as specified in section 2.3.4.2 The list of unique identifiers, specified in section 2.2.1.6, has been extended to include the following new unique identifiers: 64-bit file identifier (FileId) Volume GUID (VolumeGUID)
SMB_Parameters { WordCount; Words { USHORT DialectIndex; UCHAR SecurityMode; USHORT MaxMpxCount; USHORT MaxNumberVcs; ULONG MaxBufferSize; MaxRawSize; ULONG SessionKey; ULONG Capabilities; FILETIME SystemTime; SHORT ServerTimeZone; UCHAR ChallengeLength; } } SMB_Data { USHORT ByteCount; Bytes { UCHAR Challenge[]; SMB_STRING DomainName[]; SMB_STRING ServerName[]; } } 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 SMB_Parameters (35 bytes) ... ... ... SMB_Data (variable) ... SMB_Parameters (35 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 Words (34 bytes) ... ... ... Words (34 bytes): 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
SMB_Parameters { UCHAR WordCount; Words { UCHAR AndXCommand; UCHAR AndXReserved; USHORT AndXOffset; USHORT MaxBufferSize; USHORT MaxMpxCount; USHORT VcNumber; SessionKey; USHORT SecurityBlobLength; Reserved; ULONG Capabilities; } } SMB_Data { USHORT ByteCount; Bytes { SecurityBlob[SecurityBlobLength]; SMB_STRING NativeOS[]; SMB_STRING NativeLanMan[]; } } 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 SMB_Parameters (25 ... ... ... SMB_Data (variable) ... SMB_Parameters (25 bytes): 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 WordCount Words (24 bytes) ... ... ... WordCount (1 byte): The value of this field MUST be 0x0C. (24 bytes):
} 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) ... (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 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.
Receiving any SMB_COM_NT_TRANSACT Response The processing of any SMB_COM_NT_TRANSACT response is handled as specified in section 3.2.5.40. Receiving an NT_TRANSACT_IOCTL Response The processing of an NT_TRANSACT_IOCTL response is handled as specified in section 3.2.5.40.2 with the following additions. Receiving an FSCTL_SRV_REQUEST_RESUME_KEY Function Code If the response indicates that an error occurred, then the client MUST propagate the error to the application that initiated the call. If the response indicates that the operation is successful, then the client MUST return the copychunk resume key that is received in the Data block of the response to the application that initiated the call. Receiving an FSCTL_SRV_COPYCHUNK Function Code The success or failure code MUST be returned to the calling application. The FSCTL_SRV_COPYCHUNK response (section ) MUST also be returned to the calling application in both success and failure situations. Receiving an NT_TRANSACT_QUERY_QUOTA Response If the response indicates an error occurred, then the client MUST propagate the error to the application that initiated the call. If the response indicates the operation is successful, then the client MUST return the information received in the Data block of the response to the application that initiated the call. Receiving an NT_TRANSACT_SET_QUOTA Response The client MUST propagate the success or failure code in the response to the application that initiated the call. Receiving an SMB_COM_SEARCH Response The processing of an SMB_COM_SEARCH response is handled as specified in section 3.2.5.33. Receiving any SMB_COM_TRANSACTION2 subcommand Response Aside from the following subcommand responses, all other SMB_COM_TRANSACTION2 subcommand responses are handled as specified in section 3.2.5.39. Receiving any TRANS2_SET_FS_INFORMATION Response The client MUST propagate the success or failure code in the response to the application that initiated the call. Timer Events There are no new client timers other than those specified in section 3.2.6.
14 71 30 76 76 30 84 85 30 87 Other local events 117 133 16 P 157 18 18 158 Protocol Details 97 R 14 15 14 16 Security 157 157 Sequencing rules client ( 98, 112) server ( 98, 121) Server abstract data model ( 97, 117) higher-layer triggered events ( 97, 119) initialization ( 97, 119) local events ( 98, 133) message processing ( 98, 121) 133 sequencing ( 98, 121) timer events ( 98, 133) timers ( 97, 118) Server details ( 97, 117) 44 49 60 62 60 36 37 39 41 52 54 44 57 58 42 43 90 93 92 34 78 19 31 21 T Timer events client ( 98, 117) server ( 98, 133) Timers client ( 97, 99) server ( 97, 118) 178 30 30 30 67 21 21 Triggered events - higher-layer client ( 97, 100) server ( 97, 119) V 19 19 26