次の方法で共有


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 を含む)

こちらもご覧ください

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX