【转】CIFS服务端开发笔记

◆ 当SMB_COM_WRITE_ANDX请求写入的数据字节数大于或等于65535时,数据包的ByteCount字段将为0,这种情况下只能够通过数据包的实际大小判断要写入的数据字节数。

 

◆ 在执行lsarpc的LsarLookupSids2方法时,ReferencedDomains参数必须有内容,否则Windows XP或更高版本的客户端将不能识别返回的用户名。

 

◆ 所有的DCERPC的字符串内容必须按2字符对齐并且以空(0)字符结尾,如果字符数量为单数,应该在它的后面追加一个空(0)字符。

 

◆ 在SMB_COM_NEGOTIATE应答时MaxMpx为1并且SMB_COM_NT_CREATE_ANDX应答时OpLockLevel的值为0,将会导致一些文件相关的Win32 API函数(例如GetPrivateProfileString)不能正常工作。

 

◆ 有些Windows Vista之前版本的客户端使用NTLM v2的方式登录时,发送的AUTHENTICATE_MESSAGE中Lm Response和Nt Response都是24字节,和NTLM v2的标准格式不同。其中Lm Response前8个字节为Client Challenge,必须接在Server Challenge之后组成一个16字节的内容,并计算出这个内容的MD5值。然后使用NTLM v1的加密方法(P24)把MD5值加密为24字节数据与Nt Response进行比较。

 

◆ Windows Vista或更高版本的Windows客户端不再支持NTLM v1的身份验证方式。

 

◆ Windows 7客户端登录时,会发送24个字节的Lm Response,但是每个字节的值都为0,不知道有什么作用。

 

◆ 在处理TRANS2_FIND_FIRST2的Transacton时,如果请求查找的是所有文件(查找名称为“*”),必须在应答的查找结果中包含“.”和“..”这两个特殊目录信息(即使要查找的目录下没有任何内容)。

 

◆ 返回一个文件属性如果为SMB_FILE_ATTRIBUTE_NORMAL而不是SMB_FILE_ATTRIBUTE_ARCHIVE,可能会造成某些程序无法正常访问文件。

 

◆ 在应答SMB_COM_NT_CREATE_ANDX的时候,如果OpLockLevel的值为0可能会降低Windows读写文件的性能。

posted @ 2012-08-22 18:45  欢乐小飞  阅读(467)  评论(0编辑  收藏  举报