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 |
Header | wdfcollection.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |