Condividi tramite


Specifica dell'accesso esclusivo agli oggetti dispositivo

Se l'accesso esclusivo a un dispositivo è abilitato, è possibile aprire un solo handle per il dispositivo alla volta. Affinché il gestore di I/O applichi l'accesso esclusivo al dispositivo, la proprietà esclusiva deve essere impostata per l'oggetto dispositivo denominato nello stack di dispositivi.

Per uno stack di dispositivi WDM con pdo e fdO, la proprietà esclusiva può essere impostata solo dal file INF usando una direttiva INF AddReg. Il PDO è l'oggetto denominato nello stack, ma il driver del bus (non il driver di funzione stesso) crea il PDO per conto del driver di funzione. L'unico modo per indirizzare il driver del bus a impostare il flag esclusivo per il PDO è costituito dalla classe o dai file INF del dispositivo. La chiamata alla routine IoCreateDevice crea l'oggetto FDO. L'impostazione del flag esclusivo per il fdO non ha alcun effetto.

I driver i cui oggetti dispositivo non sono in pila, ad esempio driver e dispositivi non WDM che operano in modalità non elaborata, possono usare la routine IoCreateDeviceSecure per impostare la proprietà esclusiva per l'oggetto dispositivo denominato.

Il gestore di I/O applica l'esclusività per ogni nome in base agli oggetti dispositivo denominati, indipendentemente dal nome finale. Si supponga, ad esempio, che l'oggetto dispositivo abbia il nome "\Device\DeviceName". Il gestore di I/O applica quindi l'esclusività per una richiesta di apertura di "\Device\DeviceName\Filename1" seguita da "\Device\DeviceName\Filename2". Se due oggetti nello stack di dispositivi sono denominati (operazione non consigliata), la gestione I/O consente l'apertura di un singolo handle per ogni oggetto. In una situazione di questo tipo, i driver devono imporre l'esclusività stessa all'interno delle funzioni di callback DRIVER_DISPATCH. Il gestore di I/O non applica anche l'esclusività per l'apertura rispetto a un altro handle di file. Per altre informazioni sulle richieste di apertura file nello spazio dei nomi del dispositivo, vedere Controllo dell'accesso allo spazio dei nomi dei dispositivi.