Subject: [cifs-protocol] CAR - NTCreateX options

John Dunning johndun at microsoft.com
Fri Sep 5 18:57:08 GMT 2008


Hello Tridge,

   I have answers for two of your questions and I would like clarification for question number 1. Please let me know if the answers for questions 2 and 3 are satisfactory. Also would you please clarify what data you are using to support the behavior you are seeing in #1.


Question 1: MS-SMB section 2.2.8 says that FILE_OPEN_BY_FILE_ID should return STATUS_NOT_SUPPORTED. We have found that win2008 returns STATUS_OK for this bit. Can you please tell us how this bit works?


   I analyzed the capture that you sent, raw-open. I do not see the behavior that you are describing. Frame 1091 is the frame which contains the client request Create with CreateOptions = 0x00002000, FILE_OPEN_BY_FILE_ID. The following frame, 1092 is the server response. The NTStatus returned by the server in that frame is: 0xC00000BB, Facility = FACILITY_SYSTEM, Severity = STATUS_SEVERITY_ERROR, Code = (187) STATUS_NOT_SUPPORTED. These frames would support :MS-SMB section 2.2.8 which says that FILE_OPEN_BY_FILE_ID should return STATUS_NOT_SUPPORTED.

Question 2: We similarly noticed that w2008 returns the NT_STATUS_OK for each of the following bits:

 0x00010000
 0x00020000
 0x00040000
 0x00080000

all of which are not documented in the current WSPP docs. Please clarify this behaviour, and if w2008 is not just ignoring these bits then please document what they mean.


Question 3:

Please also tell us what the differences are for handling these bits between the SMB and SMB2 protocols. We have noticed (for example) that the w2008 SMB2 server returns STATUS_NOT_SUPPORTED for bit 0x00100000 in the create options, whereas the same server using the SMB protocol returns STATUS_OK, and the SMB2 documentation says it should return STATUS_INVALID_PARAMETER.

For questions # 2 and # 3 the SMB document and the SMB2 document will be updated in a future release of these documents. The updates will be similar if not exactly as follows:

MS-SMB:
CreateOptions (4 bytes): The options to use if creating the file or directory. This field MUST be set to 0 or a combination of the following possible values. Unused bit fields SHOULD be set to 0 by the client when sending a request and SHOULD be ignored when received by the server.<49>

Windows server implementations reserve all bits not specified in the following table<50>.


WB Notes
<49> Windows-based SMB servers force off the following options when receiving this request:
o             FILE_SYNCHRONOUS_IO_ALERT
o             FILE_SYNCHRONOUS_IO_NONALERT
o             FILE_CREATE_TREE_CONNECTION

Windows-based SMB servers fail requests with the FILE_OPEN_BY_FILE_ID option set and return STATUS_NOT_SUPPORTED in the Status field of the SMB header in the server response.

Windows-based SMB servers fail requests when both the FILE_DIRECTORY_FILE and FILE_NON_DIRECTORY_FILE options are set and return STATUS_NOT_SUPPORTED in the Status field of the SMB header in the server response.

Windows-based SMB servers allow only a combination of the following options on a named pipe or a mailslot:
o             FILE_WRITE_THROUGH
o             FILE_SYNCHRONOUS_IO_ALERT
o             FILE_SYNCHRONOUS_IO_NONALERT

<50>If any of the reserved bits are set, Windows server implementations return NT_STATUS_OK.

Thanks
John Dunning
Senior Escalation Engineer Microsoft Corporation
US-CSS DSC PROTOCOL TEAM
Email: johndun at microsoft.com
Tele: (469)775-7008

We're hiring

From: John Dunning
Sent: Thursday, August 14, 2008 6:10 PM
To: 'tridge at samba.org'
Cc: 'pfif at tridgell.net'; 'cifs-protocol at samba.org'
Subject: RE: Subject: [cifs-protocol] CAR - NTCreateX options

Hello,
  I failed to indicate what this request is regarding. The request I am working on is for your question:

"MS-SMB section 2.2.8 says that FILE_OPEN_BY_FILE_ID should return STATUS_NOT_SUPPORTED. We have found that win2008 returns STATUS_OK for this bit. Can you please tell us how this bit works?

We similarly noticed that w2008 returns the NT_STATUS_OK for each of the following bits:

 0x00010000
 0x00020000
 0x00040000
 0x00080000

all of which are not documented in the current WSPP docs. Please clarify this behaviour, and if w2008 is not just ignoring these bits then please document what they mean.

Please also tell us what the differences are for handling these bits between the SMB and SMB2 protocols. We have noticed (for example) that the w2008 SMB2 server returns STATUS_NOT_SUPPORTED for bit 0x00100000 in the create options, whereas the same server using the SMB protocol returns STATUS_OK, and the SMB2 documentation says it should return STATUS_INVALID_PARAMETER.

 You indicated that WIN2008  will return STATUS_OK in response to a SMB_COM_NT_CREATE_ANDX when the CreateOptions are set to FILE_OPEN_BY_FILE_ID.
My review of the source code indicates that WIN2008 will return STATUS_NOT_SUPPORTED. Would it be possible for you to obtain a network trace of the behavior you are describing?

In the meantime, I will continue researching the rest of your request.

Thanks
John



________________________________
From: John Dunning
Sent: Thursday, August 14, 2008 4:40 PM
To: 'tridge at samba.org'
Cc: 'pfif at tridgell.net'; 'cifs-protocol at samba.org'
Subject: Subject: [cifs-protocol] CAR - NTCreateX options

Hello,
      I'll be researching this request and will let you know if I have news or questions. Please let me know if you have any additional information or questions regarding this request.

Thanks
John Dunning
Escalation Engineer Microsoft Corporation
US-CSS DSC PROTOCOL TEAM
Email: johndun at microsoft.com<mailto:johndun at microsoft.com>
Tele: (469)775-7008

We're hiring<http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted>

-------------- next part --------------
HTML attachment scrubbed and removed


More information about the cifs-protocol mailing list