共用方式為


CM_PARTIAL_RESOURCE_DESCRIPTOR結構 (wdm.h)

CM_PARTIAL_RESOURCE_DESCRIPTOR 結構會指定指派給裝置的單一類型一或多個系統硬體資源。 這個結構可用來在 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_DESCRIPTORIO_RESOURCE_DESCRIPTOR 結構中使用,但未指出。

類型值 u 成員子結構
CmResourceTypePort u.Port
CmResourceTypeInterrupt u.Interruptu.MessageInterrupt。如果已設定 旗標 的CM_RESOURCE_INTERRUPT_MESSAGE旗標,請使用 u.MessageInterrupt;否則,請使用 u.Interrupt
CmResourceTypeMemory u.Memory
CmResourceTypeMemoryLarge u.Memory40u.Memory48u.Memory64之一。旗標 成員中設定的CM_RESOURCE_MEMORY_LARGE_XXX 旗標會決定使用哪一個結構。
CmResourceTypeDma u.Dma(如果未設定CM_RESOURCE_DMA_V3),或 u.DmaV3(如果已設定CM_RESOURCE_DMA_V3旗標)
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 驅動程式不支援。
CmResourceShared 資源可以不受限制地共用。

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 中斷是次要中斷。 您可以從 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 輸入 A DMA
CM_RESOURCE_DMA_TYPE_B 類型 B DMA
CM_RESOURCE_DMA_TYPE_F 類型 F DMA
CM_RESOURCE_DMA_V3 使用 DmaV3 成員,而不是 Dma 成員。 從 Windows 8 開始,DmaV3 成員即可使用。

u

定義 u 等位

u.Generic

未使用。

u.Generic.Start

未使用。

u.Generic.Length

未使用。

u.Port

使用下列成員指定 I/O 連接埠地址的範圍。

適用於 Windows Vista 和更新版本的 Windows 作業系統驅動程式可以使用 RtlCmDecodeMemIoResourceRtlCmEncodeMemIoResource 來讀取和更新 u.Port 成員,而不是直接更新它。

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 上非零。 GroupAffinity 成員一起指定群組親和性,指出裝置可以中斷的處理器。 若要指定任何群組的親和性,請將 [群組] 設定為 [ALL_PROCESSOR_GROUPS]。

u.Interrupt.Vector

針對原始資源:指定裝置的總線特定插斷向量(適用於平臺和總線)。

針對翻譯的資源:指定指派給裝置的全域系統中斷向量。

如需原始和翻譯資源的詳細資訊,請參閱。

u.Interrupt.Affinity

包含 KAFFINITY型別位掩碼值,指出裝置可以中斷的處理器集。 若要指出裝置可以中斷任何處理器,此成員會設定為 -1。

u.MessageInterrupt

指定訊息訊號中斷。 這個成員是聯集。 針對原始資源使用 u.MessageInterrupt.Raw,並 u.MessageInterrupt.Translated 轉譯資源。 這種類型的資源只會在 Windows Vista 和更新版本的 Windows 作業系統上傳回。

如需原始和翻譯資源的詳細資訊,請參閱。

u.MessageInterrupt.DUMMYUNIONNAME

定義 DUMMYUNIONNAME 等位。

u.MessageInterrupt.DUMMYUNIONNAME.Raw

定義 Raw 結構。

u.MessageInterrupt.DUMMYUNIONNAME.Raw.Group

指定處理器組號。 只有在編譯時期定義NT_PROCESSOR_GROUPS,這個成員才會存在。 此成員只能在 Windows 7 和更新版本的 Windows 上非零。 GroupAffinity 成員一起指定群組親和性,指出哪些處理器可以接收裝置的中斷。 若要指定任何群組的親和性,請將 [群組] 設定為 [ALL_PROCESSOR_GROUPS]。

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 上非零。 Translated.GroupTranslated.Affinity 成員一起指定群組親和性,指出哪些處理器可以接收裝置的中斷。 若要指定任何群組的親和性,請將 Translated.Group 設定為 ALL_PROCESSOR_GROUPS。

u.MessageInterrupt.DUMMYUNIONNAME.Translated.Vector

指定裝置的插斷向量。

u.MessageInterrupt.DUMMYUNIONNAME.Translated.Affinity

指定 KAFFINITY 值,識別接收裝置中斷的處理器。

u.Memory

使用下列成員指定記憶體位址的範圍。

Windows Vista 和更新版本的 Windows 操作系統驅動程式可以使用 RtlCmDecodeMemIoResourceRtlCmEncodeMemIoResource 來讀取和更新 u.Memory 成員,而不是直接更新它。

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.DeviceSpecificDataCM_PARTIAL_RESOURCE_DESCRIPTOR 結構必須是 CM_PARTIAL_RESOURCE_LIST 陣列中的最後一個結構。

裝置特定結構的範例包括 CM_FLOPPY_DEVICE_DATACM_KEYBOARD_DEVICE_DATACM_SCSI_DEVICE_DATACM_SERIAL_DEVICE_DATA

