ioWMIQuerySingleInstanceMultiple 函式 (wdm.h)
IoWMIQuerySingleInstanceMultiple 例程會傳回所有使用指定實例名稱實作指定 WMI 類別的 WMI 數據區塊實例。
語法
NTSTATUS IoWMIQuerySingleInstanceMultiple(
[in] PVOID *DataBlockObjectList,
[in] PUNICODE_STRING InstanceNames,
[in] ULONG ObjectCount,
[in, out] PULONG InOutBufferSize,
[out, optional] PVOID OutBuffer
);
參數
[in] DataBlockObjectList
WMI 數據區塊物件的指標陣列指標指標。 呼叫端會使用 IoWMIOpenBlock 例程開啟每個WMI類別的數據區塊物件。 每個物件都必須以WMIGUID_QUERY訪問許可權開啟。
[in] InstanceNames
包含實例名稱 之UNICODE_STRING 結構的陣列指標。 陣列中第 n個實例名稱會對應至 DataBlockObjectList 參數所指向之陣列中第 n個 WMI 類別的 InstanceName 屬性值。
[in] ObjectCount
指定 在 DataBlockObjectList 和 InstanceNames 參數中傳遞之陣列中的項目數。
[in, out] InOutBufferSize
記憶體位置的指標,指定 在 OutBuffer 參數中傳遞之緩衝區的大小。 如果例程成功,它會更新記憶體位置,以指定實際儲存在 OutBuffer 中的位元元組數目。 如果例程因STATUS_BUFFER_TOO_SMALL而失敗,它會傳回傳回數據所需的位元元組數目。
[out, optional] OutBuffer
例程傳回 WMI 數據的緩衝區指標。 例程會傳回一連串可變大小的 WNODE_SINGLE_INSTANCE 結構,每個數據區塊實例各一個。 每個WNODE_SINGLE_INSTANCE結構的 WnodeHeader.Linkage 成員都包含從目前WNODE_SINGLE_INSTANCE的開頭到下一個WNODE_SINGLE_INSTANCE開頭的位移。 鏈結中最後一個區塊的 WnodeHeader.Linkage 設定為零。 每個相異數據區塊實例都會對應至單一相符的 WMI 類別和實例名稱。 OutBuffer 必須指向從非分頁集區配置的緩衝區。
傳回值
例程會傳回NTSTATUS程式代碼。 可能的傳回值包括:
傳回碼 | Description |
---|---|
|
作業成功。 例程會傳回 OutBuffer 參數所指向之緩衝區中的 WMI 數據。 例程也會傳回 InOutBufferSize 參數所指向之內存位置中傳回數據的大小,以位元組為單位。 |
|
OutBuffer 參數中呼叫端傳遞的緩衝區太小。 例程會傳回 InOutBufferSize 參數所指向之內存位置中所需的緩衝區大小。 |
備註
IoWMIQuerySingleInstanceMultiple 會決定哪些驅動程式可能支援指定的 WMI 類別和實例名稱,並發出每個這類驅動程式 的IRP_MN_QUERY_SINGLE_INSTANCE 要求。 每個匯出具有相符 InstanceName 屬性之數據區塊實例的驅動程式都會傳回適當的數據。
如果沒有驅動程序實作任何指定的 WMI 類別和實例名稱,則例程會傳回STATUS_SUCCESS。 它也會在 InOutBufferSize 參數指向的記憶體位置中傳回零的值。
若要查詢單一 WMI 類別和實例名稱,請使用 IoWMIQuerySingleInstance 例程。 驅動程式可以使用 IoWMISetSingleInstance 例程來更新類別實例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows XP 和更新版本的 Windows 作業系統。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |