Share via


Controllo dell'accesso ai dispositivi (WDM)

L'accesso a un dispositivo è controllato da un descrittore di sicurezza e l'elenco di controllo di controllo di accesso contiene. Un descrittore di sicurezza per un oggetto dispositivo può essere specificato quando l'oggetto dispositivo viene creato o impostato nel Registro di sistema.

Controllo dell'accesso ai dispositivi per i driver WDM

Quando un driver WDM (diverso da determinati driver del bus) crea un oggetto dispositivo, il gestore Plug and Play determina un descrittore di sicurezza per il dispositivo. L'ordine delle operazioni è il seguente.

  1. Il gestore PnP chiama la routine AddDevice del driver.

  2. La routine AddDevice del driver chiama IoCreateDevice per creare l'oggetto dispositivo e collegarlo allo stack di oggetti del dispositivo.

  3. Il gestore PnP aggiorna il descrittore di sicurezza per l'oggetto dispositivo appena creato.

Per un driver WDM, il gestore PnP determina il descrittore di sicurezza per l'oggetto dispositivo come indicato di seguito.

  1. Se il dispositivo ha un'impostazione del descrittore di sicurezza nel Registro di sistema, viene applicata a ogni oggetto nello stack di dispositivi.

  2. In caso contrario, se la classe di installazione del dispositivo ha un'impostazione del descrittore di sicurezza nel Registro di sistema, viene applicata a ogni oggetto nello stack di dispositivi.

  3. In caso contrario, la gestione PnP lascia invariato il descrittore di sicurezza predefinito per ogni oggetto. In questo caso, il descrittore di sicurezza predefinito per lo stack è determinato dal tipo di dispositivo e dalle caratteristiche del dispositivo dell'oggetto PDO.

Per la maggior parte dei tipi e delle caratteristiche dei dispositivi, il descrittore di sicurezza predefinito consente l'accesso completo (GENERIC_ALL) agli amministratori e alle operazioni di lettura, scrittura ed esecuzione dell'accesso (GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE) accesso a tutti gli altri.

Per altre informazioni su come impostare un descrittore di sicurezza per un dispositivo o una classe di installazione del dispositivo nel Registro di sistema, vedere Impostazione delle proprietà dell'oggetto dispositivo nel Registro di sistema.

Se un dispositivo viene gestito in modalità non elaborata, la gestione PnP non può determinare un descrittore di sicurezza per l'oggetto dispositivo. In tal caso, il conducente del bus deve fornire un descrittore di sicurezza; vedere di seguito.

Controllo dell'accesso ai dispositivi per i driver del bus WDM

Un driver del bus WDM deve fornire un descrittore di sicurezza per il PDO di ogni dispositivo che può essere gestito in modalità non elaborata. Usare IoCreateDeviceSecure per creare l'oggetto dispositivo con un descrittore di sicurezza.

Se il driver del bus non opera un dispositivo in modalità non elaborata, non è necessario fornire un descrittore di sicurezza. Il gestore PnP determina il descrittore di sicurezza, come descritto in precedenza. Il driver del bus può fornire un descrittore di sicurezza se deve assicurarsi che i relativi PDO abbiano impostazioni di sicurezza più rigorose rispetto al descrittore predefinito. Qualsiasi descrittore specificato dal driver del bus viene sottoposto a override dalle impostazioni del Registro di sistema.

Per altre informazioni sulla creazione di oggetti dispositivo, vedere Creazione di un oggetto Device.

Controllo dell'accesso ai dispositivi per i driver non WDM

I driver non WDM devono specificare un descrittore di sicurezza predefinito e un GUID di classe per qualsiasi oggetto dispositivo denominato creato.

Usare la routine IoCreateDeviceSecure per creare l'oggetto dispositivo denominato e per specificare il descrittore di sicurezza predefinito e il GUID della classe per tale dispositivo. Il descrittore di sicurezza viene specificato in un subset di SDDL. Per altre informazioni, vedere SDDL per oggetti dispositivo.

Il sistema esegue l'override del descrittore di sicurezza predefinito con qualsiasi impostazione di sicurezza nel Registro di sistema per il GUID della classe specificata. Il driver deve specificare un GUID univoco per il dispositivo. Usare lo strumento GuidGen per generare un GUID univoco. GuidGen è incluso nella Microsoft Windows SDK.