Supporto di dispositivi espulsibili

I dispositivi espulsi sono dispositivi che possono essere inseriti in una stazione di ancoraggio ed espulsi dalla stazione di ancoraggio. In genere, l'alimentazione del bus di un dispositivo espulsibile deve essere disabilitata prima che il dispositivo possa essere rimosso.

Se un dispositivo è espulso, il driver del bus per il bus del dispositivo deve impostare il membro EjectSupported nella struttura WDF_DEVICE_PNP_CAPABILITIES del dispositivo.

Quando un driver del bus determina che uno dei dispositivi figlio enumerati sta per essere espulso, chiama WdfPdoRequestEject o WdfChildListRequestChildEject. Ad esempio, il conducente del bus potrebbe rilevare che un utente ha premuto un pulsante di espulsione.

Quando un driver chiama WdfChildListRequestChildEject o WdfPdoRequestEject, il gestore PnP usa lo scenario di rimozione ordinato per informare i driver del dispositivo che il dispositivo viene rimosso. Dopo che il framework ha chiamato la funzione di callback EvtDeviceReleaseHardware nel driver del bus per il bus del dispositivo, il framework chiama la funzione di callback EvtDeviceEject del driver del bus, che esegue tutte le operazioni necessarie per espellere fisicamente il dispositivo.

Se l'espulsione del dispositivo causa anche l'espulsione di altri dispositivi, il conducente dell'autobus può mantenere un elenco di relazioni di espulsione. Quando un utente rimuove il dispositivo, il responsabile PnP informa i driver dei dispositivi nell'elenco che vengono rimossi anche i dispositivi. Per mantenere un elenco delle relazioni di espulsione, un driver del bus può usare i metodi WdfPdoAddEjectionRelationsPhysicalDevice, WdfPdoRemoveEjectionRelationsPhysicalDevice e WdfPdoClearEjectionRelationsDevices .

Se un dispositivo può essere bloccato nella sua stazione di ancoraggio, il driver dell'autobus deve impostare il membro LockSupported nella struttura di WDF_DEVICE_PNP_CAPABILITIES del dispositivo. Il driver del bus deve anche fornire una funzione di callback EvtDeviceSetLock che blocca il dispositivo per disabilitare l'espulsione o sbloccare il dispositivo per abilitare l'espulsione.