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


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