STORAGE_DEVICE_NUMBER_EX 構造体 (ntddstor.h)
STORAGE_DEVICE_NUMBER_EX構造体は 、IOCTL_STORAGE_GET_DEVICE_NUMBER_EX 要求と組み合わせて使用して、FILE_DEVICE_XXX デバイスの種類、デバイス番号、デバイス GUID、およびパーティション分割できるデバイスの場合、デバイスの起動時にドライバーによってデバイスに割り当てられたパーティション番号を取得します。
構文
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;
メンバー
Version
この構造体のバージョン。 sizeof(STORAGE_DEVICE_NUMBER_EX) に設定されます。
Size
追加データを含む、この構造体の合計サイズ。 現時点では、これは常に sizeof(STORAGE_DEVICE_NUMBER_EX) に設定されます。
Flags
この構造体のメンバーに関する詳細情報を提供するSTORAGE_DEVICE_FLAGS_XXXフラグの組み合わせにすることができます。 詳細については、「解説」を参照してください。
DeviceType
デバイスの種類 (FILE_DEVICE_DISK など) を示すシステム定義のFILE_DEVICE_XXX 定数、または新しい種類のデバイスのベンダー定義値のいずれかを指定します。 この IOCTL は、ディスク デバイスでのみサポートされます。 詳細については、「 デバイスの種類の指定」を参照してください。
DeviceNumber
このデバイスの数を示します。 この値は、MPIO ディスクの物理パスを表すディスクの0xFFFFFFFF (-1) に設定されます。
DeviceGuid
このデバイスのグローバルに一意の識別番号。 の GUID {0} は、GUID を生成できなかったことを示します。 GUID は、ファームウェアの更新プログラムで変更されないハードウェア情報に基づいています。たとえば、シリアル番号を使用して GUID を形成できますが、ファームウェアのリビジョンは使用できません。
PartitionNumber
デバイスをパーティション分割できる場合に、このメンバーでデバイスのパーティション番号が返されることを示します。 それ以外の場合は、-1 が返されます。
注釈
IOCTL_STORAGE_GET_DEVICE_NUMBER_EX要求は、通常、フォールト トレラント ディスク ドライバーによって発行されます。
一般に、デバイスがグローバルに一意の識別子を公開している場合、ストレージ ドライバーはその識別子を使用して GUID を形成します。 それ以外の場合、ストレージ ドライバーはデバイスのベンダー ID、製品 ID、シリアル番号を組み合わせて GUID を作成します。
ストレージ ドライバーが同じハードウェア情報を持つ 2 つのデバイスを検出した場合 (デバイスの問題を示します)、ドライバーは 2 つのデバイスの 1 つに対してランダムな GUID を生成します。 ランダム GUID を使用してデバイスのIOCTL_STORAGE_GET_DEVICE_NUMBER_EXを処理する場合、ドライバーはこの構造体の Flags メンバーにSTORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICTを追加します。
ストレージ デバイスが識別情報を提供しない場合、ドライバーはランダムな GUID を生成し、この構造体の Flags メンバーにSTORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWIDを追加します。
STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID フラグが設定されている場合、deviceguid は SCSI ページ 83 データから作成されました。 このフラグが設定されていない場合は、シリアル番号から作成されたか、ランダムに生成されたことを意味します。
STORAGE_DEVICE_NUMBER_EX 構造体の値は、システムが再起動されるまで変更されません。 これらは、ブート間で永続的であるとは限りません。 デバイス GUID は、再起動しても変わりません。 ランダム GUID は永続化されず、再起動後は同じになりません。
要件
要件 | 値 |
---|---|
Header | ntddstor.h (Ntddstor.h を含む) |