共用方式為


WmiSystemControl 函式 (wmilib.h)

WmiSystemControl 例程是使用 WMI 連結庫支援例程來處理 WMI IRP 的驅動程式分派例程。

語法

NTSTATUS WmiSystemControl(
  [in]      PWMILIB_CONTEXT         WmiLibInfo,
  [in]      PDEVICE_OBJECT          DeviceObject,
  [in, out] PIRP                    Irp,
  [out]     PSYSCTL_IRP_DISPOSITION IrpDisposition
);

參數

[in] WmiLibInfo

WMILIB_CONTEXT 結構的指標,其中包含驅動程式數據區塊和事件區塊的註冊資訊,並定義驅動程式 WMI 連結庫回呼例程的進入點。

[in] DeviceObject

驅動程式 DEVICE_OBJECT的指標。

[in, out] Irp

IRP 的指標。

[out] IrpDisposition

別SYSCTL_IRP_DISPOSITION 列舉值的指標,指出 IRP 的處理方式。 WmiSystemControl 一律會設定此值,即使它傳回非成功的 NTSTATUS 程式代碼也一樣。

SYSCTL_IRP_DISPOSITION 是 Wmilib.h 中的列舉,且包含下列值:

IrpProcessed

IRP 已處理且可能已完成。 如果 WmiSystemControl 所呼叫的驅動程式 DpWmiXxx 例程未完成 IRP,驅動程式必須呼叫 WmiCompleteRequest,才能在 WmiSystemControl 傳回之後完成 IRP。

IrpNotCompleted

IRP 已處理但未完成,可能是因為 WMI 偵測到錯誤,並使用適當的錯誤碼設定 IRP,或處理 IRP_MN_REGINFOIRP_MN_REGINFO_EX 要求。 驅動程式必須藉由呼叫 IoCompleteRequest來完成IRP。

IrpNotWmi

IRP 不是 WMI 要求 (,也就是說,WMI 無法辨識 IRP 的次要程式代碼) 。 如果驅動程式使用此 IRP_MN_XXX 處理IRP_MJ_SYSTEM_CONTROL要求,它應該處理 IRP;否則,驅動程式應該會將 IRP 轉送到下一個較低的驅動程式。 如果驅動程式是最低層級的驅動程式,則必須完成 IRP。

IrpForward

IRP 是以另一個裝置對象為目標 (,也就是 IRP 中 Parameters.WMI.ProviderId 上的裝置物件指標不符合驅動程式呼叫 IoWMIRegistrationControl 所傳遞的指標) 。 驅動程式必須將 IRP 轉送至下一個較低的驅動程式。 如果驅動程式是最低層級的驅動程式,則必須完成 IRP。

傳回值

WmiSystemControl 會傳回STATUS_SUCCESS或下列其中一個錯誤碼:

備註

當驅動程式收到具有 WMI IRP 次要程式代碼的IRP_MJ_SYSTEM_CONTROL要求時,它會使用驅動程式WMILIB_CONTEXT結構的指標、其裝置物件的指標,以及 IRP 的指標呼叫 WmiSystemControlWMILIB_CONTEXT 結構包含驅動程序數據區塊和事件區塊的註冊資訊,並定義其WMI連結庫回呼例程的進入點。

WmiSystemControl 會確認 IRP 是 WMI 要求,並判斷要求指定的區塊是否對驅動程式有效。 如果是,它會呼叫驅動程式WMILIB_CONTEXT結構中適當的 DpWmiXxx 進入點來處理 IRP。 WMI 會在 IRQL PASSIVE_LEVEL呼叫驅動程式 的 DpWmiXxx 例程時執行。

當驅動程式將 IRP_MJ_SYSTEM_CONTROL 要求轉送至下一個較低驅動程式時,必須在 IRQL PASSIVE_LEVEL 上執行。

規格需求

需求
最低支援的用戶端 可在 Windows 2000 和更新版本的 Windows 中使用。
目標平台 Universal
標頭 wmilib.h (包含 Wmilib.h)
程式庫 Wmilib.lib
IRQL PASSIVE_LEVEL (请参阅一节)
DDI 合規性規則 WmiComplete (wdm)

另請參閱

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

IRP_MJ_SYSTEM_CONTROL

IRP_MN_REGINFO_EX

IoCompleteRequest

WMILIB_CONTEXT