wmilib.h 3.1 KB

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