Freigeben über


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)

Weitere Informationen

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX