次の方法で共有


IoInitializeWorkItem 関数 (wdm.h)

IoInitializeWorkItem ルーチンは、呼び出し元が既に割り当てた作業項目を初期化します。

構文

void IoInitializeWorkItem(
  [in] PVOID        IoObject,
  [in] PIO_WORKITEM IoWorkItem
);

パラメーター

[in] IoObject

呼び出し元のドライバー オブジェクトまたは呼び出し元のいずれかのデバイス オブジェクトへのポインター。 呼び出し元が後で作業項目を IoQueueWorkItem渡す場合は、IoObject がデバイス オブジェクトを指 必要があります。

[in] IoWorkItem

初期化する IO_WORKITEM 構造体へのポインター。

戻り値

何一つ

備考

ドライバーは、IO_WORKITEM 構造体に独自の記憶域を割り当ててから、IoInitializeWorkItem 呼び出して初期化します。 メモリは、非ページ プールから割り当てる必要があります。 IO_WORKITEM 構造体を保持するために必要なバイト数を確認するには、IoSizeofWorkItem呼び出します。

IoInitializeWorkItemによって初期化される IO_WORKITEM 構造体は、解放前に IoUninitializeWorkItem によって初期化解除 必要があります。

IoAllocateWorkItem関連ルーチンは、作業項目の割り当てと初期化の両方を行います。 割り当てと初期化を 1 回の呼び出しに組み合わせることで、IoAllocateWorkItem は、初期化のみを行う IoInitializeWorkItemよりも、一部のドライバーで使用する方が便利な場合があります。 ただし、IoInitializeWorkItem は、以前に割り当てられたストレージ内の作業項目を初期化する必要があるドライバーによって必要です。

たとえば、ドライバーは、作業項目のプールの記憶域のブロックを割り当てることができます。 ドライバーは、IoInitializeWorkItem 呼び出して、作業項目がプールから割り当てられるときに作業項目を初期化できます。 ドライバーは、IoUninitializeWorkItem を呼び出して、プールに返されたときに作業項目を初期化解除できます。 プールの初期記憶域の割り当て中に、ドライバーは IoSizeofWorkitem 呼び出して、作業項目ごとに割り当てる記憶域の量を決定できます。

作業項目の詳細については、「システム ワーカー スレッドの」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム の 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル

関連項目

IO_WORKITEM

IoAllocateWorkItem の

IoQueueWorkItem の

IoQueueWorkItemEx の

IoSizeofWorkItem の

IoUninitializeWorkItem の