Функция 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 , например одно из следующих значений:
Код возврата | Описание |
---|---|
|
У вызывающей стороны не было необходимого доступа. Это код ошибки. |
|
Буфер слишком мал, чтобы содержать дескриптор безопасности. Ни одна из сведений о безопасности не была скопирована в буфер. Это код ошибки. |
Комментарии
Дескриптор безопасности может иметь абсолютную или самостоятельную форму. В относительной форме все члены структуры расположены в памяти непрерывно. В абсолютной форме структура содержит только указатели на ее члены.
Файловая система 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 |