Compartilhar via


Função WdfPdoRequestEject (wdfpdo.h)

[Aplica-se somente ao KMDF]

O método WdfPdoRequestEject informa à estrutura que um dispositivo especificado está prestes a ser ejetado de sua estação de encaixe.

Sintaxe

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

Parâmetros

[in] Device

Um identificador para um objeto de dispositivo de estrutura que representa o PDO (objeto de dispositivo físico) do dispositivo.

Retornar valor

Nenhum

Comentários

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

Um motorista de ônibus pode chamar WdfPdoRequestEject ou WdfChildListRequestChildEject para relatar que o driver detectou uma tentativa de ejetar um de seus dispositivos filho enumerados da estação de encaixe do dispositivo. Por exemplo, o driver pode detectar que um usuário efetuou push de um botão ejetar.

Se o objeto de dispositivo de estrutura do PDO do dispositivo estiver disponível, o driver poderá chamar WdfPdoRequestEject. Se o driver estiver usando a enumeração de barramento dinâmico e se a descrição de identificação do dispositivo estiver disponível, o driver poderá chamar WdfChildListRequestChildEject.

Para obter mais informações sobre WdfPdoRequestEject e WdfChildListRequestChildEject, consulte Suporte a dispositivos ejetáveis.

Exemplos

O exemplo de código a seguir pesquisa uma lista de dispositivos filho para localizar um que corresponda a um número de série especificado. Quando o exemplo localiza o filho correto, ele chama WdfPdoRequestEject para indicar que o filho está sendo ejetado. Este exemplo foi obtido do driver de ônibus de exemplo da Torradeira e simplificado.

WDFDEVICE  hChild = NULL;
NTSTATUS  status = STATUS_INVALID_PARAMETER;
PPDO_DEVICE_DATA  pdoData;

WdfFdoLockStaticChildListForIteration(Device);

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

Requisitos

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

Confira também

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration