WdfDpcCreate 関数 (wdfdpc.h)
[KMDF にのみ適用]
WdfDpcCreate メソッドは、フレームワーク DPC オブジェクトを作成し、EvtDpcFunc コールバック関数を登録します。
構文
NTSTATUS WdfDpcCreate(
[in] PWDF_DPC_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFDPC *Dpc
);
パラメーター
[in] Config
呼び出し元によって割り当てられた WDF_DPC_CONFIG 構造体へのポインター。
[in] Attributes
新しい DPC オブジェクトの属性を指定する呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。
[out] Dpc
新しいフレームワーク DPC オブジェクトへのハンドルを受け取る場所へのポインター。
戻り値
操作が成功した場合、WdfDpcCreate はSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
無効なパラメーターが指定されました。 |
|
DPC オブジェクトを割り当てませんでした。 |
|
親オブジェクトが WDF_OBJECT_ATTRIBUTES 構造体で指定されていません。 |
|
WDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーは、フレームワーク デバイス オブジェクトまたは親のチェーンがフレームワーク デバイス オブジェクトにつながるオブジェクトを参照しません。 |
|
WDF_DPC_CONFIG構造体の AutomaticSerialization メンバーは TRUE に設定されていますが、親オブジェクトの実行レベルは WdfExecutionLevelPassive に設定されます。 |
WdfDpcCreate メソッドが返す可能性があるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。
このメソッドは、他の NTSTATUS 値を返す場合もあります。
注釈
ドライバーは通常、その EvtDriverDeviceAdd コールバック関数内から WdfDpcCreate を呼び出します。
ドライバーは、DPC オブジェクトを作成するときに、WDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーに親オブジェクトを指定する必要があります。 親オブジェクトには、フレームワーク デバイス オブジェクト、または親のチェーンがフレームワーク デバイス オブジェクトにつながる任意のオブジェクトを指定できます。 フレームワークは、デバイス オブジェクトを削除するときに DPC オブジェクトを削除します。
WdfDpcCreate を呼び出すと、フレームワーク DPC オブジェクトが作成され、EvtDpcFunc コールバック関数が登録されます。 コールバック関数の実行をスケジュールするには、ドライバーで WdfDpcEnqueue を呼び出す必要があります。
ドライバーがフレームワーク タイマー オブジェクト の EvtCleanupCallback または EvtDestroyCallback コールバック関数を提供する場合、フレームワークは IRQL = PASSIVE_LEVEL でこれらのコールバック関数を呼び出します。
DPC オブジェクトの使用の詳細については、「 割り込みのサービス」を参照してください。
例
次のコード例では、 WDF_DPC_CONFIG_INIT 構造体を初期化し、DPC オブジェクトを作成します。
WDF_DPC_CONFIG dpcConfig;
WDF_OBJECT_ATTRIBUTES dpcAttributes;
NTSTATUS status;
WDF_DPC_CONFIG_INIT(
&dpcConfig,
MyEvtDpcFunc
);
dpcConfig.AutomaticSerialization = TRUE;
WDF_OBJECT_ATTRIBUTES_INIT(&dpcAttributes);
dpcAttributes.ParentObject = pDevExt->WdfDevice;
status = WdfDpcCreate(
&dpcConfig,
&dpcAttributes,
&pDevExt->CompleteWriteDpc
);
if (!NT_SUCCESS(status)) {
return status;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdfdpc.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <=DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |