Función WdfPdoRequestEject (wdfpdo.h)

[Solo se aplica a KMDF]

El método WdfPdoRequestEject informa al marco de trabajo que un dispositivo especificado está a punto de expulsarse de su estación de acoplamiento.

Sintaxis

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco que representa el objeto de dispositivo físico (PDO) del dispositivo.

Valor devuelto

None

Observaciones

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Un controlador de autobús puede llamar a WdfPdoRequestEject o WdfChildListRequestChildEject para informar de que el controlador ha detectado un intento de expulsar uno de sus dispositivos secundarios enumerados de la estación de acoplamiento del dispositivo. Por ejemplo, el controlador podría detectar que un usuario ha insertado un botón de expulsión.

Si el objeto de dispositivo de marco para el PDO del dispositivo está disponible, el controlador puede llamar a WdfPdoRequestEject. Si el controlador usa la enumeración de bus dinámico y si la descripción de identificación del dispositivo está disponible, el controlador puede llamar a WdfChildListRequestChildEject.

Para obtener más información sobre WdfPdoRequestEject y WdfChildListRequestChildEject, vea Compatibilidad con dispositivos ejectables.

Ejemplos

En el ejemplo de código siguiente se busca una lista de dispositivos secundarios para buscar una que coincida con un número de serie especificado. Cuando el ejemplo encuentra el elemento secundario correcto, llama a WdfPdoRequestEject para indicar que el elemento secundario se está expulsando. Este ejemplo se ha tomado del controlador de bus de ejemplo de Toaster y se ha 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfpdo.h (incluya Wdf.h)
Library Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration