Home | History | Annotate | Download | only in ddk
      1 #pragma once
      2 
      3 #ifdef __cplusplus
      4 extern "C" {
      5 #endif
      6 
      7 typedef enum _WMIENABLEDISABLECONTROL {
      8   WmiEventControl,
      9   WmiDataBlockControl
     10 } WMIENABLEDISABLECONTROL, *PWMIENABLEDISABLECONTROL;
     11 
     12 typedef enum _SYSCTL_IRP_DISPOSITION {
     13   IrpProcessed,
     14   IrpNotCompleted,
     15   IrpNotWmi,
     16   IrpForward
     17 } SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
     18 
     19 typedef struct _WMIGUIDREGINFO {
     20   LPCGUID Guid;
     21   ULONG InstanceCount;
     22   ULONG Flags;
     23 } WMIGUIDREGINFO, *PWMIGUIDREGINFO;
     24 
     25 typedef NTSTATUS
     26 (NTAPI *PWMI_QUERY_REGINFO) (
     27   IN OUT PDEVICE_OBJECT DeviceObject,
     28   IN OUT PULONG RegFlags,
     29   IN OUT PUNICODE_STRING InstanceName,
     30   OUT PUNICODE_STRING *RegistryPath OPTIONAL,
     31   IN OUT PUNICODE_STRING MofResourceName,
     32   OUT PDEVICE_OBJECT *Pdo OPTIONAL);
     33 
     34 typedef NTSTATUS
     35 (NTAPI *PWMI_FUNCTION_CONTROL) (
     36   IN OUT PDEVICE_OBJECT DeviceObject,
     37   IN OUT PIRP Irp,
     38   IN ULONG GuidIndex,
     39   IN WMIENABLEDISABLECONTROL Function,
     40   IN BOOLEAN Enable);
     41 
     42 typedef NTSTATUS
     43 (NTAPI *PWMI_QUERY_DATABLOCK) (
     44   IN OUT PDEVICE_OBJECT DeviceObject,
     45   IN OUT PIRP Irp,
     46   IN ULONG GuidIndex,
     47   IN ULONG InstanceIndex,
     48   IN ULONG InstanceCount,
     49   OUT PULONG InstanceLengthArray OPTIONAL,
     50   IN ULONG BufferAvail,
     51   OUT PUCHAR Buffer OPTIONAL);
     52 
     53 typedef NTSTATUS
     54 (NTAPI *PWMI_EXECUTE_METHOD) (
     55   IN OUT PDEVICE_OBJECT DeviceObject,
     56   IN OUT PIRP Irp,
     57   IN ULONG GuidIndex,
     58   IN ULONG InstanceIndex,
     59   IN ULONG MethodId,
     60   IN ULONG InBufferSize,
     61   IN ULONG OutBufferSize,
     62   IN OUT PUCHAR Buffer);
     63 
     64 typedef NTSTATUS
     65 (NTAPI *PWMI_SET_DATABLOCK) (
     66   IN OUT PDEVICE_OBJECT DeviceObject,
     67   IN OUT PIRP Irp,
     68   IN ULONG GuidIndex,
     69   IN ULONG InstanceIndex,
     70   IN ULONG BufferSize,
     71   IN PUCHAR Buffer);
     72 
     73 typedef NTSTATUS
     74 (NTAPI *PWMI_SET_DATAITEM) (
     75   IN OUT PDEVICE_OBJECT DeviceObject,
     76   IN OUT PIRP Irp,
     77   IN ULONG GuidIndex,
     78   IN ULONG InstanceIndex,
     79   IN ULONG DataItemId,
     80   IN ULONG BufferSize,
     81   IN PUCHAR Buffer);
     82 
     83 typedef struct _WMILIB_CONTEXT {
     84   ULONG GuidCount;
     85   PWMIGUIDREGINFO GuidList;
     86   PWMI_QUERY_REGINFO QueryWmiRegInfo;
     87   PWMI_QUERY_DATABLOCK QueryWmiDataBlock;
     88   PWMI_SET_DATABLOCK SetWmiDataBlock;
     89   PWMI_SET_DATAITEM SetWmiDataItem;
     90   PWMI_EXECUTE_METHOD ExecuteWmiMethod;
     91   PWMI_FUNCTION_CONTROL WmiFunctionControl;
     92 } WMILIB_CONTEXT, *PWMILIB_CONTEXT;
     93 
     94 #if (NTDDI_VERSION >= NTDDI_WIN2K)
     95 
     96 NTSTATUS
     97 NTAPI
     98 WmiCompleteRequest(
     99   IN PDEVICE_OBJECT DeviceObject,
    100   IN OUT PIRP Irp,
    101   IN NTSTATUS Status,
    102   IN ULONG BufferUsed,
    103   IN CCHAR PriorityBoost);
    104 
    105 NTSTATUS
    106 NTAPI
    107 WmiSystemControl(
    108   IN PWMILIB_CONTEXT WmiLibInfo,
    109   IN PDEVICE_OBJECT DeviceObject,
    110   IN OUT PIRP Irp,
    111   OUT PSYSCTL_IRP_DISPOSITION IrpDisposition);
    112 
    113 NTSTATUS
    114 NTAPI
    115 WmiFireEvent(
    116   IN PDEVICE_OBJECT DeviceObject,
    117   IN LPCGUID Guid,
    118   IN ULONG InstanceIndex,
    119   IN ULONG EventDataSize,
    120   IN PVOID EventData);
    121 
    122 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
    123 
    124 #ifdef __cplusplus
    125 }
    126 #endif
    127