Especificando características do dispositivo
Cada objeto de dispositivo pode ter uma ou mais características do dispositivo. As características do dispositivo são armazenadas como sinalizadores no membro Características da estrutura DEVICE_OBJECT do objeto do dispositivo.
A maioria dos drivers especifica apenas a característica FILE_DEVICE_SECURE_OPEN. Isso garante que as mesmas configurações de segurança sejam aplicadas a qualquer solicitação aberta no namespace do dispositivo. Para obter mais informações, consulte Controlando o acesso ao namespace do dispositivo.
O FILE_AUTOGENERATED_DEVICE_NAME é usado apenas para PDOs. As características FILE_FLOPPY_DISKETTE, FILE_REMOVABLE_MEDIA e FILE_WRITE_ONCE_MEDIA são específicas para dispositivos de armazenamento. Para obter uma descrição dos possíveis sinalizadores de característica do dispositivo, consulte a descrição do membro Características do DEVICE_OBJECT.
Determinadas características do dispositivo, como FILE_AUTOGENERATED_DEVICE_NAME, só se aplicam a objetos de dispositivo individuais. Os drivers podem especificar uma configuração para as características do dispositivo para objetos de dispositivo individuais ao criar o objeto de dispositivo chamando IoCreateDevice ou IoCreateDeviceSecure.
As seguintes características se aplicam a toda a pilha de dispositivos:
FILE_DEVICE_SECURE_OPEN
FILE_FLOPPY_DISKETTE
FILE_READ_ONLY_DEVICE
FILE_REMOVABLE_MEDIA
FILE_WRITE_ONCE_MEDIA
Os drivers podem definir características do dispositivo que se aplicam a toda a pilha de dispositivos chamando IoCreateDevice ou IoCreateDeviceSecure. Como alternativa, as características do dispositivo que se aplicam a toda a pilha de dispositivos podem ser definidas no registro, para o dispositivo ou para a classe de instalação do dispositivo. (Para obter mais informações, consulte Setting Device Object Properties in the Registry.)
O gerenciador PnP determina a configuração do Registro para características do dispositivo da seguinte maneira.
Se um valor for especificado para o dispositivo individual, o gerenciador PnP usará esse valor;
Caso contrário, se um valor for especificado para a classe de configuração do dispositivo, o gerenciador PnP usará esse valor;
Caso contrário, o gerenciador PnP usará um valor igual a zero como a configuração do Registro.
Se uma característica do dispositivo que se aplica a toda a pilha de dispositivos for definida no registro ou se estiver definida para qualquer FDO ou filtro DO na pilha, o gerenciador PnP o definirá para cada objeto de dispositivo na pilha. (Se o dispositivo for compatível com o modo bruto e, portanto, não tiver um FDO, o gerenciador PnP usará o PDO.)