EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY コールバック関数 (wdfchildlist.h)
[KMDF にのみ適用]
ドライバーの EvtChildListIdentificationDescriptionCopy イベント コールバック関数は、指定した場所から別の場所に子 ID の説明をコピーします。
構文
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY EvtWdfChildListIdentificationDescriptionCopy;
void EvtWdfChildListIdentificationDescriptionCopy(
[in] WDFCHILDLIST ChildList,
[in] PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SourceIdentificationDescription,
[out] PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER DestinationIdentificationDescription
)
{...}
パラメーター
[in] ChildList
フレームワークの子リスト オブジェクトへのハンドル。
[in] SourceIdentificationDescription
子識別の 説明のソース の場所を識別するWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER構造体へのポインター。
[out] DestinationIdentificationDescription
子識別記述の宛先の場所を識別する WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER 構造体へのポインター。
戻り値
なし
解説
バス ドライバーが動的列挙を使用している場合は、WdfFdoInitSetDefaultChildListConfig または WdfChildListCreate を呼び出すことによって、EvtChildListIdentificationDescriptionCopy コールバック関数を登録できます。
フレームワークは、既存の説明を新しい情報で更新する必要がある場合、または識別説明の内容をドライバーに渡す必要がある場合に、ドライバーが指定した識別の説明から別の識別説明に情報をコピーします。
EvtChildListIdentificationDescriptionCopy コールバック関数は、ソースの説明の内容をコピー先の説明にコピーする必要があります。 フレームワークが RtlCopyMemory を呼び出して識別の説明をコピーできない場合、ドライバーはこのコールバック関数を指定する必要があります。 (説明に追加のメモリへのポインターが含まれている場合、フレームワークは RtlCopyMemory を呼び出すことができません)。
ドライバーが EvtChildListIdentificationDescriptionCopy コールバック関数を提供しない場合、フレームワークは RtlCopyMemory を呼び出して識別の説明をコピーします。
次の手順では、考えられるシナリオについて説明します。
- 子リストを走査しているドライバーは 、WdfChildListRetrieveNextDevice を呼び出します。 ドライバーは、子デバイスの識別の説明を受け取ることができるように、 WDF_CHILD_RETRIEVE_INFO 構造体を提供します。
- フレームワークは 、EvtChildListIdentificationDescriptionCopy コールバック関数 (存在する場合) または RtlCopyMemory を呼び出して、デバイスの識別の説明をコピーします。 コピー操作のソースは、フレームワークの説明の内部コピーです。 宛先は、ドライバーが割り当て、そのWDF_CHILD_RETRIEVE_INFO構造体で識別したメモリです。
- コールバック関数の SourceIdentificationDescription 構造体と DestinationIdentificationDescription 構造体で、動的に割り当てられたメモリへのポインターを見つけます。
- ポインターを使用して、動的に割り当てられたメモリをソースから宛先にコピーします。
- コールバック関数の SourceIdentificationDescription 構造体からコールバック関数の DestinationIdentificationDescription 構造体に他の構造体メンバーをコピーします。
フレームワークは、 EvtChildListIdentificationDescriptionCopy コールバック関数を呼び出す前に、内部の子リスト オブジェクト ロックを取得します。 コールバック関数は、フレームワーク メモリ オブジェクト メソッドの呼び出しやオブジェクト コンテキスト空間へのアクセスなど、コピー操作に関連する操作のみを実行する必要があります。 他のドライバーにアクセスするメソッドを呼び出してはなりません。
ドライバーが EvtChildListIdentificationDescriptionCopy コールバック関数を提供している場合は、 EvtChildListIdentificationDescriptionDuplicate、 EvtChildListIdentificationDescriptionCompare、 EvtChildListIdentificationDescriptionCleanup コールバック関数も必要になる場合があります。
動的列挙の詳細については、「 バス上のデバイスの列挙」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdfchildlist.h (Wdf.h を含む) |
IRQL | <= DISPATCH_LEVEL |
こちらもご覧ください
EvtChildListIdentificationDescriptionCleanup
EvtChildListIdentificationDescriptionCompare
EvtChildListIdentificationDescriptionDuplicate