Condividi tramite


Errore di convalida degli oggetti dispositivo

Molti driver creano più tipi di oggetto dispositivo chiamando IoCreateDevice. Alcuni driver creano oggetti dispositivo di controllo nelle routine DriverEntry per consentire alle applicazioni di comunicare con il driver, anche prima che il driver crei un fdO. Ad esempio, i driver del file system creano oggetti di dispositivo per gestire le notifiche del file system quando si registrano come file system con IoRegisterFileSystem.

Un driver dovrebbe essere pronto a gestire le richieste IRP_MJ_CREATE per qualsiasi oggetto dispositivo che crea. Dopo aver completato la richiesta con uno stato di esito positivo, il driver dovrebbe aspettarsi di ricevere eventuali richieste di I/O accessibili dall'utente nell'oggetto file creato. Di conseguenza, qualsiasi driver che crea più di un oggetto dispositivo deve verificare quale oggetto dispositivo specifica ogni richiesta di I/O.

Si supponga, ad esempio, che un driver crei oggetti dispositivo di controllo complessivi in DriverEntry e quindi crei un altro set di oggetti dispositivo nella routine AddDevice . Si supponga che la routine AddDevice inizializzi l'estensione del dispositivo con informazioni sui driver di livello inferiore, ma gli oggetti dispositivo di controllo non contengono queste informazioni. In questo caso, tutte le routine dispatch devono prestare attenzione a controllare ogni oggetto dispositivo ricevuto. In caso contrario, il driver potrebbe bloccarsi quando tenta di utilizzare le informazioni sull'estensione del dispositivo.