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


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

См. также

подпрограммы диспетчера ввода-вывода

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess