OBJECTS_AND_NAME_W 结构是在 Win32 API 的 Accctrl.h 头文件中定义的,用于描述对象的安全描述符(security descriptor)的一部分,其中“W”表示宽字符集(Unicode)。下面是该结构的定义:
typedef struct _OBJECTS_AND_NAME_W {
  DWORD        ObjectsPresent;
  SE_OBJECT_TYPE ObjectType;
  LPWSTR       ObjectTypeName;
  LPWSTR       InheritedObjectTypeName;
  LPWSTR       ptstrName;
} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;

这个结构与之前提到的 OBJECTS_AND_NAME_A 结构类似,但是使用了宽字符集。结构的字段包括:

  •  ObjectsPresent:一个标志位,表示结构中的哪些字段是有效的。可以是以下值的组合:

  - SE_OBJECT_TYPE_PRESENT:ObjectType 字段是有效的。
  - SE_OBJECT_NAME_PRESENT:ptstrName 字段是有效的。
  - SE_OBJECT_TYPE_PRESENT 和 SE_OBJECT_NAME_PRESENT:ObjectType 和 ptstrName 字段都是有效的。

  •  ObjectType:一个表示对象类型的枚举值,可以是以下之一:

  - SE_UNKNOWN_OBJECT_TYPE:未知的对象类型。
  - SE_FILE_OBJECT:文件或目录。
  - SE_SERVICE:服务。
  - SE_PRINTER:打印机。
  - 等等,还有其他对象类型。

  •  ObjectTypeName:一个指向以 NULL 结尾的宽字符字符串的指针,表示对象类型的名称。


  •  InheritedObjectTypeName:一个指向以 NULL 结尾的宽字符字符串的指针,表示继承的对象类型的名称。


  •  ptstrName:一个指向以 NULL 结尾的宽字符字符串的指针,表示对象的名称。


这个结构通常用于描述安全描述符的目标对象,例如在函数 SetEntriesInAcl 中设置 ACL 条目时,用于指定要授予或拒绝访问权限的对象。

如果你的应用程序使用 Unicode 字符集,建议使用 OBJECTS_AND_NAME_W 结构。


转载请注明出处:http://www.zyzy.cn/article/detail/23748/Win32 API/Accctrl.h/OBJECTS_AND_NAME_W