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)

Confira também

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX