STORAGE_DEVICE_NUMBER_EX estrutura (ntddstor.h)
A estrutura de STORAGE_DEVICE_NUMBER_EX é usada em conjunto com a solicitação IOCTL_STORAGE_GET_DEVICE_NUMBER_EX para recuperar o FILE_DEVICE_XXX tipo de dispositivo, o número do dispositivo, o GUID do dispositivo e, para um dispositivo que pode ser particionado, o número de partição atribuído a um dispositivo pelo driver quando o dispositivo é iniciado.
Sintaxe
typedef struct _STORAGE_DEVICE_NUMBER_EX {
ULONG Version;
ULONG Size;
ULONG Flags;
DEVICE_TYPE DeviceType;
ULONG DeviceNumber;
GUID DeviceGuid;
ULONG PartitionNumber;
} STORAGE_DEVICE_NUMBER_EX, *PSTORAGE_DEVICE_NUMBER_EX;
Membros
Version
A versão dessa estrutura. Será definido como tamanho de(STORAGE_DEVICE_NUMBER_EX).
Size
Tamanho total dessa estrutura, incluindo quaisquer dados adicionais. No momento, isso sempre será definido como tamanhos de(STORAGE_DEVICE_NUMBER_EX).
Flags
Pode ser uma combinação de sinalizadores STORAGE_DEVICE_FLAGS_XXX que fornecem mais informações sobre os membros dessa estrutura. Consulte Comentários para obter detalhes.
DeviceType
Especifica uma das constantes xxx FILE_DEVICE_ definidas pelo sistema que indica o tipo de dispositivo (como FILE_DEVICE_DISK) ou um valor definido pelo fornecedor para um novo tipo de dispositivo. Esse IOCTL só tem suporte para dispositivos de disco. Para obter mais informações, consulte Especificando tipos de dispositivo.
DeviceNumber
Indica o número deste dispositivo. Esse valor é definido como 0xFFFFFFFF (-1) para os discos que representam os caminhos físicos de um disco MPIO.
DeviceGuid
Um número de identificação global exclusivo para este dispositivo. Um GUID de {0} indica que não foi possível gerar um GUID. O GUID é baseado em informações de hardware que não são alteradas com atualizações de firmware; por exemplo, o número de série pode ser usado para formar o GUID, mas não a revisão de firmware.
PartitionNumber
Indica que o número de partição do dispositivo será retornado neste membro, se o dispositivo puder ser particionado. Caso contrário, -1 será retornado.
Observações
A solicitação IOCTL_STORAGE_GET_DEVICE_NUMBER_EX geralmente é emitida por um driver de disco tolerante a falhas.
Em geral, se um dispositivo expor um identificador global exclusivo, o driver de armazenamento usará esse identificador para formar o GUID. Caso contrário, o driver de armazenamento combinará a ID do fornecedor do dispositivo, a ID do produto e o número de série para criar o GUID.
Se um driver de armazenamento detectar dois dispositivos com as mesmas informações de hardware (o que é uma indicação de um problema com o dispositivo), o driver gerará um GUID aleatório para um dos dois dispositivos. Ao manipular IOCTL_STORAGE_GET_DEVICE_NUMBER_EX para o dispositivo com o GUID aleatório, o driver adicionará STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT ao de sinalizadores dessa estrutura.
Se um dispositivo de armazenamento não fornecer nenhuma informação de identificação, o driver gerará um GUID aleatório e adicionará STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID ao Flags membro dessa estrutura.
Se o sinalizador de STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID estiver definido, o deviceguid será criado com base nos dados scsi page83. Se esse sinalizador não estiver definido, isso implicará que ele foi criado a partir do número de série ou foi gerado aleatoriamente.
Os valores na estrutura STORAGE_DEVICE_NUMBER_EX têm a garantia de permanecer inalterados até que o sistema seja reinicializado. Eles não têm garantia de serem persistentes entre as botas. Um GUID de dispositivo permanece o mesmo entre reinicializações. Um GUID aleatório não é persistido e não será o mesmo após uma reinicialização.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntddstor.h (include Ntddstor.h) |