Creazione di un oggetto Device

Un driver monolitico deve creare un oggetto dispositivo per ogni dispositivo fisico, logico o virtuale per cui gestisce le richieste di I/O. Un driver che non crea un oggetto dispositivo per un dispositivo non riceve alcun IRP per il dispositivo.

In alcune aree tecnologiche, un minidriver associato a un driver di classe o a un driver di porta non deve creare i propri oggetti dispositivo. Al contrario, la classe o il driver di porta crea l'oggetto dispositivo e riceve tutti gli IRP per il dispositivo. Il driver di classe o porta usa quindi un metodo specifico del driver per passare la richiesta di I/O al minidriver. Vedere la documentazione relativa all'area tecnologica specifica per determinare se Microsoft fornisce una classe o un driver di porta che crea oggetti dispositivo per conto del driver.

I driver chiamano IoCreateDevice o IoCreateDeviceSecure per creare gli oggetti dispositivo. Per altre informazioni sulla routine da usare, vedere le sezioni seguenti.

Creazione di oggetti dispositivo per la funzione WDM e i driver di filtro

Creazione di oggetti dispositivo per i driver del bus WDM

Creazione di oggetti dispositivo per driver non WDM

Quando il driver crea un oggetto dispositivo, fornisce le informazioni seguenti a IoCreateDevice o IoCreateDeviceSecure:

  • Dimensioni dell'estensione del dispositivo del dispositivo. L'estensione del dispositivo è un'area di archiviazione allocata dal sistema che il driver può usare per l'archiviazione specifica del dispositivo. Per altre informazioni, vedere Estensioni del dispositivo.

  • Costante definita dal sistema, che indica deviceType rappresentato dall'oggetto dispositivo. Per altre informazioni, vedere Specifica dei tipi di dispositivo.

  • Una o più costanti definite dal sistema che indicano le caratteristiche del dispositivo per il dispositivo. Per altre informazioni, vedere Specifica delle caratteristiche del dispositivo.

  • Valore booleano, denominato Exclusive, che specifica se un bit nei flag dell'oggetto dispositivo deve essere impostato con DO_EXCLUSIVE, che indica i servizi driver un dispositivo esclusivo, ad esempio un video, seriale, parallelo o dispositivo audio. I driver WDM devono impostare Exclusive su FALSE. Per altre informazioni, vedere Specifica dell'accesso esclusivo agli oggetti dispositivo.

  • Puntatore all'oggetto driver per il driver. Una funzione WDM o un driver di filtro riceve un puntatore al relativo oggetto driver come parametro per la routine AddDevice . Tutti i driver ricevono un puntatore all'oggetto driver nella routine DriverEntry . Il sistema usa questo puntatore per associare il driver al relativo oggetto dispositivo.

  • Puntatore facoltativo a una stringa Unicode con terminazione null (DeviceName) che assegna il nome al dispositivo. I driver WDM, diversi dai driver del bus, non forniscono un nome del dispositivo; in questo modo ignora le funzionalità di sicurezza del gestore PnP. Per altre informazioni, vedere Oggetti dispositivo denominati.

Se la chiamata a IoCreateDevice o IoCreateDeviceSecure riesce, la gestione I/O fornisce l'archiviazione per l'oggetto dispositivo stesso e per tutte le altre strutture di dati associate all'oggetto dispositivo, inclusa l'estensione del dispositivo, che inizializza con zero.

Creazione di oggetti dispositivo per la funzione WDM e i driver di filtro

I driver WDM, diversi dai driver del bus, chiamano IoCreateDevice per creare gli oggetti dispositivo. La maggior parte dei driver WDM crea gli oggetti del dispositivo all'interno delle routine AddDevice . Alcuni driver, ad esempio i driver di disco che devono rispondere ai IOCTLs del layout dell'unità, chiamare IoCreateDevice da una routine di invio.

A meno che le sezioni specifiche del tipo di dispositivo dello stato della documentazione di Windows Driver Kit (WDK), il driver deve creare i relativi oggetti dispositivo nella routine AddDevice . Per altre informazioni, vedere Scrittura di una routine AddDevice.

Creazione di oggetti dispositivo per i driver del bus WDM

Un driver del bus WDM crea un oggetto PDO quando enumera un nuovo dispositivo in risposta a una richiesta di IRP_MN_QUERY_DEVICE_RELATIONS , se il tipo di relazione è BusRelations.

Le regole seguenti determinano se un driver del bus chiama IoCreateDevice o IoCreateDeviceSecure per creare un oggetto dispositivo:

  • Se un dispositivo può essere usato in modalità non elaborata, deve chiamare IoCreateDeviceSecure.

  • Se il dispositivo non è in modalità non elaborato, il driver del bus può usare IoCreateDevice o IoCreateDeviceSecure. IoCreateDevice può essere usato quando la sicurezza predefinita del sistema per i dispositivi nel bus è adeguata; IoCreateDeviceSecure può essere usato per specificare un descrittore di sicurezza più rigoroso. Per altre informazioni, vedere Controllo dell'accesso ai dispositivi.

Creazione di oggetti dispositivo per driver non WDM

Un driver non WDM usa IoCreateDevice per creare oggetti dispositivo non denominati e IoCreateDeviceSecure per creare oggetti dispositivo denominati. Si noti che gli oggetti dispositivo senza nome di un driver non WDM non sono accessibili dalla modalità utente, pertanto il driver in genere deve creare almeno un oggetto denominato.