Função WdfChildListRetrievePdo (wdfchildlist.h)
[Aplica-se somente ao KMDF]
O método WdfChildListRetrievePdo retorna um identificador para o objeto de dispositivo de estrutura associado a uma descrição filho especificada em uma lista filho.
Sintaxe
WDFDEVICE WdfChildListRetrievePdo(
[in] WDFCHILDLIST ChildList,
[in, out] PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
);
Parâmetros
[in] ChildList
Um identificador para um objeto de lista filho.
[in, out] RetrieveInfo
Um ponteiro para uma estrutura de WDF_CHILD_RETRIEVE_INFO alocada por driver que o driver inicializa com a descrição de identificação do filho a ser recuperado.
Retornar valor
WdfChildListRetrievePdo retornará um identificador para o objeto de dispositivo da estrutura se o dispositivo filho especificado estiver localizado na lista filho, se houver um objeto de dispositivo de estrutura para o dispositivo filho e se a estrutura tiver relatado a existência do dispositivo ao gerenciador PnP. Caso contrário, o método retornará NULL. A estrutura retorna informações adicionais de status no membro Status da estrutura WDF_CHILD_RETRIEVE_INFO.
Um bug do sistema marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Antes de chamar WdfChildListRetrievePdo, o driver deve colocar uma descrição de identificação em uma estrutura WDF_CHILD_RETRIEVE_INFO .
O método WdfChildListRetrievePdo percorre a lista filho especificada, procurando um filho com uma descrição de identificação que corresponda à que o driver forneceu na estrutura WDF_CHILD_RETRIEVE_INFO. Se a estrutura encontrar uma correspondência e se o filho tiver uma descrição de endereço, a estrutura preencherá a descrição do endereço da estrutura.
Lembre-se de encapsular essa chamada com WdfChildListBeginIteration e WdfChildListEndIteration para proteger o chamador contra a remoção repentina de PnP do PDO em outro thread.
Para obter mais informações sobre listas filho, consulte Enumeração dinâmica.
Exemplos
O exemplo de código a seguir pesquisa uma lista filho para localizar um dispositivo filho cuja descrição de identificação contém um número de série especificado e obtém um identificador para o objeto de dispositivo que representa o dispositivo filho.
WDF_CHILD_LIST_ITERATOR iterator;
PDO_IDENTIFICATION_DESCRIPTION description;
WDF_CHILD_RETRIEVE_INFO info;
WDFDEVICE hChild;
WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT(
&description.Header,
sizeof(description)
);
description.SerialNo = DeviceSerialNumber;
WDF_CHILD_RETRIEVE_INFO_INIT(
&info,
&description.Header
);
WDF_CHILD_LIST_ITERATOR_INIT(&iterator, WdfRetrieveAllChildren);
WdfChildListBeginIteration(childList, &iterator);
hChild = WdfChildListRetrievePdo(
childList,
&info
);
... access hChild ...
WdfChildListEndIteration(childList, &iterator);
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfchildlist.h (inclua 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) |