次の方法で共有


IoCheckShareAccess 関数 (wdm.h)

IoCheckShareAccess ルーチンは、ファイル システム ドライバー (FSD) またはその他の最上位レベルのドライバーによって呼び出され、ファイル オブジェクトへの共有アクセスが許可されているかどうかを確認します。

構文

NTSTATUS IoCheckShareAccess(
  [in]      ACCESS_MASK   DesiredAccess,
  [in]      ULONG         DesiredShareAccess,
  [in, out] PFILE_OBJECT  FileObject,
  [in, out] PSHARE_ACCESS ShareAccess,
  [in]      BOOLEAN       Update
);

パラメーター

[in] DesiredAccess

現在開いている要求に対する指定された FileObject へのアクセスの目的の種類を示す ACCESS_MASK 値を指定します。 ドライバーは、IRP_MJ_CREATE 要求で要求されたアクセス権を取得し、各セキュリティ記述子 SeAccessCheck を適用して、付与された実際のアクセスを決定することで、このパラメーターの値を計算します。 許可されたアクセスが目的のアクセスよりも制限が厳しい場合、それはエラーであり、ドライバーは現在の IRP を完了し、状態が STATUS_ACCESS_DENIED。 (SeAccessCheck では、付与されたアクセスのMAXIMUM_ALLOWED ビットがクリアされることに注意してください。必要なアクセスを許可されたアクセスと比較するときは、そのビットを使用しないでください)。その後、ドライバーは、許可されたアクセス権 DesiredAccessの値として渡します。

[in] DesiredShareAccess

現在開いている要求 FileObject への共有アクセスの目的の種類を指定します。 このパラメーターの値は、通常、開いている要求が行われたときに I/O マネージャーによってファイル システムまたは最上位レベルのドライバーに渡 ShareAccess と同じです。 この値には、0 または次の任意の組み合わせを指定できます。

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out] FileObject

現在開いている要求のアクセスを確認する対象のファイル オブジェクトへのポインター。

[in, out] ShareAccess

FileObjectに関連付けられている共通の共有アクセス データ構造へのポインター。 ドライバーは、この構造体を不透明として扱う必要があります。

[in] Update

FileObjectの共有アクセス状態を更新するかどうかを指定します。 ブール値 TRUE は、開いている要求が許可されている場合、このルーチンによってファイル オブジェクトの共有アクセス情報が更新されることを意味します。

戻り値

IoCheckShareAccess は、要求元のファイル オブジェクトへのアクセスが現在開いている方法と互換性がある場合に、STATUS_SUCCESSを返します。 共有違反が原因で要求が拒否された場合は、STATUS_SHARING_VIOLATIONが返されます。

備考

IoCheckShareAccess は、ファイル オブジェクトを開く要求をチェックして、指定された目的のアクセスと共有アクセスの種類が、ファイル オブジェクトが他のオープンによって現在アクセスされている方法と互換性があるかどうかを判断します。

ファイル・システムは、ファイル制御ブロック (FCB) と呼ばれる構造を介してファイルに関する状態を維持します。 SHARE_ACCESSは、ファイルが現在、すべての開きによってアクセスされる方法を説明する構造です。 この状態は、各ファイル オブジェクトのオープン状態の一部として FCB に含まれます。 各ファイル オブジェクトには、共有アクセス構造が 1 つだけ必要です。 他の最上位レベルのドライバーは、このルーチンを呼び出して、このようなドライバーのデバイス オブジェクトを表すファイル オブジェクトが開かれたときに要求されたアクセスを確認する場合があります。

IoCheckShareAccess はアトミック操作ではありません。 したがって、このルーチンを呼び出すドライバーは、共有アクセス数の破損を防ぐために、ミューテックスやリソース ロックなどの何らかの種類のロックによって、IoCheckShareAccess に渡される共有ファイル オブジェクトを保護する必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm)

関連項目

ACCESS_MASK

IoCreateFile

IoCreateFileEx

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoSetShareAccess

IoUpdateShareAccess