Partager via


structure STORAGE_DEVICE_NUMBER_EX (ntddstor.h)

La structure STORAGE_DEVICE_NUMBER_EX est utilisée conjointement avec la demande de IOCTL_STORAGE_GET_DEVICE_NUMBER_EX pour récupérer le type d’appareil FILE_DEVICE_XXX , le numéro d’appareil, le GUID de périphérique et, pour un appareil qui peut être partitionné, le numéro de partition attribué à un appareil par le pilote lors du démarrage de l’appareil.

Syntaxe

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;

Membres

Version

Version de cette structure. Sera défini sur sizeof(STORAGE_DEVICE_NUMBER_EX).

Size

Taille totale de cette structure, y compris les données supplémentaires. Actuellement, ce paramètre est toujours défini sur sizeof(STORAGE_DEVICE_NUMBER_EX).

Flags

Il peut s’agir d’une combinaison d’indicateurs STORAGE_DEVICE_FLAGS_XXX qui fournissent plus d’informations sur les membres de cette structure. Pour plus d’informations, consultez Remarques.

DeviceType

Spécifie l’une des constantes FILE_DEVICE_XXX définies par le système indiquant le type d’appareil (par exemple, FILE_DEVICE_DISK) ou une valeur définie par le fournisseur pour un nouveau type d’appareil. Ce IOCTL est pris en charge uniquement pour les périphériques de disque. Pour plus d’informations, consultez Spécification des types d’appareils.

DeviceNumber

Indique le numéro de cet appareil. Cette valeur est définie sur 0xFFFFFFFF (-1) pour les disques qui représentent les chemins physiques d’un disque MPIO.

DeviceGuid

Un numéro d’identification global unique pour cet appareil. Un GUID de indique qu’un {0} GUID n’a pas pu être généré. Le GUID est basé sur des informations matérielles qui ne changent pas avec les mises à jour du microprogramme ; par instance, le numéro de série peut être utilisé pour former le GUID, mais pas la révision du microprogramme.

PartitionNumber

Indique le numéro de partition de l’appareil est retourné dans ce membre, si l’appareil peut être partitionné. Sinon, -1 est retourné.

Remarques

La demande IOCTL_STORAGE_GET_DEVICE_NUMBER_EX est généralement émise par un pilote de disque à tolérance de panne.

En général, si un appareil expose un identificateur global unique, le pilote de stockage utilise cet identificateur pour former le GUID. Sinon, le pilote de stockage combine l’ID de fournisseur, l’ID de produit et le numéro de série de l’appareil pour créer le GUID.

Si un pilote de stockage détecte deux appareils avec les mêmes informations matérielles (ce qui indique un problème avec le périphérique), le pilote génère un GUID aléatoire pour l’un des deux appareils. Lors de la gestion de IOCTL_STORAGE_GET_DEVICE_NUMBER_EX pour l’appareil avec le GUID aléatoire, le pilote ajoute STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT au membre Flags de cette structure.

Si un périphérique de stockage ne fournit aucune information d’identification, le pilote génère un GUID aléatoire et ajoute STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID au membre Flags de cette structure.

Si l’indicateur STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID est défini, deviceguid a été créé à partir des données SCSI page83. Si cet indicateur n’est pas défini, cela signifie qu’il a été créé à partir du numéro de série ou a été généré de manière aléatoire.

Les valeurs de la structure STORAGE_DEVICE_NUMBER_EX sont garanties de rester inchangées jusqu’à ce que le système soit redémarré. Il n’est pas garanti qu’ils soient persistants entre les bottes. Un GUID d’appareil reste le même pendant les redémarrages. Un GUID aléatoire n’est pas conservé et ne sera pas le même après un redémarrage.

Configuration requise

Condition requise Valeur
En-tête ntddstor.h (inclure Ntddstor.h)

Voir aussi

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX