Linee guida per la scrittura di routine AddDevice
Quando si scrive una routine AddDevice , considerare le linee guida di progettazione seguenti:
Se un driver di filtro determina che è stata chiamata la routine AddDevice per un dispositivo che non è necessario eseguire il servizio, il driver di filtro deve restituire STATUS_SUCCESS per consentire il caricamento del resto dello stack di dispositivi per il dispositivo. Il driver di filtro non crea un oggetto dispositivo né lo collega allo stack di dispositivi; il driver di filtro restituisce solo l'esito positivo e consente l'aggiunta del resto dei driver allo stack.
Un driver deve fornire spazio di archiviazione, in genere nell'estensione del dispositivo di un oggetto dispositivo, per tutti gli oggetti definiti dal kernel e i blocchi spin esecutivi usati. Un driver deve anche fornire spazio di archiviazione per i puntatori a determinati oggetti ottenuti dal gestore di I/O o da altri componenti di sistema.
È possibile decidere di allocare memoria aggiuntiva dello spazio di sistema per le esigenze del driver, ad esempio per i buffer di I/O a lungo termine o un elenco lookaside. In tal caso, una routine AddDevice può chiamare le routine seguenti:
ExAllocatePoolWithTag per la memoria dello spazio di sistema impaginato o non di paging
ExInitializePagedLookasideList o ExInitializeNPagedLookasideList per inizializzare un elenco lookaside o impaginato
Se il driver ha un thread dedicato al dispositivo o attende su qualsiasi oggetto dispatcher definito dal kernel, la routine AddDevice potrebbe inizializzare gli oggetti dispatcher del kernel.
Se il driver usa blocchi di rotazione esecutivi o fornisce lo spazio di archiviazione per un blocco di rotazione di interruzione, la routine AddDevice potrebbe inizializzare questi blocchi di rotazione. Per altre informazioni, vedere Blocchi di rotazione .
Rafforzare la sicurezza di apertura dei file quando si chiama IoCreateDevice.
Specificare la caratteristica FILE_DEVICE_SECURE_OPEN nella chiamata a IoCreateDevice. Questa caratteristica è supportata in Windows NT 4.0 SP5 e versioni successive. Indirizza il gestore di I/O a eseguire controlli di sicurezza sull'oggetto dispositivo per tutte le richieste aperte. I fornitori devono specificare questa caratteristica nelle chiamate a IoCreateDevice se la caratteristica FILE_DEVICE_SECURE_OPEN non è impostata nell'INF del programma di installazione di classe del dispositivo o nell'INF del dispositivo e i driver non eseguono i propri controlli di sicurezza all'apertura. Per altre informazioni, vedere Controllo dell'accesso dello spazio dei nomi dei dispositivi.
Se un driver imposta la caratteristica FILE_DEVICE_SECURE_OPEN quando chiama IoCreateDevice, il gestore di I/O applica il descrittore di sicurezza dell'oggetto dispositivo a qualsiasi apertura o nome file finale relativo. Ad esempio, se FILE_DEVICE_SECURE_OPEN è impostato per \Device\foo e se \Device\foo può essere aperto solo dall'amministratore, \Device\foo\abc può essere aperto anche dall'amministratore. Tuttavia, il gestore di I/O impedisce a un utente normale di aprire \Device\foo e \Device\foo\abc.
Se un driver per un dispositivo imposta questa caratteristica, il gestore PnP lo propaga a tutti gli oggetti dispositivo per il dispositivo.
Importante
Le DDI di ExAllocatePool descritte in questo argomento sono state deprecate in Windows 10 versione 2004 e sono state sostituite da ExAllocatePool2 e ExAllocatePool3. Per altre informazioni, vedere Aggiornamento delle chiamate ExAllocatePool deprecate a ExAllocatePool2 e ExAllocatePool3.