Condividi tramite


Funzione WdfPdoRequestEject (wdfpdo.h)

[Si applica solo a KMDF]

Il metodo WdfPdoRequestEject informa il framework che un dispositivo specificato sta per essere espulso dalla sua stazione di ancoraggio.

Sintassi

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

Parametri

[in] Device

Handle per un oggetto dispositivo framework che rappresenta l'oggetto dispositivo fisico (PDO) del dispositivo.

Valore restituito

nessuno

Osservazioni

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Un autista del bus può chiamare WdfPdoRequestEject o WdfChildListRequestChildEject per segnalare che il driver ha rilevato un tentativo di espellere uno dei dispositivi figlio enumerati dalla stazione di ancoraggio del dispositivo. Ad esempio, il driver potrebbe rilevare che un utente ha premuto un pulsante di espulsione.

Se l'oggetto dispositivo framework per il PDO del dispositivo è disponibile, il driver può chiamare WdfPdoRequestEject. Se il driver usa l'enumerazione dinamica del bus e se la descrizione di identificazione del dispositivo è disponibile, il driver può chiamare WdfChildListRequestChildEject.

Per altre informazioni su WdfPdoRequestEject e WdfChildListRequestChildEject, vedere Supporto di dispositivi eiettabili.

Esempio

Nell'esempio di codice seguente viene eseguita una ricerca in un elenco di dispositivi figlio in modo che corrisponda a un numero di serie specificato. Quando l'esempio trova l'elemento figlio corretto, chiama WdfPdoRequestEject per indicare che l'elemento figlio viene espulso. Questo esempio è stato tratto dal driver dell'autobus di esempio Tostapane e semplificato.

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfpdo.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration