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


Функция 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

Указатель объекта файла для объекта, дескриптор безопасности которого запрашивается. Этот параметр является обязательным и не может быть 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.

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

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка fltkernel.h (include Fltkernel.h)
библиотеки FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

См. также

FILE_STREAM_INFORMATION

SECURITY_DESCRIPTOR

SECURITY_INFORMATION