STORAGE_DEVICE_NUMBER_EX-Struktur (ntddstor.h)
Die STORAGE_DEVICE_NUMBER_EX-Struktur wird in Verbindung mit der IOCTL_STORAGE_GET_DEVICE_NUMBER_EX-Anforderung verwendet, um den FILE_DEVICE_XXX-Gerätetyp , die Gerätenummer, die Geräte-GUID und für ein Gerät, das partitioniert werden kann, die Partitionsnummer abzurufen, die vom Treiber einem Gerät zugewiesen wird, wenn das Gerät gestartet wird.
Syntax
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;
Member
Version
Die Version dieser Struktur. Wird auf sizeof(STORAGE_DEVICE_NUMBER_EX) festgelegt.
Size
Gesamtgröße dieser Struktur, einschließlich aller zusätzlichen Daten. Derzeit wird dies immer auf sizeof(STORAGE_DEVICE_NUMBER_EX) festgelegt.
Flags
Dies kann eine Kombination aus STORAGE_DEVICE_FLAGS_XXX Flags sein, die weitere Informationen zu den Membern dieser Struktur bereitstellen. Weitere Informationen finden Sie im Abschnitt Hinweise.
DeviceType
Gibt eine der systemdefinierten FILE_DEVICE_XXX-Konstanten an, die den Gerätetyp (z. B. FILE_DEVICE_DISK) oder einen vom Hersteller definierten Wert für einen neuen Gerätetyp angeben. Diese IOCTL wird nur für Datenträgergeräte unterstützt. Weitere Informationen finden Sie unter Angeben von Gerätetypen.
DeviceNumber
Gibt die Nummer dieses Geräts an. Dieser Wert wird auf 0xFFFFFFFF (-1) für die Datenträger festgelegt, die die physischen Pfade eines MPIO-Datenträgers darstellen.
DeviceGuid
Eine global eindeutige Identifikationsnummer für dieses Gerät. Eine GUID von {0} gibt an, dass keine GUID generiert werden konnte. Die GUID basiert auf Hardwareinformationen, die sich bei Firmwareupdates nicht ändern. für instance kann die Seriennummer verwendet werden, um die GUID zu bilden, aber nicht die Firmwarerevision.
PartitionNumber
Gibt an, ob die Partitionsnummer des Geräts in diesem Member zurückgegeben wird, wenn das Gerät partitioniert werden kann. Andernfalls wird -1 zurückgegeben.
Hinweise
Die IOCTL_STORAGE_GET_DEVICE_NUMBER_EX-Anforderung wird in der Regel von einem fehlertoleranten Datenträgertreiber ausgegeben.
Wenn ein Gerät einen global eindeutigen Bezeichner verfügbar macht, verwendet der Speichertreiber diesen Bezeichner im Allgemeinen, um die GUID zu bilden. Andernfalls kombiniert der Speichertreiber die Hersteller-ID, die Produkt-ID und die Seriennummer des Geräts, um die GUID zu erstellen.
Wenn ein Speichertreiber zwei Geräte mit den gleichen Hardwareinformationen erkennt (was ein Hinweis auf ein Problem mit dem Gerät ist), generiert der Treiber eine zufällige GUID für eines der beiden Geräte. Wenn IOCTL_STORAGE_GET_DEVICE_NUMBER_EX für das Gerät mit der zufälligen GUID behandelt werden, fügt der Treiber dem Flags-Member dieser Struktur STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT hinzu.
Wenn ein Speichergerät keine identifizierenden Informationen bereitstellt, generiert der Treiber eine zufällige GUID und fügt dem Flags-Member dieser Struktur STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID hinzu.
Wenn das flag STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID festgelegt ist, wurde die deviceguid aus den Daten der SCSI-Seite83 erstellt. Wenn dieses Flag nicht festgelegt ist, bedeutet dies, dass es aus der Seriennummer erstellt oder zufällig generiert wurde.
Die Werte in der STORAGE_DEVICE_NUMBER_EX-Struktur bleiben garantiert unverändert, bis das System neu gestartet wird. Es ist nicht garantiert, dass sie übergreifend dauerhaft sind. Eine Geräte-GUID bleibt über Neustarts hinweg gleich. Eine zufällige GUID wird nicht beibehalten und ist nach einem Neustart nicht identisch.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddstor.h (einschließen von Ntddstor.h) |