在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
表示空终止符。