OBJECTS_AND_SID 结构是在 Win32 API 的 Accctrl.h 头文件中定义的,用于描述对象的安全描述符(security descriptor)的一部分。下面是该结构的定义:
typedef struct _OBJECTS_AND_SID {
  DWORD          ObjectsPresent;
  SE_OBJECT_TYPE ObjectType;
  LPWSTR         ObjectTypeName;
  LPWSTR         InheritedObjectTypeName;
  GUID *         InheritedObjectType;
  GUID *         pSid;
} OBJECTS_AND_SID, *POBJECTS_AND_SID;

这个结构包含以下字段:

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

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

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

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

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


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


  •  InheritedObjectType:一个指向 GUID 结构的指针,表示继承的对象类型的 GUID。


  •  pSid:一个指向 SID 结构的指针,表示与对象相关联的安全标识符(SID)。


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

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


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