CM_PARTIAL_RESOURCE_DESCRIPTOR構造体 (wdm.h)
CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体は、デバイスに割り当てられた 1 つの種類の 1 つ以上のシステム ハードウェア リソースを指定します。 この構造体は、CM_PARTIAL_RESOURCE_LIST 構造体内に配列を作成するために使用されます。
構文
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
UCHAR Type;
UCHAR ShareDisposition;
USHORT Flags;
union {
struct {
PHYSICAL_ADDRESS Start;
ULONG Length;
} Generic;
struct {
PHYSICAL_ADDRESS Start;
ULONG Length;
} Port;
struct {
#if ...
USHORT Level;
USHORT Group;
#else
ULONG Level;
#endif
ULONG Vector;
KAFFINITY Affinity;
} Interrupt;
struct {
union {
struct {
USHORT Group;
USHORT Reserved;
USHORT MessageCount;
ULONG Vector;
KAFFINITY Affinity;
} Raw;
struct {
#if ...
USHORT Level;
USHORT Group;
#else
ULONG Level;
#endif
ULONG Vector;
KAFFINITY Affinity;
} Translated;
} DUMMYUNIONNAME;
} MessageInterrupt;
struct {
PHYSICAL_ADDRESS Start;
ULONG Length;
} Memory;
struct {
ULONG Channel;
ULONG Port;
ULONG Reserved1;
} Dma;
struct {
ULONG Channel;
ULONG RequestLine;
UCHAR TransferWidth;
UCHAR Reserved1;
UCHAR Reserved2;
UCHAR Reserved3;
} DmaV3;
struct {
ULONG Data[3];
} DevicePrivate;
struct {
ULONG Start;
ULONG Length;
ULONG Reserved;
} BusNumber;
struct {
ULONG DataSize;
ULONG Reserved1;
ULONG Reserved2;
} DeviceSpecificData;
struct {
PHYSICAL_ADDRESS Start;
ULONG Length40;
} Memory40;
struct {
PHYSICAL_ADDRESS Start;
ULONG Length48;
} Memory48;
struct {
PHYSICAL_ADDRESS Start;
ULONG Length64;
} Memory64;
struct {
UCHAR Class;
UCHAR Type;
UCHAR Reserved1;
UCHAR Reserved2;
ULONG IdLowPart;
ULONG IdHighPart;
} Connection;
} u;
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
メンバーズ
Type
リソースの種類を識別します。 Type に指定された定数値は、次の表に示すように、u 共用体内のどの構造体が有効であるかを示します。 (これらのフラグは、特に記載されている場合を除き、CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体と IO_RESOURCE_DESCRIPTOR 構造体の両方で使用されます)。
型の値 | u メンバーのサブ構造体 |
---|---|
CmResourceTypePort | u.Port を |
CmResourceTypeInterrupt | u.Interrupt を |
CmResourceTypeMemory | u.Memory の |
CmResourceTypeMemoryLarge | u.Memory40、 |
CmResourceTypeDma | u.Dma (CM_RESOURCE_DMA_V3が設定されていない場合) または u.DmaV3 を |
CmResourceTypeDevicePrivate | u.DevicePrivate を |
CmResourceTypeBusNumber | u.BusNumber を |
CmResourceTypeDeviceSpecific | u.DeviceSpecificData(IO_RESOURCE_DESCRIPTOR内では使用されません。 |
CmResourceTypePcCardConfig | u.DevicePrivate を |
CmResourceTypeMfCardConfig | u.DevicePrivate を |
CmResourceTypeConnection | u.Connection を |
CmResourceTypeConfigData | システム用に予約されています。 |
CmResourceTypeNonArbitrated | 使用されません。 |
ShareDisposition
説明されているリソースを共有できるかどうかを示します。 有効な定数値を次の表に示します。
価値 | 意味 |
---|---|
cmResourceShareDeviceExclusive の |
デバイスでは、リソースを排他的に使用する必要があります。 |
cmResourceShareDriverExclusive の |
ドライバーでは、リソースを排他的に使用する必要があります。 WDM ドライバーではサポートされていません。 |
CmResourceShareShared | リソースは制限なく共有できます。 |
Flags
次の表に示すように、リソースの種類に固有のフラグ ビットが含まれています (フラグは、必要に応じてビットごとの ORed にすることができます)。
CmResourceTypePort リソースの種類
旗 | 定義 |
---|---|
CM_RESOURCE_PORT_MEMORY | デバイスはメモリ アドレス空間でアクセスされます。 |
CM_RESOURCE_PORT_IO | デバイスは I/O アドレス空間でアクセスされます。 |
CM_RESOURCE_PORT_10_BIT_DECODE | デバイスは、ポート アドレスの 10 ビットをデコードします。 |
CM_RESOURCE_PORT_12_BIT_DECODE | デバイスはポート アドレスの 12 ビットをデコードします。 |
CM_RESOURCE_PORT_16_BIT_DECODE | デバイスはポート アドレスの 16 ビットをデコードします。 |
CM_RESOURCE_PORT_POSITIVE_DECODE | デバイスでは、"減算デコード" の代わりに "正のデコード" が使用されます。 (一般に、PCI デバイスでは正のデコードが使用され、ISA バスでは減算デコードが使用されます)。 |
CM_RESOURCE_PORT_PASSIVE_DECODE | デバイスはポートをデコードしますが、ドライバーはそれを使用しません。 |
CM_RESOURCE_PORT_WINDOW_DECODE | システム用に予約されています。 |
CmResourceTypeInterrupt リソースの種類
旗 | 定義 |
---|---|
CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE | IRQ 行はレベル によってトリガーされます。 (通常、これらの IRQ は共有可能です)。 |
CM_RESOURCE_INTERRUPT_LATCHED | IRQ 行はエッジ によってトリガーされます。 |
CM_RESOURCE_INTERRUPT_MESSAGE | このフラグが設定されている場合、割り込みはメッセージシグナル割り込みになります。 それ以外の場合、割り込みは行ベースの割り込みになります。 |
CM_RESOURCE_INTERRUPT_POLICY_INCLUDED | CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体では使用されません。 このフラグの詳細については、IO_RESOURCE_DESCRIPTORを参照してください。 |
CM_RESOURCE_INTERRUPT_SECONDARY_INTERRUPT | 割り込みは 2 次割り込みです。 このフラグは、Windows 8 以降で設定できます。 セカンダリ割り込みの詳細については、「GPIO 割り込み」を参照してください。 |
CM_RESOURCE_INTERRUPT_WAKE_HINT | 割り込みは、低電力アイドル状態またはシステム スリープ状態からオペレーティング システムをウェイクアップできます。 このフラグは、Windows 8 以降で設定できます。 ウェイク機能の詳細については、「デバイスのウェイクアップを有効にする」を参照してください。 |
CmResourceTypeMemory リソースの種類
旗 | 定義 |
---|---|
CM_RESOURCE_MEMORY_READ_WRITE | メモリ範囲は読み取り可能で書き込み可能です。 |
CM_RESOURCE_MEMORY_READ_ONLY | メモリ範囲は読み取り専用です。 |
CM_RESOURCE_MEMORY_WRITE_ONLY | メモリ範囲は書き込み専用です。 |
CM_RESOURCE_MEMORY_PREFETCHABLE | メモリ範囲はプリフェッチ可能です。 |
CM_RESOURCE_MEMORY_COMBINEDWRITE | 結合書き込みキャッシュは許可されます。 |
CM_RESOURCE_MEMORY_24 | デバイスは 24 ビット アドレス指定を使用します。 |
CM_RESOURCE_MEMORY_CACHEABLE | メモリ範囲はキャッシュ可能です。 |
CmResourceTypeMemoryLarge リソースの種類
旗 | 定義 |
---|---|
CM_RESOURCE_MEMORY_LARGE_40 | メモリ記述子は、u.Memory40 メンバー |
CM_RESOURCE_MEMORY_LARGE_48 | メモリ記述子は、u.Memory48 メンバーを使用します。 |
CM_RESOURCE_MEMORY_LARGE_64 | メモリ記述子は、u.Memory64 メンバーを使用します。 |
CmResourceTypeDma リソースの種類
旗 | 定義 |
---|---|
CM_RESOURCE_DMA_8 | 8 ビット DMA チャネル |
CM_RESOURCE_DMA_16 | 16 ビット DMA チャネル |
CM_RESOURCE_DMA_32 | 32 ビット DMA チャネル |
CM_RESOURCE_DMA_8_AND_16 | 8 ビットおよび 16 ビット DMA チャネル |
CM_RESOURCE_DMA_BUS_MASTER | デバイスは、バス マスター DMA 転送をサポートしています。 |
CM_RESOURCE_DMA_TYPE_A | DMA を入力する |
CM_RESOURCE_DMA_TYPE_B | 型 B DMA |
CM_RESOURCE_DMA_TYPE_F | 「F DMA」と入力します |
CM_RESOURCE_DMA_V3 | Dma メンバーの代わりに、DmaV3 メンバーを使用します。 DmaV3 メンバーは、Windows 8 以降で使用できます。 |
u
u 共用体を定義します。
u.Generic
使用されません。
u.Generic.Start
使用されません。
u.Generic.Length
使用されません。
u.Port
次のメンバーを使用して、I/O ポート アドレスの範囲を指定します。
Windows Vista 以降のバージョンの Windows オペレーティング システムのドライバーは、RtlCmDecodeMemIoResource
u.Port.Start
生リソースの場合: デバイスに割り当てられた連続した I/O ポート アドレスの範囲の中で最も低いバス相対物理アドレスを指定します。
変換されたリソースの場合: デバイスに割り当てられた連続した I/O ポート アドレスの範囲の中で最も低いシステム物理アドレスを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Port.Length
割り当てられた I/O ポート アドレスの範囲の長さ (バイト単位)。
u.Interrupt
次のメンバーを使用して、割り込みベクトルとレベルを指定します。
u.Interrupt.Level
未加工リソースの場合: デバイスのバス固有 IRQL を指定します (プラットフォームとバスに適している場合)。
変換されたリソースの場合: デバイスに割り当てられた DIRQL を指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Interrupt.Group
プロセッサ グループ番号を指定します。 このメンバーは、コンパイル時にNT_PROCESSOR_GROUPS定数が定義されている場合にのみ存在します。 このメンバーは、Windows 7 以降のバージョンの Windows でのみ 0 以外にすることができます。
グループ と Affinity メンバーは、デバイスが割り込むことができるプロセッサを示すグループ アフィニティを指定します。 任意のグループのアフィニティを指定するには、グループ
u.Interrupt.Vector
生リソースの場合: デバイスのバス固有の割り込みベクトルを指定します (プラットフォームとバスに適している場合)。
変換されたリソースの場合: デバイスに割り当てられるグローバル システム割り込みベクトルを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Interrupt.Affinity
デバイスが割り込むことができるプロセッサのセットを示す、KAFFINITY型指定されたビットマスク値が含まれています。 デバイスが任意のプロセッサを中断できることを示すために、このメンバーは -1 に設定されます。
u.MessageInterrupt
メッセージ通知割り込みを指定します。 このメンバーは共用体です。 未加工リソース
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.MessageInterrupt.DUMMYUNIONNAME
DUMMYUNIONNAME 共用体
u.MessageInterrupt.DUMMYUNIONNAME.Raw
Raw 構造体を定義します。
u.MessageInterrupt.DUMMYUNIONNAME.Raw.Group
プロセッサ グループ番号を指定します。 このメンバーは、コンパイル時にNT_PROCESSOR_GROUPSが定義されている場合にのみ存在します。 このメンバーは、Windows 7 以降のバージョンの Windows でのみ 0 以外にすることができます。
グループ と Affinity メンバーは、デバイスの割り込みを受信できるプロセッサを示すグループ アフィニティを指定します。 任意のグループのアフィニティを指定するには、グループ
u.MessageInterrupt.DUMMYUNIONNAME.Raw.Reserved
使用されません。
u.MessageInterrupt.DUMMYUNIONNAME.Raw.MessageCount
このドライバーに対して生成されたメッセージ通知割り込みの数を指定します。
u.MessageInterrupt.DUMMYUNIONNAME.Raw.Vector
デバイスの割り込みベクトルを指定します。
u.MessageInterrupt.DUMMYUNIONNAME.Raw.Affinity
デバイスの割り込みを受信するプロセッサを示す KAFFINITY 値を指定します。
u.MessageInterrupt.DUMMYUNIONNAME.Translated
u.MessageInterrupt.Translated メンバーには、次のメンバーがあります。
u.MessageInterrupt.DUMMYUNIONNAME.Translated.Level
デバイスの割り込みに割り当てられたデバイス IRQL (DIRQL) を指定します。
デバイスの割り込みに割り当てられたデバイス IRQL (DIRQL) を指定します。
u.MessageInterrupt.DUMMYUNIONNAME.Translated.Group
プロセッサ グループ番号を指定します。 このメンバーは、コンパイル時にNT_PROCESSOR_GROUPSが定義されている場合にのみ存在します。 このメンバーは、Windows 7 以降のバージョンの Windows でのみ 0 以外にすることができます。 Translated.Group メンバーと Translated.Affinity メンバーは、デバイスの割り込みを受信できるプロセッサを示すグループ アフィニティを指定します。 任意のグループのアフィニティを指定するには、Translated.Group を ALL_PROCESSOR_GROUPS に設定します。
u.MessageInterrupt.DUMMYUNIONNAME.Translated.Vector
デバイスの割り込みベクトルを指定します。
u.MessageInterrupt.DUMMYUNIONNAME.Translated.Affinity
デバイスの割り込みを受信するプロセッサを識別する KAFFINITY 値を指定します。
u.Memory
次のメンバーを使用して、メモリ アドレスの範囲を指定します。
Windows Vista 以降のバージョンの Windows オペレーティング システムのドライバーは、RtlCmDecodeMemIoResource
u.Memory.Start
生リソースの場合: デバイスに割り当てられた連続するメモリ アドレスの範囲の中で最も低いバス相対物理アドレスを指定します。
変換されたリソースの場合: デバイスに割り当てられた連続するメモリ アドレスの範囲の中で最も低いシステム物理アドレスを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Memory.Length
割り当てられたメモリ アドレスの範囲の長さをバイト単位で指定します。
u.Dma
次のいずれかのメンバーを使用して、DMA 設定を指定します。
u.Dma.Channel
デバイスで使用できるシステム DMA コントローラー上の DMA チャネルの数を指定します。
u.Dma.Port
MCA タイプのデバイスが使用できる DMA ポートの数を指定します。
u.Dma.Reserved1
使用されません。
u.DmaV3
DMA_OPERATIONS 構造体のバージョン 3 を使用するドライバーの DMA 設定を指定します。
u.DmaV3 メンバーは、Windows 8 以降で使用できます。
u.DmaV3.Channel
デバイスに割り当てられるシステム DMA コントローラー上の DMA チャネルの数を指定します。
u.DmaV3.RequestLine
デバイスに割り当てられているシステム DMA コントローラーの要求行の番号を指定します。
u.DmaV3.TransferWidth
デバイスに割り当てられているシステム DMA コントローラーがデバイスとの間でデータを転送するために使用するデータ バスの幅をビット単位で指定します。
u.DmaV3.Reserved1
使用されません。
u.DmaV3.Reserved2
使用されません。
u.DmaV3.Reserved3
使用されません。
u.DevicePrivate
システム用に予約されています。
u.DevicePrivate.Data[3]
u.BusNumber
次のメンバーを使用して、バス番号を指定します。
u.BusNumber.Start
デバイスに割り当てられた連続するバスの範囲の最小番号を指定します。
u.BusNumber.Length
デバイスに割り当てられるバスの数を指定します。
u.BusNumber.Reserved
使用されません。
u.DeviceSpecificData
CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体の末尾に追加されるデバイス固有のプライベート構造体のサイズを指定します。 u.DeviceSpecificData
デバイス固有の構造の例としては、CM_FLOPPY_DEVICE_DATA、CM_KEYBOARD_DEVICE_DATA、CM_SCSI_DEVICE_DATA、CM_SERIAL_DEVICE_DATAなどがあります。
u.DeviceSpecificData.DataSize
CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体の末尾に追加されるバイト数を指定します。
u.DeviceSpecificData.Reserved1
使用されません。
u.DeviceSpecificData.Reserved2
使用されません。
u.Memory40
次のメンバーを使用して、メモリ アドレスの範囲を指定します。
u.Memory40 メンバーは、Windows Vista 以降のバージョンの Windows オペレーティング システムでのみ使用できます。 ドライバーは、このメンバー 直接更新するのではなく、RtlCmDecodeMemIoResource と RtlCmEncodeMemIoResource を使用して、このメンバーを読み取って更新する必要があります。
u.Memory40.Start
生リソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いバス相対物理アドレスを指定します。
変換されたリソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いシステム物理アドレスを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Memory40.Length40
割り当てられたメモリ アドレスの範囲の 40 ビット長の上位 32 ビットをバイト単位で格納します。 最小 8 ビットは 0 として扱われます。
u.Memory48
次のメンバーを使用して、メモリ アドレスの範囲を指定します。
u.Memory48 メンバーは、Windows Vista 以降のバージョンの Windows オペレーティング システムでのみ使用できます。 ドライバーは、このメンバー 直接更新するのではなく、RtlCmDecodeMemIoResource と RtlCmEncodeMemIoResource を使用して、このメンバーを読み取って更新する必要があります。
u.Memory48.Start
生リソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いバス相対物理アドレスを指定します。
変換されたリソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いシステム物理アドレスを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Memory48.Length48
割り当てられたメモリ アドレスの範囲の 48 ビット長の上位 32 ビットをバイト単位で格納します。 最下位の 16 ビットは 0 として扱われます。
u.Memory64
次のメンバーを使用して、メモリ アドレスの範囲を指定します。
u.Memory64 メンバーは、Windows Vista 以降のバージョンの Windows オペレーティング システムでのみ使用できます。 ドライバーは、このメンバー 直接更新するのではなく、RtlCmDecodeMemIoResource と RtlCmEncodeMemIoResource を使用して、このメンバーを読み取って更新する必要があります。
u.Memory64.Start
生リソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いバス相対物理アドレスを指定します。
変換されたリソースの場合: デバイスに割り当てられる連続するメモリ アドレスの範囲の中で最も低いシステム物理アドレスを指定します。
生のリソースと翻訳されたリソースの詳細については、「解説」を参照してください。
u.Memory64.Length64
割り当てられたメモリ アドレスの範囲の 64 ビット長の上位 32 ビットをバイト単位で格納します。 最下位 32 ビットは 0 として扱われます。
u.Connection
シリアル バス または シリアル ポートへの接続、または 1 つ以上の 汎用 I/O (GPIO) ピンへの接続を指定します。 次のメンバーは、この接続について説明します。
u.Connection メンバーは、Windows 8 以降で使用できます。
u.Connection.Class
接続クラスを指定します。 このメンバーは、次のいずれかの値に設定されます。
価値 | 意味 |
---|---|
CM_RESOURCE_CONNECTION_CLASS_GPIO | GPIO コントローラー上の 1 つ以上のピンを介してデバイスにアクセスします。 |
CM_RESOURCE_CONNECTION_CLASS_SERIAL | シリアル バスまたはシリアル ポートを介してデバイスにアクセスします。 |
u.Connection.Type
接続の種類を指定します。
クラス
価値 | 意味 |
---|---|
CM_RESOURCE_CONNECTION_TYPE_GPIO_IO | I/O 用に構成されている GPIO ピンを介してデバイスにアクセスします。 |
割り込み要求入力として構成された GPIO ピンには、通常の割り込みリソース (cmResourceTypeInterrupt
クラス
価値 | 意味 |
---|---|
CM_RESOURCE_CONNECTION_TYPE_SERIAL_I2C | デバイスは I2C バスに接続されています。 |
CM_RESOURCE_CONNECTION_TYPE_SERIAL_SPI | デバイスは SPI バスに接続されています。 |
CM_RESOURCE_CONNECTION_TYPE_SERIAL_UART | デバイスはシリアル ポートに接続されています。 |
u.Connection.Reserved1
使用されません。
u.Connection.Reserved2
使用されません。
u.Connection.IdLowPart
64 ビット接続 ID の下位 32 ビットを格納します。
u.Connection.IdHighPart
64 ビット接続 ID の上位 32 ビットを格納します。
備考
CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体は、使用されているルーチンまたは IRP に応じて、生の (バス相対) リソースまたは変換された (システム物理) リソースを記述できます。 詳細については、「未加工リソースと翻訳済みリソースの と
DeviceSpecificData ブロック
必要条件
要件 | 価値 |
---|---|
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h を含む) |
関連項目
IoGetDeviceProperty の
IoReportResourceForDetection の
RtlCmDecodeMemIoResource の
RtlCmEncodeMemIoResource を