共用方式為


IoWMIExecuteMethod 函式 (wdm.h)

IoWMIExecuteMethod 例程會在指定的 WMI 數據區塊實例上執行 WMI 類別方法。

語法

NTSTATUS IoWMIExecuteMethod(
  [in]      PVOID           DataBlockObject,
  [in]      PUNICODE_STRING InstanceName,
  [in]      ULONG           MethodId,
  [in]      ULONG           InBufferSize,
  [in, out] PULONG          OutBufferSize,
  [in, out] PUCHAR          InOutBuffer
);

參數

[in] DataBlockObject

WMI 數據區塊物件的指標。 呼叫端會使用 IoWMIOpenBlock開啟WMI類別的數據區塊物件。 對象必須以WMIGUID_EXECUTE訪問許可權開啟。

[in] InstanceName

指定數據區塊實例的名稱。 這個值會對應至 區塊的 InstanceName 屬性值。

[in] MethodId

指定要設定之方法的方法項目標識碼。 此參數的值會對應至 方法 的 WmiMethodId 限定符中所宣告的值。

[in] InBufferSize

指定 方法輸入數據的大小,以位元組為單位。 實際的輸入數據會傳入 InOutBuffer 參數所指向的緩衝區中。

[in, out] OutBufferSize

ULONG 的指標,指定 方法所輸出數據的預期大小、位元組。 實際輸出數據會在 InOutBuffer 參數所指向的緩衝區中傳回。 如果例程成功,它會更新記憶體位置,以指定實際儲存在 InOutBuffer 中的位元元組數目。 如果例程因STATUS_BUFFER_TOO_SMALL而失敗,它會傳回傳回數據所需的位元元組數目。

[in, out] InOutBuffer

呼叫端傳遞 WMI 方法輸入數據的緩衝區指標,並接收 WMI 方法的輸出數據。

傳回值

例程會傳回NTSTATUS程式代碼。 可能的傳回值包括:

傳回碼 Description
STATUS_SUCCESS
作業成功。 例程會傳回 InOutBuffer 參數所指向之緩衝區中的 WMI 數據。 例程也會傳回 OutBufferSize 參數所指向記憶體位置中傳回數據的大小,以位元組為單位。
STATUS_WMI_GUID_NOT_FOUND
沒有驅動程式會實作 WMI 類別。
STATUS_WMI_INSTANCE_NOT_FOUND
沒有驅動程式會實作 WMI 類別的實例, 其 InstanceName 屬性等於 InstanceName 參數中指定的值。
STATUS_WMI_ITEMID_NOT_FOUND
WMI 類別不包含方法標識碼等於 MethodId 值的方法。
STATUS_BUFFER_TOO_SMALL
OutBuffer 參數中呼叫端傳遞的緩衝區太小。 例程會傳回 InOutBufferSize 參數所指向記憶體位置中所需的緩衝區大小。
STATUS_WMI_GUID_DISCONNECTED
WMI GUID 已無法使用或從未提供。

備註

IoWMIExecuteMethod 會決定哪些驅動程式可能支援指定的 WMI 類別和實例名稱。 它會對每個這類驅動程式發出 IRP_MN_EXECUTE_METHOD 要求。 匯出具有相符 InstanceName 屬性之數據區塊實例的驅動程式,然後執行指定的 WMI 方法。

規格需求

需求
最低支援的用戶端 可在 Windows XP 和更新版本的 Windows 作業系統中使用。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

IRP_MN_EXECUTE_METHOD

IoWMIOpenBlock