Функция IoCheckLinkShareAccess (wdm.h)
Подпрограмма IoCheckLinkShareAccess вызывается драйверами файловой системы (FSD) или другими драйверами высокого уровня, чтобы проверить, разрешен ли общий доступ к объекту файла.
Синтаксис
NTSTATUS IoCheckLinkShareAccess(
[in] ACCESS_MASK DesiredAccess,
[in] ULONG DesiredShareAccess,
[in, out, optional] PFILE_OBJECT FileObject,
[in, out, optional] PSHARE_ACCESS ShareAccess,
[in, out, optional] PLINK_SHARE_ACCESS LinkShareAccess,
[in] ULONG IoShareAccessFlags
);
Параметры
[in] DesiredAccess
Указывает значение ACCESS_MASK, указывающее требуемый тип доступа к заданному объекту файла.
[in] DesiredShareAccess
Указывает требуемый тип общего доступа к объекту файла для текущего открытого запроса. Значение этого параметра обычно совпадает с параметром ShareAccess, передаваемым в файловую систему или драйвером высокого уровня диспетчером операций ввода-вывода при выполнении открытого запроса. Это значение может быть равно нулю или любому сочетанию следующих значений:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out, optional] FileObject
Указатель на объект файла, для которого требуется проверить доступ к текущему открытому запросу.
[in, out, optional] ShareAccess
Указатель на общую структуру данных общего доступа, связанную с FileObject. Драйверы должны рассматривать эту структуру как непрозрачную.
[in, out, optional] LinkShareAccess
Указатель на общую структуру данных общего доступа (LINK_SHARE_ACCESS), связанную с FileObject. Драйверы должны рассматривать эту структуру как непрозрачную.
[in] IoShareAccessFlags
Битовая маска этих флагов:
IO_SHARE_ACCESS_NO_WRITE_PERMISSION (0x80000000) указывает, что у пользователя нет разрешения на запись для файла. Этот флаг используется для предотвращения открытия файла для эксклюзивного доступа на чтение, если у пользователя нет соответствующих разрешений.
IO_SHARE_ACCESS_NON_PRIMARY_STREAM (0x00000080) указывает, что поток не является основным потоком данных или потоком каталогов.
IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS (0x00000001) указывает, обновляется ли структура SHARE_ACCESS.
IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT (0x00000002) указывает, что не обновлять структуру FILE_OBJECT.
IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ (0x00000004) указывает, что не проверять доступ к общей папке чтения.
IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE (0x00000008) указывает, что не проверять доступ к общей папке записи.
IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE (0x00000010) указывает, что не проверять доступ к общей папке.
IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) указывает принудительно проверять доступ к общей папке, даже если запрос не является доступом для чтения и записи и удаления.
IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) указывает принудительно проверить доступ к общей папке с помощью ShareAccess независимо от того, присутствует ли LinkShareAccess.
Возвращаемое значение
Подпрограмма IoCheckLinkShareAccess возвращает STATUS_SUCCESS, если доступ запрашивающего к объекту файла совместим с тем, как он открыт в данный момент. Если запрос отклоняется из-за нарушения общего доступа, возвращается STATUS_SHARING_VIOLATION.
Замечания
Параметр ShareAccess должен быть заблокирован для других доступа из других потоков во время выполнения этой подпрограммы. В противном случае счетчики могут быть синхронизированы.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 10 версии 1709 |
минимальный поддерживаемый сервер | Windows Server 2016 |
целевая платформа | Всеобщий |
заголовка | wdm.h |
библиотеки | Ntoskrnl.lib |