📄 jwawmistr.pas
字号:
// data
// On Return: Size of output data, 0 if no output
// data
VariableData: PUCHAR;
// instance names and padding so data value begins on 8 byte boundry
// data item value
end;
{$EXTERNALSYM tagWNODE_METHOD_ITEM}
WNODE_METHOD_ITEM = tagWNODE_METHOD_ITEM;
{$EXTERNALSYM WNODE_METHOD_ITEM}
TWNodeMethodItem = WNODE_METHOD_ITEM;
PWNodeMethodItem = PWNODE_METHOD_ITEM;
PWNODE_EVENT_ITEM = ^WNODE_EVENT_ITEM;
{$EXTERNALSYM PWNODE_EVENT_ITEM}
tagWNODE_EVENT_ITEM = record
WnodeHeader: WNODE_HEADER;
// Different data could be here depending upon the flags set in the
// WNODE_HEADER above. If the WNODE_FLAG_ALL_DATA flag is set then the
// contents of a WNODE_ALL_DATA (excluding WNODE_HEADER) is here. If the
// WNODE_FLAG_SINGLE_INSTANCE flag is set then a WNODE_SINGLE_INSTANCE
// (excluding WNODE_HEADER) is here. Lastly if the WNODE_FLAG_SINGLE_ITEM
// flag is set then a WNODE_SINGLE_ITEM (excluding WNODE_HEADER) is here.
end;
{$EXTERNALSYM tagWNODE_EVENT_ITEM}
WNODE_EVENT_ITEM = tagWNODE_EVENT_ITEM;
{$EXTERNALSYM WNODE_EVENT_ITEM}
TWNodeEventItem = WNODE_EVENT_ITEM;
PWNodeEventItem = PWNODE_EVENT_ITEM;
//
// If a KM data provider needs to fire an event that is larger than the
// maximum size that WMI allows then it should fire a WNODE_EVENT_REFERENCE
// that specifies which guid and instance name to query for the actual data
// that should be part of the event.
PWNODE_EVENT_REFERENCE = ^WNODE_EVENT_REFERENCE;
{$EXTERNALSYM PWNODE_EVENT_REFERENCE}
tagWNODE_EVENT_REFERENCE = record
WnodeHeader: _WNODE_HEADER;
TargetGuid: GUID;
TargetDataBlockSize: ULONG;
case Integer of
0: (TargetInstanceIndex: ULONG);
1: (TargetInstanceName: PWCHAR);
end;
{$EXTERNALSYM tagWNODE_EVENT_REFERENCE}
WNODE_EVENT_REFERENCE = tagWNODE_EVENT_REFERENCE;
{$EXTERNALSYM WNODE_EVENT_REFERENCE}
TWNodeEventReference = WNODE_EVENT_REFERENCE;
PWNodeEventReference = PWNODE_EVENT_REFERENCE;
PWNODE_TOO_SMALL = ^WNODE_TOO_SMALL;
{$EXTERNALSYM PWNODE_TOO_SMALL}
tagWNODE_TOO_SMALL = record
WnodeHeader: _WNODE_HEADER;
SizeNeeded: ULONG; // Size needed to build WNODE result
end;
{$EXTERNALSYM tagWNODE_TOO_SMALL}
WNODE_TOO_SMALL = tagWNODE_TOO_SMALL;
{$EXTERNALSYM WNODE_TOO_SMALL}
TWNodeTooSmall = WNODE_TOO_SMALL;
PWNodeTooSmall = PWNODE_TOO_SMALL;
WMIREGGUIDW = record
Guid: GUID; // Guid of data block being registered or updated
Flags: ULONG; // Flags
InstanceCount: ULONG; // Count of static instances names for the guid
case Integer of
// If WMIREG_FLAG_INSTANCE_LIST then this has the offset
// to a list of InstanceCount counted UNICODE
// strings placed end to end.
0: (InstanceNameList: ULONG);
// If WMIREG_FLAG_INSTANCE_BASENAME then this has the
// offset to a single counted UNICODE string that
// has the basename for the instance names.
1: (BaseNameOffset: ULONG);
// If WMIREG_FLAG_INSTANCE_PDO is set then InstanceInfo
// has the PDO whose device instance path will
// become the instance name
2: (Pdo: ULONG_PTR);
// If WMIREG_FLAG_INSTANCE_REFERENCE then this points to
// a WMIREGINSTANCEREF structure.
3: (InstanceInfo: ULONG_PTR);// Offset from beginning of the WMIREGINFO structure to
end;
{$EXTERNALSYM WMIREGGUIDW}
PWMIREGGUIDW = ^WMIREGGUIDW;
{$EXTERNALSYM PWMIREGGUIDW}
TWmiRegGuidW = WMIREGGUIDW;
WMIREGGUID = WMIREGGUIDW;
{$EXTERNALSYM WMIREGGUID}
PWMIREGGUID = PWMIREGGUIDW;
{$EXTERNALSYM PWMIREGGUID}
TWmiRegGuid = WMIREGGUID;
// Set if collection must be enabled for the guid before the data provider
// can be queried for data.
const
WMIREG_FLAG_EXPENSIVE = $00000001;
{$EXTERNALSYM WMIREG_FLAG_EXPENSIVE}
// Set if instance names for this guid are specified in a static list within
// the WMIREGINFO
WMIREG_FLAG_INSTANCE_LIST = $00000004;
{$EXTERNALSYM WMIREG_FLAG_INSTANCE_LIST}
// Set if instance names are to be static and generated by WMI using a
// base name in the WMIREGINFO and an index
WMIREG_FLAG_INSTANCE_BASENAME = $00000008;
{$EXTERNALSYM WMIREG_FLAG_INSTANCE_BASENAME}
// Set if WMI should do automatic mapping of a PDO to device instance name
// as the instance name for the guid. This flag should only be used by
// kernel mode data providers.
WMIREG_FLAG_INSTANCE_PDO = $00000020;
{$EXTERNALSYM WMIREG_FLAG_INSTANCE_PDO}
// Note the flags WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_BASENAME,
// WMIREG_FLAG_INSTANCE_REFERENCE and WMIREG_FLAG_INSTANCE_PDO are mutually
// exclusive.
//
// These flags are only valid in a response to WMI_GUID_REGUPDATE
WMIREG_FLAG_REMOVE_GUID = $00010000; // Remove support for guid
{$EXTERNALSYM WMIREG_FLAG_REMOVE_GUID}
WMIREG_FLAG_RESERVED1 = $00020000; // Reserved by WMI
{$EXTERNALSYM WMIREG_FLAG_RESERVED1}
WMIREG_FLAG_RESERVED2 = $00040000; // Reserved by WMI
{$EXTERNALSYM WMIREG_FLAG_RESERVED2}
// Set if guid is one that is written to trace log.
// This guid cannot be queried directly via WMI, but must be read using
// logger apis.
WMIREG_FLAG_TRACED_GUID = $00080000;
{$EXTERNALSYM WMIREG_FLAG_TRACED_GUID}
//
// Only those Trace Guids that have this bit set can receive
// Enable/Disable Notifications.
//
WMIREG_FLAG_TRACE_CONTROL_GUID = $00001000;
{$EXTERNALSYM WMIREG_FLAG_TRACE_CONTROL_GUID}
//
// Set if the guid is only used for firing events. Guids that can be queried
// and that fire events should not have this bit set.
WMIREG_FLAG_EVENT_ONLY_GUID = $00000040;
{$EXTERNALSYM WMIREG_FLAG_EVENT_ONLY_GUID}
type
WMIREGINFOW = record
// Size of entire WMIREGINFO structure including this ULONG
// and any static instance names that follow
BufferSize: ULONG;
NextWmiRegInfo: ULONG; // Offset to next WMIREGINFO structure
RegistryPath: ULONG; // Offset from beginning of WMIREGINFO structure to a
// counted Unicode string containing
// the driver registry path (under HKLM\CCS\Services)
// This must be filled only by kernel mode data
// providers
// Offset from beginning of WMIREGINFO structure to a
// counted Unicode string containing
// the name of resource in driver file containing MOF info
MofResourceName: ULONG;
// Count of WMIREGGUID structures immediately following
GuidCount: ULONG;
WmiRegGuid: PWMIREGGUIDW; // array of GuidCount WMIREGGUID structures
// Variable length data including :
// Instance Names
end;
{$EXTERNALSYM WMIREGINFOW}
PWMIREGINFOW = ^WMIREGINFOW;
{$EXTERNALSYM PWMIREGINFOW}
TWmiRegInfoW = WMIREGINFOW;
WMIREGINFO = WMIREGINFOW;
{$EXTERNALSYM WMIREGINFOW}
PWMIREGINFO = PWMIREGINFOW;
{$EXTERNALSYM PWMIREGINFOW}
TWmiRegInfo = WMIREGINFOW;
//
// WMI request codes
WMIDPREQUESTCODE = (
WMI_GET_ALL_DATA,
WMI_GET_SINGLE_INSTANCE,
WMI_SET_SINGLE_INSTANCE,
WMI_SET_SINGLE_ITEM,
WMI_ENABLE_EVENTS,
WMI_DISABLE_EVENTS,
WMI_ENABLE_COLLECTION,
WMI_DISABLE_COLLECTION,
WMI_REGINFO,
WMI_EXECUTE_METHOD);
{$EXTERNALSYM WMIDPREQUESTCODE}
TWmiDpRequestCode = WMIDPREQUESTCODE;
//
// WMI guid objects have the following rights
// WMIGUID_QUERY
// WMIGUID_SET
// WMIGUID_NOTIFICATION
// WMIGUID_READ_DESCRIPTION
// WMIGUID_EXECUTE
// TRACELOG_CREATE_REALTIME
// TRACELOG_CREATE_ONDISK
// TRACELOG_GUID_ENABLE
// TRACELOG_ACCESS_KERNEL_LOGGER
// TRACELOG_CREATE_INPROC
// TRACELOG_ACCESS_REALTIME
//
// GuidTypes
//
//#ifndef _WMIKM_
const
WMI_GUIDTYPE_TRACECONTROL = 0;
{$EXTERNALSYM WMI_GUIDTYPE_TRACECONTROL}
WMI_GUIDTYPE_TRACE = 1;
{$EXTERNALSYM WMI_GUIDTYPE_TRACE}
WMI_GUIDTYPE_DATA = 2;
{$EXTERNALSYM WMI_GUIDTYPE_DATA}
WMI_GUIDTYPE_EVENT = 3;
{$EXTERNALSYM WMI_GUIDTYPE_EVENT}
//#endif
//
// Specific rights for WMI guid objects. These are available from 0x0001 to
// 0xffff (ie up to 16 rights)
//
WMIGUID_QUERY = $0001;
{$EXTERNALSYM WMIGUID_QUERY}
WMIGUID_SET = $0002;
{$EXTERNALSYM WMIGUID_SET}
WMIGUID_NOTIFICATION = $0004;
{$EXTERNALSYM WMIGUID_NOTIFICATION}
WMIGUID_READ_DESCRIPTION = $0008;
{$EXTERNALSYM WMIGUID_READ_DESCRIPTION}
WMIGUID_EXECUTE = $0010;
{$EXTERNALSYM WMIGUID_EXECUTE}
TRACELOG_CREATE_REALTIME = $0020;
{$EXTERNALSYM TRACELOG_CREATE_REALTIME}
TRACELOG_CREATE_ONDISK = $0040;
{$EXTERNALSYM TRACELOG_CREATE_ONDISK}
TRACELOG_GUID_ENABLE = $0080;
{$EXTERNALSYM TRACELOG_GUID_ENABLE}
TRACELOG_ACCESS_KERNEL_LOGGER = $0100;
{$EXTERNALSYM TRACELOG_ACCESS_KERNEL_LOGGER}
TRACELOG_CREATE_INPROC = $0200;
{$EXTERNALSYM TRACELOG_CREATE_INPROC}
TRACELOG_ACCESS_REALTIME = $0400;
{$EXTERNALSYM TRACELOG_ACCESS_REALTIME}
TRACELOG_REGISTER_GUIDS = $0800;
{$EXTERNALSYM TRACELOG_REGISTER_GUIDS}
WMIGUID_ALL_ACCESS = (
STANDARD_RIGHTS_READ or
SYNCHRONIZE or
WMIGUID_QUERY or
WMIGUID_SET or
WMIGUID_NOTIFICATION or
WMIGUID_READ_DESCRIPTION or
WMIGUID_EXECUTE or
TRACELOG_CREATE_REALTIME or
TRACELOG_CREATE_ONDISK or
TRACELOG_GUID_ENABLE or
TRACELOG_ACCESS_KERNEL_LOGGER or
TRACELOG_CREATE_INPROC or
TRACELOG_ACCESS_REALTIME or
TRACELOG_REGISTER_GUIDS);
{$EXTERNALSYM WMIGUID_ALL_ACCESS}
WMI_GLOBAL_LOGGER_ID = $0001;
{$EXTERNALSYM WMI_GLOBAL_LOGGER_ID}
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -