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