EVT_WDF_DEVICE_PREPARE_HARDWARE funzione di callback (wdfdevice.h)
[Si applica a KMDF e UMDF]
La funzione di callback dell'evento EvtDevicePrepareHardware di un driver esegue tutte le operazioni necessarie per rendere accessibile un dispositivo al driver.
Sintassi
EVT_WDF_DEVICE_PREPARE_HARDWARE EvtWdfDevicePrepareHardware;
NTSTATUS EvtWdfDevicePrepareHardware(
[in] WDFDEVICE Device,
[in] WDFCMRESLIST ResourcesRaw,
[in] WDFCMRESLIST ResourcesTranslated
)
{...}
Parametri
[in] Device
Handle per un oggetto dispositivo framework.
[in] ResourcesRaw
Handle a un oggetto resource-list framework che identifica le risorse hardware non elaborate assegnate dal gestore di Plug and Play al dispositivo.
[in] ResourcesTranslated
Handle a un oggetto resource-list framework che identifica le risorse hardware tradotte assegnate dal gestore Plug and Play al dispositivo.
Valore restituito
Se la funzione di callback EvtDevicePrepareHardware non rileva errori, deve restituire STATUS_SUCCESS o un altro valore di stato per il quale NT_SUCCESS(stato) è uguale a TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(stato) equivale a FALSE. Non restituire STATUS_NOT_SUPPORTED.
Se NT_SUCCESS(stato) è FALSE, il framework chiama la funzione di callback evtDeviceReleaseHardware del driver.
Per altre informazioni sui valori restituiti della funzione di callback, vedere Segnalazione di errori del dispositivo.
Commenti
Per registrare una funzione di callback evtDevicePrepareHardware , un driver deve chiamare WdfDeviceInitSetPnpPowerEventCallbacks.
Se il driver ha registrato una funzione di callback evtDevicePrepareHardware per un dispositivo, il framework chiama la funzione dopo che il gestore Plug and Play ha assegnato risorse hardware al dispositivo e dopo che il dispositivo ha immesso lo stato D0 non inizializzato. Il gestore Plug and Play avvia sempre un dispositivo padre prima di avviare i dispositivi figlio del dispositivo.
Il framework chiama la funzione di callback evtDevicePrepareHardware del driver prima di chiamare la funzione di callback EvtDeviceD0Entry del driver.
La funzione di callback EvtDevicePrepareHardware accede alle risorse hardware non elaborate e tradotte del dispositivo usando gli handle ResourcesRaw e ResourcesTranslated ricevuti. La funzione di callback può chiamare WdfCmResourceListGetCount e WdfCmResourceListGetDescriptor per attraversare gli elenchi di risorse. Questa funzione di callback non può modificare gli elenchi di risorse.
Per altre informazioni sugli elenchi di risorse e sull'ordine in cui vengono visualizzate le risorse, vedere risorse hardware non elaborate e tradotte.
In genere, la funzione di callback evtDevicePrepareHardware del driver esegue le operazioni seguenti, se necessario:
- Esegue il mapping degli indirizzi di memoria fisica agli indirizzi virtuali in modo che il driver possa accedere alla memoria assegnata al dispositivo
- Determina il numero di revisione del dispositivo
- Configura i dispositivi USB
- Ottiene interfacce definite dal driver da altri driver
In genere, tutte le altre operazioni di inizializzazione hardware, incluso il firmware di caricamento, devono essere eseguite ogni volta che il dispositivo entra nello stato di lavoro (D0) e deve quindi essere eseguito nella funzione di callback EvtDeviceD0Entry del driver.
ResourcesRaw e ResourcesTranslated gestisce che la funzione di callback EvtDevicePrepareHardware rimane valida fino a quando non viene restituita la funzione di callback EvtDeviceReleaseHardware del driver.
Per altre informazioni sulle risorse hardware, vedere Risorse hardware per i driver di Framework-Based.
Per altre informazioni su quando il framework chiama questa funzione di callback, vedere Scenari di Gestione energia e PnP.
Per altre informazioni sui driver che forniscono questa funzione di callback, vedere Supporto di PnP e Power Management nei driver di funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfdevice.h (includere Wdf.h) |
IRQL | PASSIVE_LEVEL |