Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Макрос InitializeObjectAttributes инициализирует непрозрачную структуру OBJECT_ATTRIBUTES , которая задает свойства дескриптора объекта для подпрограмм, которые открывают дескрипторы.
Синтаксис
VOID InitializeObjectAttributes(
[out] POBJECT_ATTRIBUTES p,
[in] PUNICODE_STRING n,
[in] ULONG a,
[in] HANDLE r,
[in, optional] PSECURITY_DESCRIPTOR s
);
Параметры
p
Указатель на структуру OBJECT_ATTRIBUTES для инициализации.
n
Указатель на строку Юникода, содержащую имя объекта, для которого должен быть открыт дескриптор. Это должно быть полное имя объекта или относительный путь к каталогу объектов, указанному параметром RootDirectory.
a
Указывает один или несколько следующих флагов:
Флаг | Описание |
---|---|
OBJ_INHERIT | Этот дескриптор может наследоваться дочерними процессами текущего процесса. |
OBJ_PERMANENT | Этот флаг применяется только к объектам, которые именуются в диспетчере объектов. По умолчанию такие объекты удаляются при закрытии всех открытых дескрипторов. Если этот флаг указан, объект не удаляется при закрытии всех открытых дескрипторов. Драйверы могут использовать ZwMakeTemporaryObject для удаления постоянных объектов. |
OBJ_EXCLUSIVE | Для этого объекта можно открыть только один дескриптор. |
OBJ_CASE_INSENSITIVE | Если этот флаг указан, при сопоставлении параметра ObjectName с именами существующих объектов используется сравнение без учета регистра. В противном случае имена объектов сравниваются с помощью параметров системы по умолчанию. |
OBJ_OPENIF | Если этот флаг указан в подпрограмме, которая создает объекты, и этот объект уже существует, подпрограмма должна открыть этот объект. В противном случае подпрограмма создания объекта возвращает код NTSTATUS STATUS_OBJECT_NAME_COLLISION. |
OBJ_KERNEL_HANDLE | Указывает, что дескриптор может быть доступ только в режиме ядра. |
OBJ_FORCE_ACCESS_CHECK | Подпрограмма открытия дескриптора должна применять все проверки доступа для объекта, даже если дескриптор открыт в режиме ядра. |
r
Дескриптор корневого каталога объектов для имени пути, указанного в параметре ObjectName. Если ObjectName является полным именем объекта, RootDirectory имеет значение NULL. Используйте ZwCreateDirectoryObject для получения дескриптора в каталог объектов.
s
Указывает дескриптор безопасности для применения к объекту при его создании. Это необязательный параметр. Драйверы могут указать ЗНАЧЕНИЕ NULL, чтобы принять безопасность по умолчанию для объекта. Дополнительные сведения см. в следующем разделе "Примечания".
Возвращаемое значение
Отсутствует
Замечания
InitializeObjectAttributes инициализирует структуру OBJECT_ATTRIBUTES , которая указывает свойства открываемого дескриптора объекта. Вызывающий объект затем может передать указатель на эту структуру в подпрограмму, которая фактически открывает дескриптор.
Подпрограммы драйверов, которые выполняются в контексте процесса, отличном от системного процесса, должны задать флаг OBJ_KERNEL_HANDLE для параметра "Атрибуты ". Этот флаг ограничивает использование дескриптора, открытого для этого объекта, для процессов, выполняемых только в режиме ядра. В противном случае дескриптор может получить доступ к процессу, в контексте которого выполняется драйвер.
Обратите внимание, что InitializeObjectAttributes всегда задает элемент SecurityQualityOfServiceOBJECT_ATTRIBUTES значение NULL. Драйверы, для которых требуется значение, отличное от NULL , могут напрямую задать SecurityQualityOfService .
Требования
Требование | Ценность |
---|---|
целевая платформа | Рабочий стол |
Заголовок | ntdef.h (включая Wdm.h, Ntddk.h, Ntdef.h) |