Função WdfFdoRetrieveNextStaticChild (wdffdo.h)

[Aplica-se somente ao KMDF]

O método WdfFdoRetrieveNextStaticChild recupera um identificador para o próximo objeto de dispositivo de estrutura em uma lista de dispositivos filho.

Sintaxe

WDFDEVICE WdfFdoRetrieveNextStaticChild(
  [in]           WDFDEVICE Fdo,
  [in, optional] WDFDEVICE PreviousChild,
  [in]           ULONG     Flags
);

Parâmetros

[in] Fdo

Um identificador para um objeto de dispositivo de estrutura que representa o dispositivo pai.

[in, optional] PreviousChild

Um identificador para um objeto de dispositivo de estrutura que representa o dispositivo filho que foi retornado por uma chamada anterior para WdfFdoRetrieveNextStaticChild. Para a primeira chamada para WdfFdoRetrieveNextStaticChild, esse valor deve ser NULL.

[in] Flags

Um valor de enumerador de tipo WDF_RETRIEVE_CHILD_FLAGS que identifica o tipo de dispositivos filho que o método deve recuperar. Esse parâmetro não pode ser zero.

Retornar valor

Se a operação for bem-sucedida, o método retornará um identificador para um objeto de dispositivo de estrutura. Caso contrário, retornará NULL.

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

Comentários

Os motoristas de ônibus que usam a enumeração de barramento estático podem chamar WdfFdoRetrieveNextStaticChild.

Para recuperar os itens em uma lista de dispositivos filho, o driver deve:

  1. Chame WdfFdoLockStaticChildListForIteration para bloquear a lista filho.
  2. Chame repetidamente WdfFdoRetrieveNextStaticChild para obter os itens na lista, um de cada vez, até que o método retorne NULL.
  3. Chame WdfFdoUnlockStaticChildListFromIteration para desbloquear a lista filho.
Para obter mais informações sobre listas filho estáticas, consulte Enumerando os dispositivos em um barramento.

Exemplos

O exemplo de código a seguir pesquisa uma lista filho estática até encontrar um dispositivo filho com um número de série que corresponda a um valor específico. Para outros exemplos de usos de WdfFdoRetrieveNextStaticChild, consulte o driver de barramento de exemplo da Torradeira .

PPDO_DEVICE_DATA  pdoData;
WDFDEVICE  hChild;
NTSTATUS  status = STATUS_INVALID_PARAMETER;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device,
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context data and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
        break;
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdffdo.h (include Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Confira também

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration