在 Win32 API 的 Accctrl.h 头文件中,OBJECTS_AND_NAME_A 结构是用于描述对象的安全描述符(security descriptor)的一部分。这个结构主要用于指定一个对象以及与之相关的名字。下面是该结构的定义:
typedef struct _OBJECTS_AND_NAME_A {
  DWORD        ObjectsPresent;
  SE_OBJECT_TYPE ObjectType;
  LPSTR        ObjectTypeName;
  LPSTR        InheritedObjectTypeName;
  LPSTR        ptstrName;
} OBJECTS_AND_NAME_A, *POBJECTS_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 条目时,用于指定要授予或拒绝访问权限的对象。

如果你的应用程序使用 ANSI 字符集,建议使用 OBJECTS_AND_NAME_A 结构。如果使用 Unicode 字符集,可以使用 OBJECTS_AND_NAME_W 结构,其中结尾的“W”表示宽字符集。


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