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


Функция IoSetShareAccess (wdm.h)

Подпрограмма IoSetShareAccess задает права доступа для общего доступа к заданному объекту файла.

Синтаксис

void IoSetShareAccess(
  [in]      ACCESS_MASK   DesiredAccess,
  [in]      ULONG         DesiredShareAccess,
  [in, out] PFILE_OBJECT  FileObject,
  [out]     PSHARE_ACCESS ShareAccess
);

Параметры

[in] DesiredAccess

Указывает значение ACCESS_MASK, представляющее тип доступа, запрошенный для FileObject. Полный список системных флагов DesiredAccess см. в IoCreateFile.

[in] DesiredShareAccess

Указывает тип доступа к общей папке для объекта файла. Это значение может быть равно нулю или любому сочетанию следующих значений:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out] FileObject

Указатель на объект файла, общий доступ к которому устанавливается или сбрасывается.

[out] ShareAccess

Указатель на структуру SHARE_ACCESS, связанную с FileObject. Драйверы должны рассматривать эту структуру как непрозрачную.

Возвращаемое значение

Никакой

Замечания

Только драйверы в режиме ядра высокого уровня должны вызывать эту подпрограмму. Вызов должен выполняться в контексте первого потока, который пытается открыть FileObject.

Эта подпрограмма задает сведения о доступе и совместном доступе при первом открытии FileObj ect. Он возвращает указатель на общую структуру данных общего доступа, связанную с FileObject. Вызывающие серверы должны сохранить этот указатель для последующего использования при обновлении доступа или закрытии файла.

Как правило, драйверы файловой системы (FSD) чаще всего вызывают эту подпрограмму. Однако другие драйверы высокого уровня могут вызывать IoSetShareAccess для управления типом доступа, разрешенным для объекта устройства, созданного драйвером, связанного с заданным FileObject.

IoSetShareAccess не является атомарной операцией. Таким образом, драйверы, вызывающие эту подпрограмму, должны защитить общий файловый объект, переданный в IoSetShareAccess с помощью какой-то блокировки, например мьютекса или блокировки ресурсов, чтобы предотвратить повреждение счетчиков общего доступа.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm)

См. также

ACCESS_MASK

IoCheckShareAccess

IoCreateFile

IoCreateFileEx

IoGetFileObjectGenericMapping

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoUpdateShareAccess