Partilhar via


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)

Consulte também

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX