Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
wmimap.h
Abstract:
ACPI to WMI mapping layer
Author:
Alan Warwick
Environment:
Kernel mode
Revision History:
--*/
#if DBG
extern ULONG WmiAcpiDebug; #define WmiAcpiPrint(l,m) if(l & WmiAcpiDebug) DbgPrint m
#else
#define WmiAcpiPrint(l,m)
#endif
#define WmiAcpiError 0x00000001
#define WmiAcpiWarning 0x00000002
#define WmiAcpiBasicTrace 0x00000004
#define WmiAcpiQueryTrace 0x00000010
#define WmiAcpiSetTrace 0x00000020
#define WmiAcpiMethodTrace 0x00000040
#define WmiAcpiEventTrace 0x00000080
#define WmiAcpiFncCtlTrace 0x00000100
#define WmiAcpiRegInfoTrace 0x00000200
#define WmiAcpiEvalTrace 0x00001000
#define ACPI_EVAL_OUTPUT_FUDGE sizeof(ACPI_EVAL_OUTPUT_BUFFER)
#define WmiAcpiPoolTag 'AimW'
typedef struct { GUID Guid; union { CHAR ObjectId[2]; struct { UCHAR NotificationValue; UCHAR Reserved; } NotifyId; }; USHORT Flags; } WMIACPIMAPINFO, *PWMIACPIMAPINFO;
#define WmiAcpiMethodToMethodAsUlong(c1, c2, c3, c4) \
((ULONG)( c1 | (c2 << 8) | (c3 << 16) | (c4 << 24))) #define _WDGMethodAsULONG (WmiAcpiMethodToMethodAsUlong('_','W','D','G'))
#define _WEDMethodAsULONG (WmiAcpiMethodToMethodAsUlong('_','W','E','D'))
typedef struct { GUID Guid; // Guid that names data block
union { CHAR ObjectId[2]; // 2 character ACPI id for Data Blocks and Methods
struct { UCHAR NotificationValue; // Byte value passed by event handler control method
UCHAR Reserved[1]; } NotifyId; }; UCHAR InstanceCount; UCHAR Flags; } WMIACPIGUIDMAP, *PWMIACPIGUIDMAP;
// Set this flag if the WCxx control method should be run to whenever
// the first data consumer is interested in collecting the data block
// and whenever the last data consumer is no longer interested.
#define WMIACPI_REGFLAG_EXPENSIVE 0x1
// Set this flag if the guid represents a set of WMI method calls and
// not a data block
#define WMIACPI_REGFLAG_METHOD 0x2
// Set this flag if the data block is wholly composed of a string
// and should be translated from ASCIZ to UNICODE in returning queries
// and from UNICODE to ASCIZ when
// passing sets
#define WMIACPI_REGFLAG_STRING 0x04
// Set this flag if the guid maps to an event rather than a data block
// or method
#define WMIACPI_REGFLAG_EVENT 0x08
typedef struct { WORK_QUEUE_ITEM WorkQueueItem; PVOID CallerContext; PWORKER_THREAD_ROUTINE CallerWorkItemRoutine; PDEVICE_OBJECT DeviceObject; ULONG Status; PUCHAR OutBuffer; ULONG OutBufferSize; } IRP_CONTEXT_BLOCK, *PIRP_CONTEXT_BLOCK;
//
// This defines the maximum size for the data returned from the _WED method
// and thus the maximum size of the data associated with an event
#define _WEDBufferSize 512
//
// Device extension for WMI acpi mapping devices
typedef struct { PDEVICE_OBJECT LowerDeviceObject; PDEVICE_OBJECT LowerPDO; ULONG GuidMapCount; PWMIACPIMAPINFO WmiAcpiMapInfo; ULONG Flags; WMILIB_CONTEXT WmilibContext; ACPI_INTERFACE_STANDARD WmiAcpiDirectInterface;
BOOLEAN AcpiNotificationEnabled; } DEVICE_EXTENSION, *PDEVICE_EXTENSION;
//
// If this flag is set that means that the device has been removed from the
// system and any requests sent to it should be rejected. The only memory
// that can be relied upon is the DeviceExtension, but nothing that the
// device extension points to.
#define DEVFLAG_REMOVED 0x00000001
//
// If this flag is set then the device has successfully registered with WMI
#define DEVFLAG_WMIREGED 0x00000002
|