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’appareilXXX FILE_DEVICE_, le numéro d’appareil, le GUID de l’appareil et, pour un appareil pouvant être partitionné, le numéro de partition affecté à un appareil par le pilote au 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. Est défini sur taille de(STORAGE_DEVICE_NUMBER_EX).
Size
Taille totale de cette structure, y compris toutes les données supplémentaires. Actuellement, cette valeur est toujours définie sur taille de(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 (tel que FILE_DEVICE_DISK) ou une valeur définie par le fournisseur pour un nouveau type d’appareil. Ce IOCTL est uniquement pris en charge pour les appareils de disque. Pour plus d’informations, consultez Spécification des types d’appareils.
DeviceNumber
Indique le nombre 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
Numéro d’identification global unique pour cet appareil. Un GUID de {0} indique qu’un 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 exemple, le numéro de série peut être utilisé pour former le GUID, mais pas la révision du microprogramme.
PartitionNumber
Indique que 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 requête IOCTL_STORAGE_GET_DEVICE_NUMBER_EX est généralement émise par un pilote de disque tolérant aux pannes.
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 du fournisseur de l’appareil, l’ID de produit et le numéro de série pour créer le GUID.
Si un pilote de stockage détecte deux appareils avec les mêmes informations matérielles (ce qui est une indication d’un problème avec l’appareil), le pilote génère un GUID aléatoire pour l’un des deux appareils. Lorsque vous gérez IOCTL_STORAGE_GET_DEVICE_NUMBER_EX pour l’appareil avec le GUID aléatoire, le pilote ajoute STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT aux indicateurs de membre 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 aux indicateurs de membre de cette structure.
Si l’indicateur STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID est défini, l’appareilguid a été créé à partir des données SCSI page83. Si cet indicateur n’est pas défini, cela implique 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é. Ils ne sont pas assurés d’être persistants entre les démarrages. Un GUID d’appareil reste le même entre les redémarrages. Un GUID aléatoire n’est pas conservé et ne sera pas le même après un redémarrage.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddstor.h (include Ntddstor.h) |