home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / Idl / wbemcli.idl < prev    next >
Encoding:
Text File  |  2000-02-01  |  32.6 KB  |  1,159 lines

  1. /*++
  2.  
  3. Copyright (C) 1996-1999 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     WBEMCLI.IDL
  8.  
  9. Abstract:
  10.  
  11.   Interfaces for WBEM clients. These interfaces are implemented by CIMOM and
  12.   used by clients.  Additional interfaces needed by WBEM providers can be
  13.   found in WBEMPROV.IDL
  14.  
  15. History:
  16.  
  17. --*/
  18.  
  19. [uuid(7ec196fe-7005-11d1-ad90-00c04fd8fdff)]
  20. library WbemClient_v1
  21. {
  22.     importlib("stdole32.tlb");
  23.  
  24.     interface IWbemClassObject;
  25.     interface IWbemObjectAccess;
  26.     interface IWbemQualifierSet;
  27.     interface IWbemServices;
  28.     interface IWbemLocator;
  29.     interface IWbemObjectSink;
  30.     interface IEnumWbemClassObject;
  31.     interface IWbemCallResult;
  32.     interface IWbemContext;
  33.     interface IUnsecuredApartment;
  34.     interface IWbemStatusCodeText;
  35.     interface IWbemBackupRestore;
  36.     interface IWbemRefresher;
  37.     interface IWbemHiPerfEnum;
  38.     interface IWbemConfigureRefresher;
  39.  
  40.     /////////////////////////////////////////////////////////////////
  41.     //
  42.  
  43.     typedef [v1_enum] enum tag_WBEM_GENUS_TYPE
  44.     {
  45.         WBEM_GENUS_CLASS = 1,
  46.         WBEM_GENUS_INSTANCE = 2
  47.     } WBEM_GENUS_TYPE;
  48.  
  49.     typedef [v1_enum] enum tag_WBEM_CHANGE_FLAG_TYPE
  50.     {
  51.         WBEM_FLAG_CREATE_OR_UPDATE = 0,
  52.         WBEM_FLAG_UPDATE_ONLY = 0x1,
  53.         WBEM_FLAG_CREATE_ONLY = 0x2,
  54.         WBEM_FLAG_UPDATE_COMPATIBLE  = 0x0,
  55.         WBEM_FLAG_UPDATE_SAFE_MODE = 0x20,
  56.         WBEM_FLAG_UPDATE_FORCE_MODE = 0x40,
  57.         WBEM_MASK_UPDATE_MODE = 0x60
  58.     } WBEM_CHANGE_FLAG_TYPE;
  59.  
  60.     typedef [v1_enum] enum tag_WBEM_GENERIC_FLAG_TYPE
  61.     {
  62.         WBEM_FLAG_RETURN_IMMEDIATELY = 0x10,
  63.         WBEM_FLAG_RETURN_WBEM_COMPLETE = 0,
  64.         WBEM_FLAG_BIDIRECTIONAL = 0,
  65.         WBEM_FLAG_FORWARD_ONLY = 0x20,
  66.         WBEM_FLAG_NO_ERROR_OBJECT = 0x40,
  67.         WBEM_FLAG_RETURN_ERROR_OBJECT = 0,
  68.         WBEM_FLAG_SEND_STATUS = 0x80,
  69.         WBEM_FLAG_DONT_SEND_STATUS = 0,
  70.         WBEM_FLAG_ENSURE_LOCATABLE = 0x100,
  71.         WBEM_FLAG_DIRECT_READ = 0x200,
  72.         WBEM_FLAG_SEND_ONLY_SELECTED = 0,
  73.  
  74.         // backward-compatibility
  75.         WBEM_RETURN_WHEN_COMPLETE = 0,
  76.         WBEM_RETURN_IMMEDIATELY = 0x10,
  77.  
  78.         // these bits are reserved!!
  79.         WBEM_MASK_RESERVED_FLAGS = 0x1F000,
  80.  
  81.         WBEM_FLAG_USE_AMENDED_QUALIFIERS = 0x20000
  82.  
  83.     } WBEM_GENERIC_FLAG_TYPE;
  84.  
  85.     typedef enum tag_WBEM_STATUS_TYPE
  86.     {
  87.         WBEM_STATUS_COMPLETE = 0,
  88.         WBEM_STATUS_REQUIREMENTS = 1,
  89.         WBEM_STATUS_PROGRESS = 2,
  90.     } WBEM_STATUS_TYPE;
  91.  
  92.     typedef [v1_enum] enum tag_WBEM_TIMEOUT_TYPE
  93.     {
  94.         WBEM_NO_WAIT = 0,
  95.         WBEM_INFINITE = 0xFFFFFFFF,
  96.     } WBEM_TIMEOUT_TYPE;
  97.  
  98.     typedef [v1_enum] enum tag_WBEM_CONDITION_FLAG_TYPE
  99.     {
  100.         WBEM_FLAG_ALWAYS = 0,
  101.         WBEM_FLAG_ONLY_IF_TRUE = 0x1,
  102.         WBEM_FLAG_ONLY_IF_FALSE = 0x2,
  103.         WBEM_FLAG_ONLY_IF_IDENTICAL = 0x3,
  104.         WBEM_MASK_PRIMARY_CONDITION = 0x3,
  105.  
  106.         WBEM_FLAG_KEYS_ONLY = 0x4,
  107.         WBEM_FLAG_REFS_ONLY = 0x8,
  108.  
  109.         WBEM_FLAG_LOCAL_ONLY = 0x10,
  110.         WBEM_FLAG_PROPAGATED_ONLY = 0x20,
  111.         WBEM_FLAG_SYSTEM_ONLY = 0x30,
  112.         WBEM_FLAG_NONSYSTEM_ONLY = 0x40,
  113.  
  114.         WBEM_MASK_CONDITION_ORIGIN = 0x70
  115.     } WBEM_CONDITION_FLAG_TYPE;
  116.  
  117.     typedef [v1_enum] enum tag_WBEM_FLAVOR_TYPE
  118.     {
  119.         WBEM_FLAVOR_DONT_PROPAGATE = 0,
  120.         WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE = 0x1,
  121.         WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS = 0x2,
  122.         WBEM_FLAVOR_MASK_PROPAGATION = 0x0F,
  123.  
  124.         WBEM_FLAVOR_OVERRIDABLE = 0,
  125.         WBEM_FLAVOR_NOT_OVERRIDABLE = 0x10,
  126.         WBEM_FLAVOR_MASK_PERMISSIONS = 0x10,
  127.  
  128.         WBEM_FLAVOR_ORIGIN_LOCAL = 0,
  129.         WBEM_FLAVOR_ORIGIN_PROPAGATED = 0x20,
  130.         WBEM_FLAVOR_ORIGIN_SYSTEM = 0x40,
  131.         WBEM_FLAVOR_MASK_ORIGIN = 0x60,
  132.  
  133.         WBEM_FLAVOR_NOT_AMENDED = 0,
  134.         WBEM_FLAVOR_AMENDED = 0x80,
  135.         WBEM_FLAVOR_MASK_AMENDED = 0x80
  136.  
  137.     } WBEM_FLAVOR_TYPE;
  138.  
  139.     typedef [v1_enum] enum tag_WBEM_QUERY_FLAG_TYPE
  140.     {
  141.         WBEM_FLAG_DEEP = 0,
  142.         WBEM_FLAG_SHALLOW = 1,
  143.         WBEM_FLAG_PROTOTYPE = 2
  144.     } WBEM_QUERY_FLAG_TYPE;
  145.  
  146.     typedef [v1_enum] enum tag_WBEM_SECURITY_FLAGS
  147.     {
  148.         WBEM_ENABLE = 1,
  149.         WBEM_METHOD_EXECUTE = 2,
  150.         WBEM_FULL_WRITE_REP = 4,
  151.         WBEM_PARTIAL_WRITE_REP = 8,
  152.         WBEM_WRITE_PROVIDER = 0x10,
  153.         WBEM_REMOTE_ACCESS = 0X20
  154.     } WBEM_SECURITY_FLAGS;
  155.  
  156.     typedef [v1_enum] enum tag_WBEM_LIMITATION_FLAG_TYPE
  157.     {
  158.         WBEM_FLAG_EXCLUDE_OBJECT_QUALIFIERS = 0x10,
  159.         WBEM_FLAG_EXCLUDE_PROPERTY_QUALIFIERS = 0x20
  160.     } WBEM_LIMITATION_FLAG_TYPE;
  161.  
  162.     typedef [v1_enum] enum tag_WBEM_TEXT_FLAG_TYPE
  163.     {
  164.         WBEM_FLAG_NO_FLAVORS = 0x1
  165.     } WBEM_TEXT_FLAG_TYPE;
  166.  
  167.     typedef [v1_enum] enum tag_WBEM_COMPARISON_FLAG
  168.     {
  169.         WBEM_COMPARISON_INCLUDE_ALL = 0,
  170.         WBEM_FLAG_IGNORE_QUALIFIERS = 0x1,
  171.         WBEM_FLAG_IGNORE_OBJECT_SOURCE = 0x2,
  172.         WBEM_FLAG_IGNORE_DEFAULT_VALUES = 0x4,
  173.         WBEM_FLAG_IGNORE_CLASS = 0x8,
  174.         WBEM_FLAG_IGNORE_CASE = 0x10,
  175.         WBEM_FLAG_IGNORE_FLAVOR = 0x20
  176.     } WBEM_COMPARISON_FLAG;
  177.  
  178.     typedef [v1_enum] enum tag_WBEM_LOCKING
  179.     {
  180.         WBEM_FLAG_ALLOW_READ = 0x1,
  181.     } WBEM_LOCKING_FLAG_TYPE;
  182.  
  183.     typedef [v1_enum] enum tag_WBEM_CONNECT
  184.     {
  185.         WBEM_FLAG_CREDENTIALS_SPECIFIED = 0x1,
  186.     } WBEM_CONNECT_FLAG_TYPE;
  187.  
  188.     typedef [v1_enum] enum tag_CIMTYPE_ENUMERATION
  189.     {
  190.         CIM_ILLEGAL = 0xfff,
  191.         CIM_EMPTY = 0,
  192.  
  193.         CIM_SINT8 = 16,
  194.         CIM_UINT8 = 17,
  195.         CIM_SINT16 = 2,
  196.         CIM_UINT16 = 18,
  197.         CIM_SINT32 = 3,
  198.         CIM_UINT32 = 19,
  199.         CIM_SINT64 = 20,
  200.         CIM_UINT64 = 21,
  201.         CIM_REAL32 = 4,
  202.         CIM_REAL64 = 5,
  203.         CIM_BOOLEAN = 11,
  204.         CIM_STRING = 8,
  205.         CIM_DATETIME = 101,
  206.         CIM_REFERENCE = 102,
  207.         CIM_CHAR16 = 103,
  208.         CIM_OBJECT = 13,
  209.  
  210.         CIM_FLAG_ARRAY = 0x2000
  211.     } CIMTYPE_ENUMERATION;
  212.  
  213.     typedef [v1_enum] enum tag_WBEM_BACKUP_RESTORE_FLAGS
  214.     {
  215.         WBEM_FLAG_BACKUP_RESTORE_DEFAULT = 0,
  216.         WBEM_FLAG_BACKUP_RESTORE_FORCE_SHUTDOWN = 1
  217.     } WBEM_BACKUP_RESTORE_FLAGS;
  218.  
  219.     typedef [v1_enum] enum tag_WBEM_REFRESHER_FLAGS
  220.     {
  221.         WBEM_FLAG_REFRESH_AUTO_RECONNECT = 0,
  222.         WBEM_FLAG_REFRESH_NO_AUTO_RECONNECT = 1
  223.     } WBEM_REFRESHER_FLAGS;
  224.  
  225.  
  226.     typedef long CIMTYPE;
  227.  
  228.     /////////////////////////////////////////////////////////////////
  229.     //
  230.  
  231.     typedef [v1_enum] enum tag_WBEMSTATUS
  232.     {
  233.         WBEM_NO_ERROR = 0,
  234.         WBEM_S_NO_ERROR = 0,
  235.         WBEM_S_SAME = 0,
  236.  
  237.         // Non-error status codes.
  238.         // =======================
  239.  
  240.         WBEM_S_FALSE = 1,
  241.  
  242.         WBEM_S_ALREADY_EXISTS           = 0x40001,
  243.         WBEM_S_RESET_TO_DEFAULT         = 0x40002,
  244.         WBEM_S_DIFFERENT                = 0x40003,
  245.         WBEM_S_TIMEDOUT                 = 0x40004,
  246.         WBEM_S_NO_MORE_DATA             = 0x40005,
  247.         WBEM_S_OPERATION_CANCELLED      = 0x40006,
  248.         WBEM_S_PENDING                  = 0x40007,
  249.         WBEM_S_DUPLICATE_OBJECTS        = 0x40008,
  250.         WBEM_S_ACCESS_DENIED            = 0x40009,
  251.         WBEM_S_PARTIAL_RESULTS          = 0x40010,
  252.  
  253.         // Errors.
  254.         // =======
  255.  
  256.         WBEM_E_FAILED                           = 0x80041001,
  257.         WBEM_E_NOT_FOUND                        = 0x80041002,
  258.         WBEM_E_ACCESS_DENIED                    = 0x80041003,
  259.         WBEM_E_PROVIDER_FAILURE                 = 0x80041004,
  260.         WBEM_E_TYPE_MISMATCH                    = 0x80041005,
  261.         WBEM_E_OUT_OF_MEMORY                    = 0x80041006,
  262.         WBEM_E_INVALID_CONTEXT                  = 0x80041007,
  263.         WBEM_E_INVALID_PARAMETER                = 0x80041008,
  264.         WBEM_E_NOT_AVAILABLE                    = 0x80041009,
  265.         WBEM_E_CRITICAL_ERROR                   = 0x8004100A,
  266.         WBEM_E_INVALID_STREAM                   = 0x8004100B,
  267.         WBEM_E_NOT_SUPPORTED                    = 0x8004100C,
  268.         WBEM_E_INVALID_SUPERCLASS               = 0x8004100D,
  269.         WBEM_E_INVALID_NAMESPACE                = 0x8004100E,
  270.         WBEM_E_INVALID_OBJECT                   = 0x8004100F,
  271.         WBEM_E_INVALID_CLASS                    = 0x80041010,
  272.         WBEM_E_PROVIDER_NOT_FOUND               = 0x80041011,
  273.         WBEM_E_INVALID_PROVIDER_REGISTRATION    = 0x80041012,
  274.         WBEM_E_PROVIDER_LOAD_FAILURE            = 0x80041013,
  275.         WBEM_E_INITIALIZATION_FAILURE           = 0x80041014,
  276.         WBEM_E_TRANSPORT_FAILURE                = 0x80041015,
  277.         WBEM_E_INVALID_OPERATION                = 0x80041016,
  278.         WBEM_E_INVALID_QUERY                    = 0x80041017,
  279.         WBEM_E_INVALID_QUERY_TYPE               = 0x80041018,
  280.         WBEM_E_ALREADY_EXISTS                   = 0x80041019,
  281.         WBEM_E_OVERRIDE_NOT_ALLOWED             = 0x8004101A,
  282.         WBEM_E_PROPAGATED_QUALIFIER             = 0x8004101B,
  283.         WBEM_E_PROPAGATED_PROPERTY              = 0x8004101C,
  284.         WBEM_E_UNEXPECTED                       = 0x8004101D,
  285.         WBEM_E_ILLEGAL_OPERATION                = 0x8004101E,
  286.         WBEM_E_CANNOT_BE_KEY                    = 0x8004101F,
  287.         WBEM_E_INCOMPLETE_CLASS                 = 0x80041020,
  288.         WBEM_E_INVALID_SYNTAX                   = 0x80041021,
  289.         WBEM_E_NONDECORATED_OBJECT              = 0x80041022,
  290.         WBEM_E_READ_ONLY                        = 0x80041023,
  291.         WBEM_E_PROVIDER_NOT_CAPABLE             = 0x80041024,
  292.         WBEM_E_CLASS_HAS_CHILDREN               = 0x80041025,
  293.         WBEM_E_CLASS_HAS_INSTANCES              = 0x80041026,
  294.         WBEM_E_QUERY_NOT_IMPLEMENTED            = 0x80041027,
  295.         WBEM_E_ILLEGAL_NULL                     = 0x80041028,
  296.         WBEM_E_INVALID_QUALIFIER_TYPE           = 0x80041029,
  297.         WBEM_E_INVALID_PROPERTY_TYPE            = 0x8004102A,
  298.         WBEM_E_VALUE_OUT_OF_RANGE               = 0x8004102B,
  299.         WBEM_E_CANNOT_BE_SINGLETON              = 0x8004102C,
  300.         WBEM_E_INVALID_CIM_TYPE                 = 0x8004102D,
  301.         WBEM_E_INVALID_METHOD                   = 0x8004102E,
  302.         WBEM_E_INVALID_METHOD_PARAMETERS        = 0x8004102F,
  303.         WBEM_E_SYSTEM_PROPERTY                  = 0x80041030,
  304.         WBEM_E_INVALID_PROPERTY                 = 0x80041031,
  305.         WBEM_E_CALL_CANCELLED                   = 0x80041032,
  306.         WBEM_E_SHUTTING_DOWN                    = 0x80041033,
  307.         WBEM_E_PROPAGATED_METHOD                = 0x80041034,
  308.         WBEM_E_UNSUPPORTED_PARAMETER            = 0x80041035,
  309.         WBEM_E_MISSING_PARAMETER_ID             = 0x80041036,
  310.         WBEM_E_INVALID_PARAMETER_ID             = 0x80041037,
  311.         WBEM_E_NONCONSECUTIVE_PARAMETER_IDS     = 0x80041038,
  312.         WBEM_E_PARAMETER_ID_ON_RETVAL           = 0x80041039,
  313.         WBEM_E_INVALID_OBJECT_PATH              = 0x8004103A,
  314.         WBEM_E_OUT_OF_DISK_SPACE                = 0x8004103B,
  315.         WBEM_E_BUFFER_TOO_SMALL                    = 0x8004103C,
  316.         WBEM_E_UNSUPPORTED_PUT_EXTENSION        = 0x8004103D,
  317.         WBEM_E_UNKNOWN_OBJECT_TYPE                = 0x8004103E,
  318.         WBEM_E_UNKNOWN_PACKET_TYPE                = 0x8004103F,
  319.         WBEM_E_MARSHAL_VERSION_MISMATCH            = 0x80041040,
  320.         WBEM_E_MARSHAL_INVALID_SIGNATURE        = 0x80041041,
  321.         WBEM_E_INVALID_QUALIFIER                = 0x80041042,
  322.         WBEM_E_INVALID_DUPLICATE_PARAMETER        = 0x80041043,
  323.         WBEM_E_TOO_MUCH_DATA                    = 0x80041044,
  324.         WBEM_E_SERVER_TOO_BUSY                  = 0x80041045,
  325.         WBEM_E_INVALID_FLAVOR                    = 0x80041046,
  326.         WBEM_E_CIRCULAR_REFERENCE                = 0x80041047,
  327.         WBEM_E_UNSUPPORTED_CLASS_UPDATE            = 0x80041048,
  328.         WBEM_E_CANNOT_CHANGE_KEY_INHERITANCE    = 0x80041049,
  329.         WBEM_E_CANNOT_CHANGE_INDEX_INHERITANCE  = 0x80041050,
  330.         WBEM_E_TOO_MANY_PROPERTIES                = 0x80041051,
  331.         WBEM_E_UPDATE_TYPE_MISMATCH                = 0x80041052,
  332.         WBEM_E_UPDATE_OVERRIDE_NOT_ALLOWED        = 0x80041053,
  333.         WBEM_E_UPDATE_PROPAGATED_METHOD            = 0x80041054,
  334.         WBEM_E_METHOD_NOT_IMPLEMENTED            = 0x80041055,
  335.         WBEM_E_METHOD_DISABLED                  = 0x80041056,
  336.         WBEM_E_REFRESHER_BUSY                    = 0x80041057,
  337.         WBEM_E_UNPARSABLE_QUERY                 = 0x80041058,
  338.         WBEM_E_NOT_EVENT_CLASS                  = 0x80041059,
  339.         WBEM_E_MISSING_GROUP_WITHIN             = 0x8004105A,
  340.         WBEM_E_MISSING_AGGREGATION_LIST         = 0x8004105B,
  341.         WBEM_E_PROPERTY_NOT_AN_OBJECT           = 0x8004105C,
  342.         WBEM_E_AGGREGATING_BY_OBJECT            = 0x8004105D,
  343.         WBEM_E_UNINTERPRETABLE_PROVIDER_QUERY   = 0x8004105F,
  344.         WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNING    = 0x80041060,
  345.         WBEM_E_QUEUE_OVERFLOW                   = 0x80041061,
  346.         WBEM_E_PRIVILEGE_NOT_HELD               = 0x80041062,
  347.         WBEM_E_INVALID_OPERATOR                 = 0x80041063,
  348.         WBEM_E_LOCAL_CREDENTIALS                = 0x80041064,
  349.         WBEM_E_CANNOT_BE_ABSTRACT                = 0x80041065,
  350.         WBEM_E_AMENDED_OBJECT                    = 0x80041066,
  351.         WBEM_E_CLIENT_TOO_SLOW                    = 0x80041067,
  352.  
  353.         WBEMESS_E_REGISTRATION_TOO_BROAD        = 0x80042001,
  354.         WBEMESS_E_REGISTRATION_TOO_PRECISE      = 0x80042002
  355.  
  356.  
  357.     }   WBEMSTATUS;
  358.  
  359.     [restricted, uuid(4590f811-1d3a-11d0-891f-00aa004b2e24)]
  360.     coclass WbemLocator
  361.     {
  362.         interface IWbemLocator;
  363.     };
  364.  
  365.     [restricted, uuid(674B6698-EE92-11d0-AD71-00C04FD8FDFF)]
  366.     coclass WbemContext
  367.     {
  368.         interface IWbemContext;
  369.     };
  370.  
  371.     [uuid(49bd2028-1523-11d1-ad79-00c04fd8fdff)]
  372.     coclass UnsecuredApartment
  373.     {
  374.         interface IUnsecuredApartment;
  375.     };
  376.  
  377.     [uuid(9A653086-174F-11d2-B5F9-00104B703EFD)]
  378.     coclass WbemClassObject
  379.     {
  380.         interface IWbemClassObject;
  381.     };
  382.  
  383.     [uuid(6daf9757-2e37-11d2-aec9-00c04fb68820)]
  384.     coclass MofCompiler
  385.     {
  386.         interface IMofCompiler;
  387.     };
  388.  
  389.     [uuid(eb87e1bd-3233-11d2-aec9-00c04fb68820)]
  390.     coclass WbemStatusCodeText
  391.     {
  392.         interface IWbemStatusCodeText;
  393.     };
  394.  
  395.     [uuid(C49E32C6-BC8B-11d2-85D4-00105A1F8304)]
  396.     coclass WbemBackupRestore
  397.     {
  398.         interface IWbemBackupRestore;
  399.     };
  400.  
  401.     [restricted, uuid(c71566f2-561e-11d1-ad87-00c04fd8fdff)]
  402.     coclass WbemRefresher
  403.     {
  404.         interface IMarshal;
  405.         interface IWbemRefresher;
  406.         interface IWbemConfigureRefresher;
  407.     };
  408. };
  409.  
  410. #define OPTIONAL in, unique
  411.  
  412. interface IWbemQualifierSet;
  413.  
  414. [local, restricted, object, uuid(dc12a681-737f-11cf-884d-00aa004b2e24)]
  415.  
  416. interface IWbemClassObject : IUnknown
  417. {
  418.     HRESULT GetQualifierSet(
  419.         [out] IWbemQualifierSet** ppQualSet
  420.         );
  421.  
  422.     HRESULT Get(
  423.         [in, string] LPCWSTR wszName,
  424.         [in] long lFlags,
  425.         [out, OPTIONAL] VARIANT* pVal,
  426.         [out, OPTIONAL] CIMTYPE* pType,
  427.         [out, OPTIONAL] long* plFlavor
  428.         );
  429.  
  430.     HRESULT Put(
  431.         [in, string] LPCWSTR wszName,
  432.         [in] long lFlags,
  433.         [in] VARIANT* pVal,
  434.         [in] CIMTYPE Type
  435.         );
  436.  
  437.     HRESULT Delete(
  438.         [in, string] LPCWSTR wszName
  439.         );
  440.  
  441.     HRESULT GetNames(
  442.         [in, string] LPCWSTR wszQualifierName,
  443.         [in] long lFlags,
  444.         [in] VARIANT* pQualifierVal,
  445.         [out] SAFEARRAY (BSTR)* pNames
  446.         );
  447.  
  448.     HRESULT BeginEnumeration([in] long lEnumFlags);
  449.  
  450.     HRESULT Next(
  451.         [in] long lFlags,
  452.         [out, OPTIONAL] BSTR* strName,
  453.         [out, OPTIONAL] VARIANT* pVal,
  454.         [out, OPTIONAL] CIMTYPE* pType,
  455.         [out, OPTIONAL] long* plFlavor
  456.         );
  457.  
  458.     HRESULT EndEnumeration();
  459.  
  460.     HRESULT GetPropertyQualifierSet(
  461.         [in, string] LPCWSTR wszProperty,
  462.         [out] IWbemQualifierSet** ppQualSet
  463.         );
  464.  
  465.     HRESULT Clone(
  466.         [out] IWbemClassObject** ppCopy
  467.         );
  468.  
  469.     HRESULT GetObjectText(
  470.         [in]  long lFlags,
  471.         [out] BSTR* pstrObjectText
  472.         );
  473.  
  474.     HRESULT SpawnDerivedClass(
  475.         [in] long lFlags,
  476.         [out] IWbemClassObject** ppNewClass
  477.         );
  478.  
  479.     HRESULT SpawnInstance(
  480.         [in] long lFlags,
  481.         [out] IWbemClassObject** ppNewInstance
  482.         );
  483.  
  484.     HRESULT CompareTo(
  485.         [in] long lFlags,
  486.         [in] IWbemClassObject* pCompareTo
  487.         );
  488.  
  489.     HRESULT GetPropertyOrigin(
  490.         [in, string] LPCWSTR wszName,
  491.         [out] BSTR* pstrClassName);
  492.  
  493.     HRESULT InheritsFrom(
  494.         [in] LPCWSTR strAncestor
  495.         );
  496.  
  497.     // Method manipulation.
  498.     // ====================
  499.  
  500.     HRESULT GetMethod(
  501.         [in, string] LPCWSTR wszName,
  502.         [in] long lFlags,
  503.         [out] IWbemClassObject** ppInSignature,
  504.         [out] IWbemClassObject** ppOutSignature
  505.         );
  506.  
  507.     HRESULT PutMethod(
  508.         [in, string] LPCWSTR wszName,
  509.         [in] long lFlags,
  510.         [in] IWbemClassObject* pInSignature,
  511.         [in] IWbemClassObject* pOutSignature
  512.         );
  513.  
  514.     HRESULT DeleteMethod(
  515.         [in, string] LPCWSTR wszName
  516.         );
  517.  
  518.     HRESULT BeginMethodEnumeration([in] long lEnumFlags);
  519.  
  520.     HRESULT NextMethod(
  521.         [in] long lFlags,
  522.         [out, OPTIONAL] BSTR* pstrName,
  523.         [out, OPTIONAL] IWbemClassObject** ppInSignature,
  524.         [out, OPTIONAL] IWbemClassObject** ppOutSignature
  525.         );
  526.  
  527.     HRESULT EndMethodEnumeration();
  528.  
  529.     HRESULT GetMethodQualifierSet(
  530.         [in, string] LPCWSTR wszMethod,
  531.         [out] IWbemQualifierSet** ppQualSet
  532.         );
  533.  
  534.     HRESULT GetMethodOrigin(
  535.         [in, string] LPCWSTR wszMethodName,
  536.         [out] BSTR* pstrClassName
  537.         );
  538. };
  539.  
  540. [object, restricted, local, uuid(dc12a680-737f-11cf-884d-00aa004b2e24)]
  541.  
  542. interface IWbemQualifierSet : IUnknown
  543. {
  544.     HRESULT Get(
  545.         [in, string]  LPCWSTR wszName,
  546.         [in]  long lFlags,
  547.         [out, OPTIONAL] VARIANT* pVal,
  548.         [out, OPTIONAL] long* plFlavor
  549.         );
  550.  
  551.     HRESULT Put(
  552.         [in, string] LPCWSTR wszName,
  553.         [in] VARIANT* pVal,
  554.         [in] long lFlavor
  555.         );
  556.  
  557.     HRESULT Delete(
  558.         [in, string] LPCWSTR wszName
  559.         );
  560.  
  561.     HRESULT GetNames(
  562.         [in] long lFlags,
  563.         [out] SAFEARRAY (BSTR)* pNames
  564.         );
  565.  
  566.     HRESULT BeginEnumeration([in] long lFlags);
  567.  
  568.     HRESULT Next(
  569.         [in]  long lFlags,
  570.         [out, OPTIONAL] BSTR* pstrName,
  571.         [out, OPTIONAL] VARIANT* pVal,
  572.         [out, OPTIONAL] long* plFlavor
  573.         );
  574.  
  575.     HRESULT EndEnumeration();
  576. };
  577.  
  578. interface IWbemServices;
  579.  
  580. [object, restricted, local, uuid(dc12a687-737f-11cf-884d-00aa004b2e24),
  581.     pointer_default(unique)]
  582. interface IWbemLocator  : IUnknown
  583. {
  584.     HRESULT ConnectServer(
  585.         [in]    const BSTR strNetworkResource,
  586.         [in]    const BSTR strUser,
  587.         [in]    const BSTR strPassword,
  588.         [in]    const BSTR strLocale,
  589.         [in]    long lSecurityFlags,
  590.         [in]    const BSTR strAuthority,
  591.         [in]    IWbemContext* pCtx,
  592.         [out]   IWbemServices** ppNamespace
  593.         );
  594. };
  595.  
  596.  
  597. /////////////////////////////////////////////////////////////////
  598.  
  599. [object, restricted, uuid(7c857801-7381-11cf-884d-00aa004b2e24)]
  600.  
  601. interface IWbemObjectSink : IUnknown
  602. {
  603.     HRESULT Indicate(
  604.         [in] long lObjectCount,
  605.         [in, size_is(lObjectCount)]
  606.             IWbemClassObject** apObjArray
  607.         );
  608.  
  609.  
  610.     HRESULT SetStatus(
  611.         [in] long lFlags,
  612.         [in] HRESULT hResult,
  613.         [in] BSTR strParam,
  614.         [in] IWbemClassObject* pObjParam
  615.         );
  616.  
  617. };
  618.  
  619. [object, restricted, uuid(027947e1-d731-11ce-a357-000000000001)]
  620.  
  621. interface IEnumWbemClassObject : IUnknown
  622. {
  623.     HRESULT Reset();
  624.  
  625.     HRESULT Next(
  626.         [in]  long lTimeout,
  627.         [in]  ULONG uCount,
  628.         [out, size_is(uCount), length_is(*puReturned)]
  629.             IWbemClassObject** apObjects,
  630.         [out] ULONG* puReturned
  631.         );
  632.  
  633.     HRESULT NextAsync(
  634.         [in]  ULONG uCount,
  635.         [in]  IWbemObjectSink* pSink
  636.         );
  637.  
  638.     HRESULT Clone(
  639.         [out] IEnumWbemClassObject** ppEnum
  640.         );
  641.  
  642.     HRESULT Skip(
  643.         [in]  long lTimeout,
  644.         [in] ULONG nCount
  645.         );
  646. };
  647.  
  648. /////////////////////////////////////////////////////////////////////////
  649.  
  650. [object, restricted, local, uuid(44aca674-e8fc-11d0-a07c-00c04fb68820)]
  651.  
  652. interface IWbemContext : IUnknown
  653. {
  654.     HRESULT Clone([out] IWbemContext** ppNewCopy);
  655.  
  656.     HRESULT GetNames(
  657.         [in] long lFlags,
  658.         [out] SAFEARRAY (BSTR)* pNames
  659.         );
  660.  
  661.     HRESULT BeginEnumeration([in] long lFlags);
  662.  
  663.     HRESULT Next(
  664.         [in]  long lFlags,
  665.         [out] BSTR* pstrName,
  666.         [out] VARIANT* pValue
  667.         );
  668.  
  669.     HRESULT EndEnumeration();
  670.  
  671.  
  672.     HRESULT SetValue(
  673.         [in, string] LPCWSTR wszName,
  674.         [in] long lFlags,
  675.         [in] VARIANT* pValue
  676.         );
  677.  
  678.     HRESULT GetValue(
  679.         [in, string] LPCWSTR wszName,
  680.         [in] long lFlags,
  681.         [out] VARIANT* pValue
  682.         );
  683.  
  684.     HRESULT DeleteValue(
  685.         [in, string] LPCWSTR wszName,
  686.         [in] long lFlags
  687.         );
  688.  
  689.     HRESULT DeleteAll();
  690. };
  691.  
  692.  
  693. [object, restricted, uuid(44aca675-e8fc-11d0-a07c-00c04fb68820)]
  694.  
  695. interface IWbemCallResult : IUnknown
  696. {
  697.     HRESULT GetResultObject(
  698.         [in]  long lTimeout,
  699.         [out] IWbemClassObject** ppResultObject
  700.         );
  701.  
  702.     HRESULT GetResultString(
  703.         [in]  long lTimeout,
  704.         [out] BSTR* pstrResultString
  705.         );
  706.  
  707.     HRESULT GetResultServices(
  708.         [in]  long lTimeout,
  709.         [out] IWbemServices** ppServices
  710.         );
  711.  
  712.     HRESULT GetCallStatus(
  713.         [in]  long lTimeout,
  714.         [out] long* plStatus
  715.         );
  716.  
  717. };
  718.  
  719.  
  720. /////////////////////////////////////////////////////////////////////////
  721.  
  722. [object, restricted, uuid(9556dc99-828c-11cf-a37e-00aa003240c7),
  723.         pointer_default(unique)]
  724.  
  725. interface IWbemServices : IUnknown
  726. {
  727.     // Context.
  728.     // ========
  729.     HRESULT OpenNamespace(
  730.         [in]  const BSTR strNamespace,
  731.         [in]  long lFlags,
  732.         [in]  IWbemContext* pCtx,
  733.         [out, OPTIONAL] IWbemServices** ppWorkingNamespace,
  734.         [out, OPTIONAL] IWbemCallResult** ppResult
  735.         );
  736.  
  737.     HRESULT CancelAsyncCall(
  738.         [in] IWbemObjectSink* pSink
  739.         );
  740.  
  741.     HRESULT QueryObjectSink(
  742.         [in] long lFlags,
  743.         [out] IWbemObjectSink** ppResponseHandler
  744.         );
  745.  
  746.     // Classes and instances.
  747.     // ======================
  748.  
  749.     HRESULT GetObject(
  750.         [in]  const BSTR strObjectPath,
  751.         [in]  long lFlags,
  752.         [in]  IWbemContext* pCtx,
  753.         [out, OPTIONAL] IWbemClassObject** ppObject,
  754.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  755.         );
  756.  
  757.     HRESULT GetObjectAsync(
  758.         [in]  const BSTR strObjectPath,
  759.         [in]  long lFlags,
  760.         [in]  IWbemContext* pCtx,
  761.         [in]  IWbemObjectSink* pResponseHandler
  762.         );
  763.  
  764.     // Class manipulation.
  765.     // ===================
  766.  
  767.     HRESULT PutClass(
  768.         [in] IWbemClassObject* pObject,
  769.         [in] long lFlags,
  770.         [in]  IWbemContext* pCtx,
  771.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  772.         );
  773.  
  774.     HRESULT PutClassAsync(
  775.         [in] IWbemClassObject* pObject,
  776.         [in] long lFlags,
  777.         [in] IWbemContext* pCtx,
  778.         [in] IWbemObjectSink* pResponseHandler
  779.         );
  780.  
  781.     HRESULT DeleteClass(
  782.         [in] const BSTR strClass,
  783.         [in] long lFlags,
  784.         [in]  IWbemContext* pCtx,
  785.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  786.         );
  787.  
  788.     HRESULT DeleteClassAsync(
  789.         [in] const BSTR strClass,
  790.         [in] long lFlags,
  791.         [in] IWbemContext* pCtx,
  792.         [in] IWbemObjectSink* pResponseHandler
  793.         );
  794.  
  795.     HRESULT CreateClassEnum(
  796.         [in]  const BSTR strSuperclass,
  797.         [in]  long lFlags,
  798.         [in]  IWbemContext* pCtx,
  799.         [out] IEnumWbemClassObject** ppEnum
  800.         );
  801.  
  802.     HRESULT CreateClassEnumAsync(
  803.         [in]  const BSTR strSuperclass,
  804.         [in]  long lFlags,
  805.         [in]  IWbemContext* pCtx,
  806.         [in]  IWbemObjectSink* pResponseHandler
  807.         );
  808.  
  809.     // Instances.
  810.     // ==========
  811.  
  812.     HRESULT PutInstance(
  813.         [in] IWbemClassObject* pInst,
  814.         [in] long lFlags,
  815.         [in]  IWbemContext* pCtx,
  816.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  817.         );
  818.  
  819.     HRESULT PutInstanceAsync(
  820.         [in] IWbemClassObject* pInst,
  821.         [in] long lFlags,
  822.         [in] IWbemContext* pCtx,
  823.         [in] IWbemObjectSink* pResponseHandler
  824.         );
  825.  
  826.     HRESULT DeleteInstance(
  827.         [in] const BSTR strObjectPath,
  828.         [in] long lFlags,
  829.         [in]  IWbemContext* pCtx,
  830.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  831.         );
  832.  
  833.     HRESULT DeleteInstanceAsync(
  834.         [in] const BSTR strObjectPath,
  835.         [in] long lFlags,
  836.         [in] IWbemContext* pCtx,
  837.         [in] IWbemObjectSink* pResponseHandler
  838.         );
  839.  
  840.     HRESULT CreateInstanceEnum(
  841.         [in] const BSTR strClass,
  842.         [in] long lFlags,
  843.         [in]  IWbemContext* pCtx,
  844.         [out] IEnumWbemClassObject** ppEnum
  845.         );
  846.  
  847.     HRESULT CreateInstanceEnumAsync(
  848.         [in] const BSTR strClass,
  849.         [in] long lFlags,
  850.         [in] IWbemContext* pCtx,
  851.         [in] IWbemObjectSink* pResponseHandler
  852.         );
  853.  
  854.     // Queries.
  855.     // ========
  856.  
  857.     HRESULT ExecQuery(
  858.         [in]  const BSTR strQueryLanguage,
  859.         [in]  const BSTR strQuery,
  860.         [in]  long lFlags,
  861.         [in]  IWbemContext* pCtx,
  862.         [out] IEnumWbemClassObject** ppEnum
  863.         );
  864.  
  865.     HRESULT ExecQueryAsync(
  866.         [in] const BSTR strQueryLanguage,
  867.         [in] const BSTR strQuery,
  868.         [in] long lFlags,
  869.         [in] IWbemContext* pCtx,
  870.         [in] IWbemObjectSink* pResponseHandler
  871.         );
  872.  
  873.  
  874.     HRESULT ExecNotificationQuery(
  875.         [in] const BSTR strQueryLanguage,
  876.         [in] const BSTR strQuery,
  877.         [in] long lFlags,
  878.         [in]  IWbemContext* pCtx,
  879.         [out] IEnumWbemClassObject** ppEnum
  880.         );
  881.  
  882.     HRESULT ExecNotificationQueryAsync(
  883.         [in] const BSTR strQueryLanguage,
  884.         [in] const BSTR strQuery,
  885.         [in] long lFlags,
  886.         [in] IWbemContext* pCtx,
  887.         [in] IWbemObjectSink* pResponseHandler
  888.         );
  889.  
  890.     // Methods
  891.     // =======
  892.  
  893.     HRESULT ExecMethod(
  894.         [in] const BSTR strObjectPath,
  895.         [in] const BSTR strMethodName,
  896.         [in] long lFlags,
  897.         [in] IWbemContext* pCtx,
  898.         [in] IWbemClassObject* pInParams,
  899.         [out, OPTIONAL] IWbemClassObject** ppOutParams,
  900.         [out, OPTIONAL] IWbemCallResult** ppCallResult
  901.         );
  902.  
  903.     HRESULT ExecMethodAsync(
  904.         [in] const BSTR strObjectPath,
  905.         [in] const BSTR strMethodName,
  906.         [in] long lFlags,
  907.         [in] IWbemContext* pCtx,
  908.         [in] IWbemClassObject* pInParams,
  909.         [in] IWbemObjectSink* pResponseHandler
  910.         );
  911. };
  912.  
  913. [local, restricted, object, uuid(49353c9a-516b-11d1-aea6-00c04fb68820)]
  914. interface IWbemObjectAccess : IWbemClassObject
  915. {
  916.     HRESULT GetPropertyHandle(
  917.         [in, string] LPCWSTR wszPropertyName,
  918.         [out] CIMTYPE* pType,
  919.         [out] long* plHandle
  920.         );
  921.  
  922.     HRESULT WritePropertyValue(
  923.         [in] long lHandle,
  924.         [in] long lNumBytes,
  925.         [in, size_is(lNumBytes)] const byte* aData
  926.         );
  927.  
  928.     HRESULT ReadPropertyValue(
  929.         [in] long lHandle,
  930.         [in] long lBufferSize,
  931.         [out] long* plNumBytes,
  932.         [out, size_is(lBufferSize), length_is(*plNumBytes)] byte* aData
  933.         );
  934.  
  935.     HRESULT ReadDWORD(
  936.         [in] long lHandle,
  937.         [out] DWORD* pdw
  938.         );
  939.  
  940.     HRESULT WriteDWORD(
  941.         [in] long lHandle,
  942.         [in] DWORD dw
  943.         );
  944.  
  945.     HRESULT ReadQWORD(
  946.         [in] long lHandle,
  947.         [out] unsigned __int64* pqw
  948.         );
  949.  
  950.     HRESULT WriteQWORD(
  951.         [in] long lHandle,
  952.         [in] unsigned __int64 pw
  953.         );
  954.  
  955.     HRESULT GetPropertyInfoByHandle(
  956.         [in] long lHandle,
  957.         [out] BSTR* pstrName,
  958.         [out] CIMTYPE* pType);
  959.  
  960.     HRESULT Lock(
  961.         [in] long lFlags
  962.         );
  963.  
  964.     HRESULT Unlock(
  965.         [in] long lFlags
  966.         );
  967. };
  968.  
  969.  
  970. typedef struct tag_CompileStatusInfo
  971. {
  972.     long lPhaseError;        // 0, 1, 2, or 3 matching current return value
  973.     HRESULT hRes;            // Actual error
  974.     long ObjectNum;
  975.     long FirstLine;
  976.     long LastLine;
  977.     DWORD dwOutFlags;
  978. } WBEM_COMPILE_STATUS_INFO;
  979.  
  980. typedef [v1_enum] enum tag_WBEM_COMPILER_OPTIONS
  981. {
  982.     WBEM_FLAG_CHECK_ONLY = 0x1,
  983.     WBEM_FLAG_AUTORECOVER = 0X2,
  984.     WBEM_FLAG_WMI_CHECK = 0X4,
  985.     WBEM_FLAG_CONSOLE_PRINT = 0X8,
  986.     WBEM_FLAG_DONT_ADD_TO_LIST = 0X10,
  987.     WBEM_FLAG_SPLIT_FILES = 0X20,
  988.  
  989. } WBEM_COMPILER_OPTIONS;
  990.  
  991. [local, object, uuid(6daf974e-2e37-11d2-aec9-00c04fb68820)]
  992.  
  993. interface IMofCompiler : IUnknown
  994. {
  995.     HRESULT CompileFile(
  996.         [in, string] LPWSTR FileName,
  997.         [in, string] LPWSTR ServerAndNamespace,
  998.         [in, string] LPWSTR User,
  999.         [in, string] LPWSTR Authority,
  1000.         [in, string] LPWSTR Password,
  1001.         [in] LONG lOptionFlags,                // autocomp, check, etc
  1002.         [in] LONG lClassFlags,
  1003.         [in] LONG lInstanceFlags,
  1004.         [in, out] WBEM_COMPILE_STATUS_INFO * pInfo
  1005.         );
  1006.         // lFlags correspond to all the available command-line flags.
  1007.  
  1008.     HRESULT CompileBuffer(
  1009.         [in] long BuffSize,
  1010.         [in, size_is(BuffSize)]BYTE * pBuffer,
  1011.         [in, string] LPWSTR ServerAndNamespace,
  1012.         [in, string] LPWSTR User,
  1013.         [in, string] LPWSTR Authority,
  1014.         [in, string] LPWSTR Password,
  1015.         [in] LONG lOptionFlags,                // autocomp, check, etc
  1016.         [in] LONG lClassFlags,
  1017.         [in] LONG lInstanceFlags,
  1018.         [in, out] WBEM_COMPILE_STATUS_INFO * pInfo
  1019.         );
  1020.  
  1021.  
  1022.     HRESULT CreateBMOF(
  1023.         [in, string] LPWSTR TextFileName,
  1024.         [in, string] LPWSTR BMOFFileName,
  1025.         [in, string] LPWSTR ServerAndNamespace,
  1026.         [in] LONG lOptionFlags,                // autocomp, check, etc
  1027.         [in] LONG lClassFlags,
  1028.         [in] LONG lInstanceFlags,
  1029.         [in, out] WBEM_COMPILE_STATUS_INFO * pInfo
  1030.         );
  1031.  
  1032.         // lFlags correspond to all the available command-line flags.
  1033. };
  1034.  
  1035.  
  1036.  
  1037. [restricted, uuid(1cfaba8c-1523-11d1-ad79-00c04fd8fdff), object]
  1038. interface IUnsecuredApartment : IUnknown
  1039. {
  1040.     HRESULT CreateObjectStub(
  1041.         [in] IUnknown* pObject,
  1042.         [out] IUnknown** ppStub);
  1043.  
  1044. };
  1045.  
  1046. typedef [v1_enum] enum tag_WBEM_INFORMATION_FLAG_TYPE
  1047. {
  1048.         WBEM_FLAG_SHORT_NAME = 0x1,
  1049.         WBEM_FLAG_LONG_NAME = 0x2
  1050. } WBEM_INFORMATION_FLAG_TYPE;
  1051.  
  1052.  
  1053. [local, object, uuid(eb87e1bc-3233-11d2-aec9-00c04fb68820)]
  1054.  
  1055. interface IWbemStatusCodeText : IUnknown
  1056. {
  1057.     HRESULT GetErrorCodeText(
  1058.         [in]  HRESULT hRes,
  1059.         [in]  LCID    LocaleId,
  1060.         [in] long lFlags,
  1061.         [out] BSTR  *  MessageText
  1062.         );
  1063.  
  1064.     HRESULT GetFacilityCodeText(
  1065.         [in]  HRESULT hRes,
  1066.         [in]  LCID    LocaleId,
  1067.         [in] long lFlags,
  1068.         [out] BSTR  *  MessageText
  1069.         );
  1070.  
  1071. };
  1072. [object, restricted, uuid(C49E32C7-BC8B-11d2-85D4-00105A1F8304)]
  1073. interface IWbemBackupRestore : IUnknown
  1074. {
  1075.     HRESULT Backup(
  1076.         [in, string] LPCWSTR strBackupToFile,
  1077.         [in] long lFlags
  1078.         );
  1079.  
  1080.     HRESULT Restore(
  1081.         [in, string] LPCWSTR strRestoreFromFile,
  1082.         [in] long lFlags
  1083.         );
  1084. };
  1085.  
  1086. [local, restricted, object, uuid(49353c99-516b-11d1-aea6-00c04fb68820)]
  1087. interface IWbemRefresher : IUnknown
  1088. {
  1089.     HRESULT Refresh([in] long lFlags);
  1090. }
  1091.  
  1092. [local, restricted, object, uuid(2705C288-79AE-11d2-B348-00105A1F8177)]
  1093. interface IWbemHiPerfEnum : IUnknown
  1094. {
  1095.     // Add Objects, with assigned ids
  1096.     HRESULT AddObjects(
  1097.             [in] long lFlags,
  1098.             [in] ULONG uNumObjects,
  1099.             [in, size_is(uNumObjects)] long* apIds,
  1100.             [in, size_is(uNumObjects)] IWbemObjectAccess** apObj
  1101.             );
  1102.  
  1103.     // Remove objects by id
  1104.     HRESULT RemoveObjects(
  1105.             [in] long lFlags,
  1106.             [in] ULONG uNumObjects,
  1107.             [in, size_is(uNumObjects)] long* apIds
  1108.             );
  1109.  
  1110.     HRESULT GetObjects(
  1111.             [in] long lFlags,
  1112.             [in] ULONG uNumObjects,
  1113.             [out,size_is(uNumObjects),length_is(*puReturned)] IWbemObjectAccess** apObj,
  1114.             [out] ULONG* puReturned
  1115.             );
  1116.  
  1117.     HRESULT RemoveAll(
  1118.             [in] long lFlags
  1119.             );
  1120. };
  1121.  
  1122. [local, restricted, object, uuid(49353c92-516b-11d1-aea6-00c04fb68820)]
  1123. interface IWbemConfigureRefresher : IUnknown
  1124. {
  1125.     HRESULT AddObjectByPath(
  1126.             [in] IWbemServices* pNamespace,
  1127.             [in, string] LPCWSTR wszPath,
  1128.             [in] long lFlags,
  1129.             [in] IWbemContext* pContext,
  1130.             [out] IWbemClassObject** ppRefreshable,
  1131.             [out, OPTIONAL] long* plId);
  1132.  
  1133.     HRESULT AddObjectByTemplate(
  1134.             [in] IWbemServices* pNamespace,
  1135.             [in] IWbemClassObject* pTemplate,
  1136.             [in] long lFlags,
  1137.             [in] IWbemContext* pContext,
  1138.             [out] IWbemClassObject** ppRefreshable,
  1139.             [out, OPTIONAL] long* plId);
  1140.  
  1141.     HRESULT AddRefresher(
  1142.             [in] IWbemRefresher* pRefresher,
  1143.             [in] long lFlags,
  1144.             [out, OPTIONAL] long* plId);
  1145.  
  1146.     HRESULT Remove(
  1147.             [in] long lId,
  1148.             [in] long lFlags);
  1149.  
  1150.     HRESULT AddEnum(
  1151.             [in] IWbemServices* pNamespace,
  1152.             [in, string] LPCWSTR wszClassName,
  1153.             [in] long lFlags,
  1154.             [in] IWbemContext* pContext,
  1155.             [out] IWbemHiPerfEnum** ppEnum,
  1156.             [out, OPTIONAL] long* plId );
  1157.  
  1158. };
  1159.