Função WdfCollectionAdd (wdfcollection.h)

[Aplica-se a KMDF e UMDF]

O método WdfCollectionAdd adiciona um objeto de estrutura especificado a uma coleção de objetos.

Sintaxe

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

Parâmetros

[in] Collection

Um identificador para um objeto de coleção.

[in] Object

Um identificador para o objeto de estrutura que será adicionado à coleção.

Retornar valor

WdfCollectionAdd retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_UNSUCCESSFUL
Não foi possível adicionar o objeto especificado à coleção especificada.
 

Esse método também pode retornar outros valores NTSTATUS.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

O método WdfCollectionAdd acrescenta o objeto especificado ao final do conjunto de objetos que a coleção contém. Quando WdfCollectionAdd adiciona um objeto a uma coleção, ele incrementa a contagem de referência do objeto. Seu driver pode chamar WdfCollectionRemove ou WdfCollectionRemoveItem para remover o objeto e diminuir sua contagem de referência.

Para obter mais informações sobre coleções de objetos, consulte Coleções de objetos framework.

Exemplos

O exemplo de código a seguir cria um objeto de coleção e adiciona um conjunto de objetos de solicitação criados pelo driver à coleção.

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;
    }
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfcollection.h (include Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WdfCollectionCreate

WdfCollectionRemove

WdfCollectionRemoveItem