这是MSDN的错误吗?关于指针算术

时间:2012-12-15 12:38:18

标签: c windows arrays winapi pointers

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必须以空字符字节终止。

1 个答案:

答案 0 :(得分:2)

来自MSDN

  

EaName(变量) - 一个8位ASCII字符数组,包含扩展属性名称,后跟单个终止空字符字节

     

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

+1说明空终止符。