WdfCollectionAdd 関数 (wdfcollection.h)
[KMDF と UMDF に適用]
WdfCollectionAdd メソッドは、指定したフレームワーク オブジェクトをオブジェクト コレクションに追加します。
構文
NTSTATUS WdfCollectionAdd(
[in] WDFCOLLECTION Collection,
[in] WDFOBJECT Object
);
パラメーター
[in] Collection
コレクション オブジェクトへのハンドル。
[in] Object
コレクションに追加されるフレームワーク オブジェクトへのハンドル。
戻り値
WdfCollectionAdd 、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。
リターン コード | 形容 |
---|---|
|
指定したオブジェクトを指定したコレクションに追加できませんでした。 |
このメソッドは、他の NTSTATUS 値返す場合もあります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
備考
WdfCollectionAdd メソッドは、指定したオブジェクトを、コレクションに含まれる一連のオブジェクトの末尾に追加します。 WdfCollectionAdd オブジェクトをコレクションに追加すると、オブジェクトの参照カウントがインクリメントされます。 ドライバーは、WdfCollectionRemove 呼び出すか、WdfCollectionRemoveItem を してオブジェクトを削除し、その参照カウントを減らすことができます。
オブジェクト コレクションの詳細については、「Framework オブジェクト コレクションの」を参照してください。
例
次のコード例では、コレクション オブジェクトを作成し、ドライバーによって作成された要求オブジェクトのセットをコレクションに追加します。
WDF_OBJECT_ATTRIBUTES attributes;
NTSTATUS status;
WDFCOLLECTION hCollection = NULL;
WDFREQUEST subRequest = NULL;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Request;
status = WdfCollectionCreate(
&attributes,
&hCollection
);
if (!NT_SUCCESS(status)) {
goto Exit;
}
for (i = 0; i < numSubRequests; i++) {
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE(
&attributes,
SUB_REQUEST_CONTEXT
);
status = WdfRequestCreate(
&attributes,
WdfUsbTargetDeviceGetIoTarget(deviceContext->WdfUsbTargetDevice),
&subRequest
);
if (!NT_SUCCESS(status)) {
goto Exit;
}
status = WdfCollectionAdd(
hCollection,
subRequest
);
if (!NT_SUCCESS(status)) {
WdfObjectDelete(subRequest);
goto Exit;
}
}
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
最小 KMDF バージョン | 1.0 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfcollection.h (Wdf.h を含む) |
ライブラリ | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
関連項目
WdfCollectionRemoveItem の