Condividi tramite


Inizializzazione e chiamata di routine minidriver IDE

Tutti i minidriver controller IDE devono fornire una serie di routine standard che implementano funzionalità specifiche dell'hardware. La figura seguente illustra come un minidriver controller IDE rende disponibili le routine per il driver del controller. Si noti che la libreria PciIdeX, anche se concettualemente separata dal driver controller IDE come illustrato nella figura seguente, è contenuta all'interno del file eseguibile del driver del controller, pciidex.sys. Quando un minidriver chiama una routine di libreria PciIdeX, in realtà chiama una routine all'interno del driver del controller.

flusso di programma per l'inizializzazione della routine di minidriver.

  1. Il gestore PnP carica il driver del controller IDE-minidriver, quindi chiama la routine DriverEntry , passandolo un puntatore all'oggetto driver per il driver del controller.

  2. Il driver driver del minidriver chiama la routine di libreria PciIdeXInitialize , passandolo a un puntatore alla routine GetControllerProperties del minidriver.

  3. PciIdeXInitialize archivia il puntatore a GetControllerProperties nell'oggetto driver.

  4. Gestione PnP invia una richiesta di IRP_MN_START_DEVICE al driver del controller IDE per avviare il controller. Il driver del controller IDE riceve la richiesta nella routine DispatchPnP e chiama una routine interna che avvia il dispositivo.

  5. Il driver del controller recupera un puntatore a GetControllerProperties archiviato nell'oggetto driver.

  6. Il driver del controller chiama GetControllerProperties, passandolo a un puntatore a una struttura IDE_CONTROLLER_PROPERTIES .

  7. GetControllerProperties carica puntatori per un set standard di routine di minidriver in IDE_CONTROLLER_PROPERTIES.

Dopo che il minidriver popola la struttura di IDE_CONTROLLER_PROPERTIES con puntatori di funzione che puntano alle routine del minidriver, il driver del controller può chiamarli.

Le routine che ogni minidriver deve fornire per il controller da chiamare sono i seguenti:

Questa routine determina se il canale indicato è abilitato.

Questa routine segnala le proprietà dell'hardware del controller IDE.

Questa routine indica se entrambi i canali del controller possono essere accessibili contemporaneamente.

Questa routine restituisce la modalità PIO migliore e la modalità DMA migliore per ogni dispositivo indicato in XferMode.

Questa routine indica quale modalità di trasferimento della memoria ultra diretta (UDMA) è corrente e che è meglio per il dispositivo.

Questa routine determina se l'I/O può essere eseguita tramite DMA.

HwIdeXChannelEnabled

HwIdeXGetControllerProperties

HwIdeXSyncAccessRequired

HwIdeXTransferModeSelect

HwIdeXUdmaModesSupported

HwIdeXUseDma