Função WdfFdoRetrieveNextStaticChild (wdffdo.h)
[Aplica-se somente ao KMDF]
O método WdfFdoRetrieveNextStaticChild recupera um identificador para o próximo objeto de dispositivo da 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 tipo WDF_RETRIEVE_CHILD_FLAGSque identifica o tipo de dispositivo filho que o método deve recuperar. Esse parâmetro não pode ser zero.
Valor de retorno
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.
Uma verificação de bugs do sistema ocorre se o driver fornece um identificador de objeto inválido.
Observações
Os motoristas de ônibus que usam enumeração de ônibus estático podem chamar WdfFdoRetrieveNextStaticChild .
Para recuperar os itens em uma lista de dispositivos filho, o driver deve:
- Chame WdfFdoLockStaticChildListForIteration para bloquear a lista filho.
- Chame repetidamente WdfFdoRetrieveNextStaticChild para obter os itens na lista, um de cada vez, até que o método retorne NULL.
- Chame WdfFdoUnlockStaticChildListFromIteration para desbloquear a lista filho.
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 obter outros exemplos de usos de WdfFdoRetrieveNextStaticChild, consulte o Toaster driver de ônibus de exemplo.
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 |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.0 |
cabeçalho | wdffdo.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte o Controle de Versão da Biblioteca da Estrutura.) |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf) |