Responsabilità obbligatorie di DriverEntry
Le responsabilità obbligatorie e ordinate di una routine DriverEntry sono le seguenti:
Fornire punti di ingresso per le routine standard del conducente.
Il driver archivia i punti di ingresso per molte delle routine standard nell'oggetto driver o nell'estensione del driver. Tali punti di ingresso includono quelli per la routine AddDevice del driver, le routine dispatch, la routine StartIo e la routine Unload . Ad esempio, un driver imposterà i punti di ingresso per le routine AddDevice, DispatchPnP e DispatchPower con istruzioni come le seguenti (Xxx è un segnaposto per un prefisso fornito dal fornitore che identifica il driver):
: DriverObject->DriverExtension->AddDevice = XxxAddDevice; DriverObject->MajorFunction[IRP_MJ_PNP] = XxxDispatchPnp; DriverObject->MajorFunction[IRP_MJ_POWER] = XxxDispatchPower; :
Le routine standard aggiuntive, ad esempio isr o routine IoCompletion , vengono specificate chiamando routine di supporto del sistema. Per altre informazioni, vedere le descrizioni delle singole routine del driver standard.
Creare e/o inizializzare vari oggetti, tipi o risorse a livello di driver usati dal driver. Si noti che la maggior parte delle routine standard usa oggetti per ogni dispositivo, pertanto i driver devono configurare tali oggetti nelle routine AddDevice o dopo aver ricevuto una richiesta di IRP_MN_START_DEVICE .
Se il driver ha un thread dedicato al dispositivo o attende su qualsiasi oggetto dispatcher definito dal kernel, la routine DriverEntry potrebbe inizializzare gli oggetti dispatcher del kernel. A seconda del modo in cui il driver usa gli oggetti, potrebbe invece eseguire questa attività nella routine AddDevice o dopo aver ricevuto una richiesta di IRP_MN_START_DEVICE .
Liberare qualsiasi memoria allocata e non è più necessaria.
Restituisce NTSTATUS che indica se il driver è stato caricato correttamente e può accettare ed elaborare le richieste dal gestore PnP per configurare, aggiungere e avviare i dispositivi. Vedere i valori restituiti di DriverEntry.