次の方法で共有


WdfCollectionAdd 関数 (wdfcollection.h)

[KMDF と UMDF に適用]

WdfCollectionAdd メソッドは、指定したフレームワーク オブジェクトをオブジェクト コレクションに追加します。

構文

NTSTATUS WdfCollectionAdd(
  [in] WDFCOLLECTION Collection,
  [in] WDFOBJECT     Object
);

パラメーター

[in] Collection

コレクション オブジェクトへのハンドル。

[in] Object

コレクションに追加されるフレームワーク オブジェクトへのハンドル。

戻り値

WdfCollectionAdd 、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 形容
STATUS_UNSUCCESSFUL
指定したオブジェクトを指定したコレクションに追加できませんでした。
 

このメソッドは、他の 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)

関連項目

WdfCollectionCreate

WdfCollectionRemove

WdfCollectionRemoveItem