estructura STORAGE_DEVICE_NUMBER_EX (ntddstor.h)
La estructura STORAGE_DEVICE_NUMBER_EX se usa junto con la solicitud de IOCTL_STORAGE_GET_DEVICE_NUMBER_EX para recuperar el tipo de dispositivo FILE_DEVICE_XXX , el número de dispositivo, el GUID del dispositivo y, para un dispositivo que se puede particionar, el número de partición asignado a un dispositivo por el controlador cuando se inicia el dispositivo.
Sintaxis
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;
Miembros
Version
Versión de esta estructura. Se establecerá en sizeof(STORAGE_DEVICE_NUMBER_EX).
Size
Tamaño total de esta estructura, incluidos los datos adicionales. Actualmente, siempre se establecerá en sizeof(STORAGE_DEVICE_NUMBER_EX).
Flags
Puede ser una combinación de marcas de STORAGE_DEVICE_FLAGS_XXX que proporcionan más información sobre los miembros de esta estructura. Consulte Comentarios para obtener más detalles.
DeviceType
Especifica una de las constantes FILE_DEVICE_XXX definidas por el sistema que indican el tipo de dispositivo (como FILE_DEVICE_DISK) o un valor definido por el proveedor para un nuevo tipo de dispositivo. Este IOCTL solo se admite para dispositivos de disco. Para obtener más información, vea Especificar tipos de dispositivo.
DeviceNumber
Indica el número de este dispositivo. Este valor se establece en 0xFFFFFFFF (-1) para los discos que representan las rutas de acceso físicas de un disco MPIO.
DeviceGuid
Número de identificación único global para este dispositivo. Un GUID de {0} indica que no se pudo generar un GUID. El GUID se basa en la información de hardware que no cambia con las actualizaciones de firmware; por ejemplo, el número de serie se puede usar para formar el GUID, pero no para la revisión del firmware.
PartitionNumber
Indica el número de partición del dispositivo que se devuelve en este miembro, si el dispositivo se puede particionar. De lo contrario, se devuelve -1.
Comentarios
Normalmente, un controlador de disco tolerante a errores emite la solicitud IOCTL_STORAGE_GET_DEVICE_NUMBER_EX .
En general, si un dispositivo expone un identificador único global, el controlador de almacenamiento usará ese identificador para formar el GUID. De lo contrario, el controlador de almacenamiento combinará el identificador de proveedor, el identificador de producto y el número de serie del dispositivo para crear el GUID.
Si un controlador de almacenamiento detecta dos dispositivos con la misma información de hardware (que es una indicación de un problema con el dispositivo), el controlador generará un GUID aleatorio para uno de los dos dispositivos. Al controlar IOCTL_STORAGE_GET_DEVICE_NUMBER_EX para el dispositivo con el GUID aleatorio, el controlador agregará STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT al miembro Flags de esta estructura.
Si un dispositivo de almacenamiento no proporciona ninguna información de identificación, el controlador generará un GUID aleatorio y agregará STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID al miembro Flags de esta estructura.
Si se establece la marca de STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID, deviceguid se creó a partir de los datos de la página SCSI83. Si no se establece esta marca, esto implica que se creó a partir del número de serie o se generó aleatoriamente.
Se garantiza que los valores de la estructura STORAGE_DEVICE_NUMBER_EX permanezcan sin cambios hasta que se reinicie el sistema. No se garantiza que sean persistentes entre arranques. Un GUID de dispositivo sigue siendo el mismo en los reinicios. No se conserva un GUID aleatorio y no será el mismo después de un reinicio.
Requisitos
Requisito | Valor |
---|---|
Header | ntddstor.h (incluya Ntddstor.h) |