NdisAllocateIoWorkItem 関数 (ndis.h)

NDIS ドライバーは、作業項目を割り当てるために NdisAllocateIoWorkItem 関数を呼び出します。 詳細については、「 NDIS I/O 作業項目」を参照してください。

構文

NDIS_HANDLE NdisAllocateIoWorkItem(
  [in] NDIS_HANDLE NdisObjectHandle
);

パラメーター

[in] NdisObjectHandle

デバイス オブジェクトまたはドライバー オブジェクトに関連付けられている NDIS オブジェクトのハンドル。

戻り値

NdisAllocateIoWorkItem が作業項目を正常に割り当てた場合、作業項目へのハンドルが返されます。 失敗した場合、 NdisAllocateIoWorkItem はNULL を返します。

注釈

NDIS ミニポート ドライバーは、2 つのハンドルのいずれか NdisAllocateIoWorkItem を 渡す: ミニポート ドライバー が呼び出されたときに NDIS が返すミニポート ドライバー ハンドルまたは NDIS がミニポート ドライバーのハンドルに渡したアダプター ハンドル NdisMRegisterMiniportDriver

NDIS フィルター ドライバーは、NdisFRegisterFilterDriver というフィルター ドライバーが返したときに NDIS が返したフィルター ドライバー ハンドルを NdisAllocateIoWorkItem に渡すことができます。

NDIS ミニポート ドライバーとフィルター ドライバーは、NdisRegisterDeviceEx ドライバーが呼び出されたときに NDIS が返した NDIS デバイス ハンドル NdisAllocateIoWorkItem を渡すこともできます。 NdisAllocateIoWorkItem は、ハンドルに関連付けられているデバイス オブジェクトまたはドライバー オブジェクトを取得し、デバイス オブジェクトまたはドライバー オブジェクトを IoAllocateWorkItem 関数に渡します。

メモ NDIS は、デバイス オブジェクトまたはドライバー オブジェクトにプロトコル ドライバーを関連付けないため、プロトコル ドライバーは NdisAllocateIoWorkItem を使用できません。
 
NDIS ドライバーは、作業項目のキューに NdisQueueIoWorkItem 関数を呼び出します。 ドライバーが NdisQueueIoWorkItem を呼び出した後、NDIS は IRQL = PASSIVE_LEVELでドライバー指定のコールバック関数を呼び出します。 これにより、現在の関数をすぐに終了し、ドライバーが後で低い IRQL で作業できるようにすることで、システムのパフォーマンスを向上させることができます。

NDIS ドライバーは、 NdisFreeIoWorkItem 関数を呼び出して、 NdisAllocateIoWorkItem が割り当てた作業項目に関連付けられているリソースを解放する必要があります。

ドライバーは、 NdisQueueIoWorkItem に渡されるコールバック ルーチンで NdisFreeIoWorkItem を呼び出すことができます。

ミニポート ドライバーが NdisAllocateIoWorkItem を呼び出したときに NDIS が MiniportInitializeEx に渡したハンドルを使用している場合は、ドライバーの MiniportHaltEx 関数の呼び出しの前または呼び出しで作業項目を解放する必要があります。

ドライバーが NdisAllocateIoWorkItem を呼び出したときに NdisMRegisterMiniportDriver が返したハンドルをミニポート ドライバーが使用した場合、ドライバーはドライバーのアンロード前に作業項目を解放する必要があります。

一般に、ドライバーは、ドライバーがアンロードする前に作業項目を解放する必要があります。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Init_NdisAllocateIoWorkItem(ndis)Irql_Miscellaneous_Function(ndis)

こちらもご覧ください

IoAllocateWorkItem

MiniportHaltEx

MiniportInitializeEx

NDIS I/O 作業項目

NdisFRegisterFilterDriver

NdisFreeIoWorkItem

NdisMRegisterMiniportDriver

NdisQueueIoWorkItem

NdisRegisterDeviceEx