http://msdn.microsoft.com/en-us/library/windows/hardware/ff545793(v=vs.85).aspx处,

typedef struct _FILE_FULL_EA_INFORMATION {
  ULONG  NextEntryOffset;
  UCHAR  Flags;
  UCHAR  EaNameLength;
  USHORT EaValueLength;
  CHAR   EaName[1];
} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;


MSDN最后一行说:

“与每个条目关联的值跟随EaName数组。也就是说,EA的值位于EaName +(EaNameLength + 1)。”

我认为这是错误的,正确的应该是

“与每个条目关联的值都遵循EaName数组。也就是说,EA的值位于EaName + EaNameLength。”

谁是正确的?

PS:

在sam页上,MSDN说:“ EaNameLength:EaName数组的字节长度。此值不包括EaName的空终止符。”

此外,MSDN并没有说EaName必须以空字符字节终止。

最佳答案

MSDN


  EaName(变量)-8位ASCII字符数组,包含扩展属性名称,后跟一个终止的空字符字节。
  
  EaNameLength(1个字节):一个8位无符号整数,包含EaName字段中扩展属性名称的长度(以字节为单位)。该值不得在EaName中包含终止空字符。


+1表示空终止符。

08-27 21:38