u.DeviceSpecificData.DataSize

指定附加至 CM_PARTIAL_RESOURCE_DESCRIPTOR 結構結尾的位元元組數目。

u.DeviceSpecificData.Reserved1

未使用。

u.DeviceSpecificData.Reserved2

未使用。

u.Memory40

使用下列成員指定記憶體位址的範圍。

u.Memory40 成員僅適用於 Windows Vista 和更新版本的 Windows 操作系統。 驅動程式必須使用 RtlCmDecodeMemIoResourceRtlCmEncodeMemIoResource 來讀取和更新此成員,而不是直接更新它。

u.Memory40.Start

針對原始資源:指定配置給裝置之連續記憶體位址範圍之最低總線相對實體位址。

針對轉譯的資源:指定配置給裝置之連續記憶體位址範圍之最低系統實體位址。

如需原始和翻譯資源的詳細資訊,請參閱。

u.Memory40.Length40

包含配置記憶體位址範圍的 40 位長度高 32 位,以位元組為單位。 最低 8 位會被視為零。

u.Memory48

使用下列成員指定記憶體位址的範圍。

u.Memory48 成員僅適用於 Windows Vista 和更新版本的 Windows 作業系統。 驅動程式必須使用 RtlCmDecodeMemIoResourceRtlCmEncodeMemIoResource 來讀取和更新此成員,而不是直接更新它。

u.Memory48.Start

針對原始資源:指定配置給裝置之連續記憶體位址範圍之最低總線相對實體位址。

針對轉譯的資源:指定配置給裝置之連續記憶體位址範圍之最低系統實體位址。

如需原始和翻譯資源的詳細資訊,請參閱。

u.Memory48.Length48

包含配置記憶體位址範圍的48位長度,以位元組為單位的高32位。 最低16位會視為零。

u.Memory64

使用下列成員指定記憶體位址的範圍。

u.Memory64 成員僅適用於 Windows Vista 和更新版本的 Windows 作業系統。 驅動程式必須使用 RtlCmDecodeMemIoResourceRtlCmEncodeMemIoResource 來讀取和更新此成員,而不是直接更新它。

u.Memory64.Start

針對原始資源:指定配置給裝置之連續記憶體位址範圍之最低總線相對實體位址。

針對轉譯的資源:指定配置給裝置之連續記憶體位址範圍之最低系統實體位址。

如需原始和翻譯資源的詳細資訊,請參閱。

u.Memory64.Length64

包含配置記憶體位址範圍的64位長度高32位,以位元組為單位。 最低 32 位會被視為零。

u.Connection

指定 序列總線連接序列埠,或一組 一或多個一般用途 I/O (GPIO) 針腳的連線。 下列成員描述此連線。

u.Connection 成員可從 Windows 8 開始使用。

u.Connection.Class

指定連接類別。 這個成員會設定為下列其中一個值:

價值 意義
CM_RESOURCE_CONNECTION_CLASS_GPIO 透過 GPIO 控制器上的一或多個針腳存取裝置。
CM_RESOURCE_CONNECTION_CLASS_SERIAL 透過序列總線或序列埠存取裝置。

u.Connection.Type

指定連接類型。

如果 Class = CM_RESOURCE_CONNECTION_CLASS_GPIO,Type 會設定為下列值:

價值 意義
CM_RESOURCE_CONNECTION_TYPE_GPIO_IO 透過針對 I/O 設定的 GPIO 針腳存取裝置。

設定為插斷要求輸入的 GPIO 針腳會存取為一般中斷資源(CmResourceTypeInterrupt)。

如果 Class = CM_RESOURCE_CONNECTION_CLASS_SERIAL,Type 會設定為下列其中一個值:

價值 意義
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 位連線識別碼的較低 32 位。

u.Connection.IdHighPart

包含 64 位連線識別碼的上層 32 位。

言論

CM_PARTIAL_RESOURCE_DESCRIPTOR 結構可以根據所使用的例程或 IRP,來描述原始(總線相對)資源或已翻譯的(系統實體)資源。 如需詳細資訊,請參閱 原始和翻譯的資源IRP_MN_START_DEVICE

只有 1DeviceSpecificData 區塊才能 。 它必須位於完整描述元區塊中所有資源描述項的結尾。

要求

要求 價值
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h)

另請參閱

CM_FLOPPY_DEVICE_DATA

CM_FULL_RESOURCE_DESCRIPTOR

CM_KEYBOARD_DEVICE_DATA

CM_PARTIAL_RESOURCE_LIST

CM_RESOURCE_LIST

CM_SCSI_DEVICE_DATA

CM_SERIAL_DEVICE_DATA

DMA_OPERATIONS

IO_RESOURCE_DESCRIPTOR

IRP_MN_START_DEVICE

IoConnectInterrupt

IoGetDeviceProperty

IoReportResourceForDetection

KAFFINITY

RtlCmDecodeMemIoResource

RtlCmEncodeMemIoResource