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

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

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out, optional] FileObject

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

[in, out, optional] ShareAccess

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

[in, out, optional] LinkShareAccess

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

[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) は、LinkShareAccess が存在するかどうかに関係なく、ShareAccess を使用チェック共有アクセスを強制的に削除することを示します。

戻り値

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

注釈

ShareAccess パラメーターは、このルーチンの実行中に他のスレッドからの他のアクセスに対してロックする必要があります。 それ以外の場合は、カウントを同期できます。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 1709
サポートされている最小のサーバー Windows Server 2016
対象プラットフォーム ユニバーサル
Header wdm.h
Library Ntoskrnl.lib

こちらもご覧ください

I/O マネージャー ルーチン

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess