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:
- 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 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) |