WdfCmResourceListInsertDescriptor 函式 (wdfresource.h)
[僅適用於 KMDF]
WdfCmResourceListInsertDescriptor 方法會將資源描述元插入指定的資源清單中。
語法
NTSTATUS WdfCmResourceListInsertDescriptor(
[in] WDFCMRESLIST List,
[in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
[in] ULONG Index
);
參數
[in] List
架構資源清單物件的句柄,代表裝置的硬體資源清單清單。
[in] Descriptor
描述硬體資源的 CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的指標。
[in] Index
以零起始的值,做為 List 所指定之邏輯組態的索引。 若要將資源描述元新增至資源清單結尾,請指定WDF_INSERT_AT_END或 來自 WdfCmResourceListGetCount 的傳回值。
傳回值
如果作業成功,WdfCmResourceListInsertDescriptor 會傳回STATUS_SUCCESS。 否則,此方法可能會傳回下列其中一個值:
傳回碼 | Description |
---|---|
|
指定了無效的參數。 |
|
驅動程式不允許將描述項新增至 List 參數指定的邏輯組態。 例如,驅動程式無法修改其 EvtDevicePrepareHardware 或 EvtDeviceReleaseHardware 回呼函式收到的邏輯設定。 |
|
架構無法配置空間來儲存 描述元 參數所指向的描述項。 |
|
指定 Index 參數的值太大。 |
如果驅動程式提供無效的物件句柄,就會發生系統錯誤檢查。
備註
WdfCmResourceListInsertDescriptor 方法會將描述元指定的資源描述元插入 List 所指定的資源清單中,位於 Index 值所識別的資源描述元前面。
若要將資源描述元新增至資源清單結尾,請將 WDF_INSERT_AT_END或 WdfCmResourceListGetCount 的傳回值指定為 Index 值。 或者,使用 WdfCmResourceListAppendDescriptor 方法。
架構會將 CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的內容複製到內部記憶體中,因此呼叫 WdfCmResourceListInsertDescriptor 的驅動程式例程可以在本機配置結構。 驅動程式呼叫 WdfCmResourceListInsertDescriptor 之後,就可以重複使用CM_PARTIAL_RESOURCE_DESCRIPTOR結構。
如需資源清單的詳細資訊,請參閱 Framework-Based 驅動程式的硬體資源。
範例
下列程式代碼範例會將資源描述元新增至 EvtDeviceResourcesQuery 回呼函式所接收的資源清單結尾。
NTSTATUS
PdoEvtDeviceResourcesQuery(
IN WDFDEVICE Device,
IN WDFCMRESLIST Resources
)
{
CM_PARTIAL_RESOURCE_DESCRIPTOR newDescriptor;
...
newDescriptor.Type = CmResourceTypePort;
newDescriptor.ShareDisposition = CmResourceShareDeviceExclusive;
newDescriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
newDescriptor.u.Port.Length = 1;
newDescriptor.u.Port.Start = 0;
status = WdfCmResourceListInsertDescriptor(
Resources,
&newDescriptor,
WDF_INSERT_AT_END
);
...
}
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
標頭 | wdfresource.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |