Поделиться через


Функция FltQuerySecurityObject (fltkernel.h)

FltQuerySecurityObject извлекает копию дескриптора безопасности объекта.

Синтаксис

NTSTATUS FLTAPI FltQuerySecurityObject(
  [in]            PFLT_INSTANCE        Instance,
  [in]            PFILE_OBJECT         FileObject,
  [in]            SECURITY_INFORMATION SecurityInformation,
  [in, out]       PSECURITY_DESCRIPTOR SecurityDescriptor,
  [in]            ULONG                Length,
  [out, optional] PULONG               LengthNeeded
);

Параметры

[in] Instance

Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.

[in] FileObject

Указатель на объект file для объекта, дескриптор безопасности которого запрашивается. Этот параметр является обязательным и не может иметь значение NULL.

[in] SecurityInformation

SECURITY_INFORMATION значение. Этот параметр является обязательным и должен иметь один из следующих значений:

Значение SecurityInformation Значение
OWNER_SECURITY_INFORMATION Запрашивается идентификатор владельца объекта. Требуется доступ READ_CONTROL.
GROUP_SECURITY_INFORMATION Запрашивается идентификатор основной группы объекта. Требуется доступ READ_CONTROL.
DACL_SECURITY_INFORMATION Запрашивается список управления доступом на уровне пользователей (DACL) объекта. Требуется доступ READ_CONTROL.
SACL_SECURITY_INFORMATION Запрашивается системный ACL (SACL) объекта . Требуется доступ ACCESS_SYSTEM_SECURITY.

[in, out] SecurityDescriptor

Указатель на предоставленный вызывающим объектом выходной буфер, который получает копию дескриптора безопасности для указанного объекта. Структура SECURITY_DESCRIPTOR возвращается в самостоятельном формате. Этот параметр является необязательным и может иметь значение NULL.

[in] Length

Размер буфера SecurityDescriptor (в байтах).

[out, optional] LengthNeeded

Указатель на переменную, выделенную вызывающим объектом, которая получает количество байтов, необходимых для хранения скопированного дескриптора безопасности, возвращенного в буфере, на который указывает параметр SecurityDescriptor . Этот параметр является необязательным и может иметь значение NULL.

Возвращаемое значение

FltQuerySecurityObject возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS , например одно из следующих значений:

Код возврата Описание
STATUS_ACCESS_DENIED
У вызывающей стороны не было необходимого доступа. Это код ошибки.
STATUS_BUFFER_TOO_SMALL
Буфер слишком мал, чтобы содержать дескриптор безопасности. Ни одна из сведений о безопасности не была скопирована в буфер. Это код ошибки.

Комментарии

Дескриптор безопасности может иметь абсолютную или самостоятельную форму. В относительной форме все члены структуры расположены в памяти непрерывно. В абсолютной форме структура содержит только указатели на ее члены.

Файловая система NTFS накладывает ограничение в 64 КБ на размер дескриптора безопасности, записанного на диск для файла. (Файловая система FAT не поддерживает дескрипторы безопасности для файлов.) Таким образом, буфер размером 64 КБ, на который указывает параметр SecurityDescriptor , гарантированно будет достаточно большим, чтобы вместить возвращенную SECURITY_DESCRIPTOR структуру.

Объект, на который указывает параметр FileObject , может представлять именованный поток данных. Дополнительные сведения об именованных потоках данных см. в разделе FILE_STREAM_INFORMATION.

Дополнительные сведения о безопасности и управлении доступом см. в документации по Microsoft Windows SDK.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

См. также раздел

FILE_STREAM_INFORMATION

SECURITY_DESCRIPTOR

SECURITY_INFORMATION