Estrutura de STORAGE_DEVICE_NUMBER_EX (ntddstor. h)

A estrutura de STORAGE_DEVICE_NUMBER_EX é usada em conjunto com a solicitação de 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 da 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 desta estrutura. Será definido como sizeof(STORAGE_DEVICE_NUMBER_EX).

Size

Tamanho total dessa estrutura, incluindo dados adicionais. Atualmente, isso sempre será definido como sizeof(STORAGE_DEVICE_NUMBER_EX).

Flags

Pode ser uma combinação de STORAGE_DEVICE_FLAGS_XXX sinalizadores 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. Só há suporte para esse IOCTL em 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 de MPIO.

DeviceGuid

Um número de identificação exclusivo global para este dispositivo. Um GUID {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 do 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 expõe 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 (que é uma indicação de um problema com o dispositivo), o driver irá 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 irá 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 for definido, o DEVICEGUID foi criado a partir dos dados page83 SCSI. Se esse sinalizador não for definido, isso implica que ele foi criado a partir do número de série ou gerado aleatoriamente.

Os valores na estrutura de STORAGE_DEVICE_NUMBER_EX têm garantia de permanecer inalterado até que o sistema seja reinicializado. Não há garantia de que eles sejam persistentes entre as inicializações. Um GUID de dispositivo permanece o mesmo entre as reinicializações. Um GUID aleatório não é persistente e não será o mesmo após uma reinicialização.

Requisitos

   
Cabeçalho ntddstor. h (incluir Ntddstor. h)

Confira também

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX