[uuid(226c9290-dd96-11d3-a120-00105a1f515a)] library WbemUtilities_v1 { importlib("stdole32.tlb"); typedef [v1_enum] enum tag_WBEM_PATH_STATUS_FLAG { WBEMPATH_INFO_ANON_LOCAL_MACHINE = 0x1, // WBEMPATH_INFO_HAS_MACHINE_NAME = 0x2, // WBEMPATH_INFO_IS_CLASS_REF = 0x4, // WBEMPATH_INFO_IS_INST_REF = 0x8, // WBEMPATH_INFO_HAS_SUBSCOPES = 0x10, // WBEMPATH_INFO_IS_COMPOUND = 0x20, // WBEMPATH_INFO_HAS_V2_REF_PATHS = 0x40, // WBEMPATH_INFO_HAS_IMPLIED_KEY = 0x80, // WBEMPATH_INFO_CONTAINS_SINGLETON = 0x100, // WBEMPATH_INFO_V1_COMPLIANT = 0x200, // WBEMPATH_INFO_V2_COMPLIANT = 0x400, // WBEMPATH_INFO_CIM_COMPLIANT = 0x800, // WBEMPATH_INFO_IS_SINGLETON = 0x1000, // WBEMPATH_INFO_IS_PARENT = 0x2000, // WBEMPATH_INFO_SERVER_NAMESPACE_ONLY = 0x4000, // WBEMPATH_INFO_NATIVE_PATH = 0X8000, WBEMPATH_INFO_WMI_PATH = 0X10000, WBEMPATH_INFO_PATH_HAD_SERVER = 0X20000, // server name is present and was not set by default } tag_WBEM_PATH_STATUS_FLAG; typedef [v1_enum] enum tag_WBEM_PATH_CREATE_FLAG { WBEMPATH_CREATE_ACCEPT_RELATIVE = 0x1, WBEMPATH_CREATE_ACCEPT_ABSOLUTE = 0x2, WBEMPATH_CREATE_ACCEPT_ALL = 0x4, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS = 0x8, } tag_WBEM_PATH_CREATE_FLAG; // A flag of 0 will get the namespace and relative part typedef [v1_enum] enum tag_WBEM_GET_TEXT_FLAGS { WBEMPATH_COMPRESSED = 0x1, // Obsolete, dont use WBEMPATH_GET_RELATIVE_ONLY = 0X2, // gets relative path WBEMPATH_GET_SERVER_TOO = 0X4, // gets everything WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY = 0X8, // gets server and namespace WBEMPATH_GET_NAMESPACE_ONLY = 0X10, // gets just namespace WBEMPATH_GET_ORIGINAL = 0X20, // returns whatever was passed in } tag_WBEM_GET_TEXT_FLAGS; typedef [v1_enum] enum tag_WBEM_GET_KEY_FLAGS { WBEMPATH_TEXT = 0x1, WBEMPATH_QUOTEDTEXT = 0X2 } tag_WBEM_GET_KEY_FLAGS; //******************************************************************* // NOT CoCreatable; get this from IWbemPath [local, object, uuid(9AE62877-7544-4bb0-AA26-A13824659ED6)] interface IWbemPathKeyList : IUnknown { HRESULT GetCount( [out] ULONG * puKeyCount ); HRESULT SetKey( [in, string] LPCWSTR wszName, [in] ULONG uFlags, // Add flag for SINGLETON [in] ULONG uCimType, // Implies the size [in] LPVOID pKeyVal ); HRESULT SetKey2( [in, string] LPCWSTR wszName, [in] ULONG uFlags, // Add flag for SINGLETON [in] ULONG uCimType, [in] VARIANT * pKeyVal ); HRESULT GetKey( [in] ULONG uKeyIx, [in] ULONG uFlags, // Add flag for SINGLETON [in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null [in,out] LPWSTR pszKeyName, // May be NULL for implicit keys [in,out] ULONG * puKeyValBufSize, // In Bytes, includes double NULL [in,out] LPVOID pKeyVal, // Key Val [out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc. ); HRESULT GetKey2( [in] ULONG uKeyIx, [in] ULONG uFlags, // Add flag for SINGLETON [in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null [in,out] LPWSTR pszKeyName, // May be NULL for implicit keys [in,out] VARIANT * pKeyValue, // In Bytes, includes double NULL [out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc. ); HRESULT RemoveKey( [in, string] LPCWSTR wszName, [in] ULONG uFlags ); HRESULT RemoveAllKeys( [in] ULONG uFlags ); HRESULT MakeSingleton([in] boolean bSet); // WBEMPATH_INFO_IS_COMPOUND