次の方法で共有


IoCsqInitializeEx 関数 (wdm.h)

IoCsqInitializeEx ルーチンは、キャンセル セーフ IRP キューのディスパッチ テーブルを初期化します。

構文

NTSTATUS IoCsqInitializeEx(
  [out] PIO_CSQ                       Csq,
  [in]  PIO_CSQ_INSERT_IRP_EX         CsqInsertIrp,
  [in]  PIO_CSQ_REMOVE_IRP            CsqRemoveIrp,
  [in]  PIO_CSQ_PEEK_NEXT_IRP         CsqPeekNextIrp,
  [in]  PIO_CSQ_ACQUIRE_LOCK          CsqAcquireLock,
  [in]  PIO_CSQ_RELEASE_LOCK          CsqReleaseLock,
  [in]  PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);

パラメーター

[out] Csq

IoCsqInitializeEx によって初期化されるIO_CSQ構造体へのポインター。

[in] CsqInsertIrp

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqInsertIrpEx 関数へのポインター。

[in] CsqRemoveIrp

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqRemoveIrp 関数へのポインター。

[in] CsqPeekNextIrp

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqPeekNextIrp 関数へのポインター。

[in] CsqAcquireLock

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqAcquireLock 関数へのポインター。

[in] CsqReleaseLock

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqReleaseLock 関数へのポインター。

[in] CsqCompleteCanceledIrp

ドライバーのキャンセル セーフ IRP キューのドライバー定義 CsqCompleteCanceledIrp 関数へのポインター。

戻り値

IoCsqInitializeEx は 、成功した場合はSTATUS_SUCCESS、失敗した場合は適切なエラー コードを返します。

注釈

IoCsqInitialize および IoCsqInitializeEx ルーチンは、ドライバーのキャンセル セーフ IRP キューを記述するIO_CSQ構造体を初期化します。 IoCsqInitializeEx を使用して、IoCsqInitialize で指定された IRP キューではなく、拡張機能を備えた IRP キューを指定できます。

  • ドライバーは、 CsqInsertIrp ルーチンではなく CsqInsertIrpEx ルーチンを 実装します。 CsqInsertIrpEx は 、追加のパラメーター InsertContext を受け取ります。 ドライバーが IoCsqInsertIrpEx を呼び出して IRP を挿入すると、 InsertContext として渡される値を指定します。
  • IoCsqInsertIrpEx はCsqInsertIrpEx の戻り値を返します。 ドライバーは、戻り値を使用して、挿入操作が成功したか失敗したかを示すことができます。
それ以外の場合、 IoCsqInitializeEx の効果は IoCsqInitialize の効果と同じです。 詳細については、「 Cancel-Safe IRP Queues」を参照してください。

IoCsqXxx ルーチンでは、IRP の DriverContext[3] メンバーを使用して IRP コンテキスト情報を保持します。 これらのルーチンを使用して IRP をキューに入れるドライバーは、そのメンバーを使用しないようにする必要があります。

要件

要件
サポートされている最小のクライアント Windows Server 2003 以降のバージョンの Windows オペレーティング システムで使用できます。 このルーチンは、Windows Driver Kit (WDK) と Windows Server 2003 用ドライバー開発キット (DDK) に付属する Csq.lib ライブラリでも使用できます。 Windows XP、Windows 2000、Windows 98/Me でも動作する必要があるドライバーは、代わりに Csq.lib にリンクしてルーチンを使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル

こちらもご覧ください

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp