estrutura STORAGE_DEVICE_NUMBER_EX (ntddstor.h)
A estrutura STORAGE_DEVICE_NUMBER_EX é usada em conjunto com a solicitação IOCTL_STORAGE_GET_DEVICE_NUMBER_EX para recuperar o tipo de dispositivo FILE_DEVICE_XXX , 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 sizeof(STORAGE_DEVICE_NUMBER_EX).
Size
Tamanho total dessa estrutura, incluindo quaisquer dados adicionais. Atualmente, isso sempre será definido como sizeof(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 FILE_DEVICE_XXX definidas pelo sistema que indicam 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 um GUID não pôde ser gerado. 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 nesse membro, se o dispositivo puder ser particionado. Caso contrário, -1 será retornado.
Comentários
A solicitação de IOCTL_STORAGE_GET_DEVICE_NUMBER_EX geralmente é emitida por um driver de disco tolerante a falhas.
Em geral, se um dispositivo expor um identificador globalmente 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 membro Flags 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 membro Flags dessa estrutura.
Se o sinalizador STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID estiver definido, o deviceguid foi criado com base nos dados da página SCSI83. Se esse sinalizador não estiver definido, isso implica 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. Não há garantia de que eles sejam persistentes entre as inicializações. Um GUID do dispositivo permanece o mesmo entre reinicializações. Um GUID aleatório não é persistente e não será o mesmo após uma reinicialização.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddstor.h (inclua Ntddstor.h) |