⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jwawmistr.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    //           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 + -