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.
 
 
 
 
 
 

443 lines
11 KiB

//***************************************************************************
//
// (c) 1999 by Microsoft Corp. All Rights Reserved.
//
// REPOSIT.IDL
//
// raymcc 18-Mar-99 Created as prototype for Quasar.
// raymcc 23-Mar-99 Misc. corrections; added IWmiDbIterator
// cvadai 31-Mar-99 Added Cancel and timeout to IWmiDbIterator
// cvadai 02-Apr-99 Modified IWmiDbBatchSession parameters.
// cvadai 06-Apr-99 Changed Logon out parameter to IWmiDbSession.
// raymcc 06-May-99 New handle type for duplication
// cvadai 13-May-99 New flags for logon, security.
// cvadai 29-Jul-99 Removed SetNamespacePath, added Logon param.
//
//***************************************************************************
import "..\wmiutils.idl";
[uuid(2af77340-dd7b-11d2-9217-00aa001f98b5)]
library WmiRepository_v0
{
importlib("stdole32.tlb");
interface IWmiDbSession;
typedef BYTE *PNTSECURITY_DESCRIPTOR;
typedef enum
{
WMIDB_HANDLE_TYPE_INVALID = 0,
// Lock level
WMIDB_HANDLE_TYPE_COOKIE = 0x1,
WMIDB_HANDLE_TYPE_VERSIONED = 0x2,
WMIDB_HANDLE_TYPE_PROTECTED = 0x3,
WMIDB_HANDLE_TYPE_EXCLUSIVE = 0x4,
// Cache levels
WMIDB_HANDLE_TYPE_NO_CACHE = 0x100,
WMIDB_HANDLE_TYPE_WEAK_CACHE = 0x200,
WMIDB_HANDLE_TYPE_STRONG_CACHE = 0x300,
// Special behavior
WMIDB_HANDLE_TYPE_PERSISTENT = 0x1000,
WMIDB_HANDLE_TYPE_AUTODELETE = 0x2000,
// Open Context
WMIDB_HANDLE_TYPE_SCOPE = 0x10000,
WMIDB_HANDLE_TYPE_CONTAINER = 0x20000,
WMIDB_HANDLE_TYPE_SUBSCOPED = 0x80000000
} WMIDB_HANDLE_TYPE;
typedef enum
{
// Batch operation flags
WMIDB_FLAG_BEST_EFFORT = 0x1,
WMIDB_FLAG_ATOMIC = 0x2,
WMIDB_FLAG_LOOKAHEAD = 0x10
} WMIDB_BATCH_FLAGS;
typedef enum
{
// Statistics flags
WMIDB_FLAG_TOTAL_HANDLES = 0x1,
WMIDB_FLAG_CACHE_SATURATION = 0x2,
WMIDB_FLAG_CACHE_HIT_RATE = 0x3
} WMIDB_STATISTICS_FLAGS;
typedef enum
{
// Logon flags
WMIDB_FLAG_ADMIN_VERIFIED = 0x10,
WMIDB_FLAG_NO_INIT = 0x20
} WMIDB_LOGON_FLAGS;
typedef enum
{
// Security flags
WMIDB_FLAG_SECURITY_LOCAL_ONLY = 0x1,
WMIDB_FLAG_SECURITY_PROPOGATED = 0x2
} WMIDB_SECURITY_FLAGS;
typedef enum
{
// Query flags
WMIDB_FLAG_QUERY_SHALLOW = 0x0,
WMIDB_FLAG_QUERY_DEEP = 0x1
} WMIDB_QUERY_FLAGS;
typedef enum
{
WMIDB_ENABLE_EVENTS = 0x0,
WMIDB_DISABLE_EVENTS = 0x1000
} WMIDB_EVENT_PUT_DELETE_FLAGS;
typedef enum
{
// shutdown flags
WMIDB_SHUTDOWN_NET_STOP = 0x0,
WMIDB_SHUTDOWN_MACHINE_DOWN = 0x1
} WMIDB_SHUTDOWN_FLAGS;
//***************************************************************************
//
//***************************************************************************
[uuid(89B9BAF8-6A06-11d3-A5FE-00105A0A3102)]
coclass WmiRepository_SQL
{
interface IWmiDbController;
};
[uuid(89B9BAFC-6A06-11d3-A5FE-00105A0A3102)]
coclass WmiRepository_Jet
{
interface IWmiDbController;
};
[object, uuid(0bc53e37-dd83-11d2-9217-00aa001f98b5)]
interface IWmiDbHandle : IUnknown
{
HRESULT GetHandleType([out] DWORD *pdwType);
};
//***************************************************************************
//
// Logon template definitions
//
//***************************************************************************
typedef struct
{
DWORD dwId;
DWORD dwFlags;
BSTR strParmDisplayName;
VARIANT Value;
} WMIDB_LOGON_PARAMETER;
typedef struct
{
DWORD dwArraySize;
[size_is(dwArraySize)] WMIDB_LOGON_PARAMETER *pParm;
} WMIDB_LOGON_TEMPLATE;
//***************************************************************************
//
//***************************************************************************
[object, uuid(2af77343-dd7b-11d2-9217-00aa001f98b5)]
interface IWmiDbController : IUnknown
{
HRESULT Logon(
[in] WMIDB_LOGON_TEMPLATE *pLogonParms,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbSession **ppSession,
[out] IWmiDbHandle **ppRootNamespace
);
HRESULT GetLogonTemplate(
[in] LCID lLocale,
[in] DWORD dwFlags,
[out] WMIDB_LOGON_TEMPLATE **ppLogonTemplate
);
HRESULT FreeLogonTemplate(
[in, out] WMIDB_LOGON_TEMPLATE **ppTemplate
);
HRESULT Shutdown(
[in] DWORD dwFlags
);
HRESULT SetCallTimeout(
[in] DWORD dwMaxTimeout
);
HRESULT SetCacheValue(
[in] DWORD dwMaxBytes
);
HRESULT FlushCache(
[in] DWORD dwFlags
);
HRESULT GetStatistics(
[in] DWORD dwParameter,
[out] DWORD *pdwValue
);
HRESULT Backup(
[in] LPCWSTR szBackupFile,
[in] long lFlags
);
HRESULT Restore(
[in] LPCWSTR szBackupFile,
[in] long lFlags
);
HRESULT LockRepository();
HRESULT UnlockRepository();
HRESULT GetRepositoryVersions(
[out] DWORD *pdwOldVersion,
[out] DWORD *pdwCurrentVersion
);
};
//***************************************************************************
//
//***************************************************************************
[object, uuid(2380c7e0-e14b-11d2-9220-00aa001f98b5)]
interface IWmiDbIterator : IUnknown
{
HRESULT Cancel (
[in] DWORD dwFlags,
[in] void* pFiber);
HRESULT NextBatch(
[in] DWORD dwNumRequested,
[in] DWORD dwTimeOutSeconds,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[in] REFIID riid,
[in] void* pFiber,
[out] DWORD *pdwNumReturned,
[out, size_is(dwNumRequested), length_is(*pdwNumReturned), iid_is(riid)]
LPVOID *ppObjects
);
};
//***************************************************************************
//
//***************************************************************************
[object, uuid(2af77345-dd7b-11d2-9217-00aa001f98b5)]
interface IWmiDbSession : IUnknown
{
HRESULT GetObject(
[in] IWmiDbHandle *pScope,
[in] IWbemPath *pPath,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbHandle **ppResult
);
HRESULT GetObjectDirect(
[in] IWmiDbHandle *pScope,
[in] IWbemPath *pPath,
[in] DWORD dwFlags,
[in] REFIID riid,
[out, iid_is(riid)] LPVOID *pObj
);
HRESULT PutObject(
[in] IWmiDbHandle *pScope,
[in] REFIID riid,
[in, iid_is(riid)] LPVOID pObj,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbHandle **ppResult
);
HRESULT DeleteObject(
[in] IWmiDbHandle *pScope,
[in] DWORD dwFlags,
[in] REFIID riid,
[in, iid_is(riid)] LPVOID pObj
);
HRESULT ExecQuery(
[in] IWmiDbHandle *pScope,
[in] IWbemQuery *pQuery,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] DWORD *dwMessageFlags,
[out] IWmiDbIterator **ppQueryResult
);
HRESULT RenameObject(
[in] IWbemPath *pOldPath,
[in] IWbemPath *pNewPath,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbHandle **ppResult
);
HRESULT Enumerate(
[in] IWmiDbHandle *pScope,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbIterator **ppQueryResult
);
HRESULT AddObject(
[in] IWmiDbHandle *pScope,
[in] IWbemPath *pPath,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[out] IWmiDbHandle **ppResult
);
HRESULT RemoveObject (
[in] IWmiDbHandle *pScope,
[in] IWbemPath *pPath,
[in] DWORD dwFlags
);
HRESULT SetDecoration(
[in] LPWSTR lpMachineName,
[in] LPWSTR lpNamespacePath
);
HRESULT SupportsQueries(
[in] DWORD *dwQuerySupportLevel
);
};
[object, uuid(4b3cca15-0e03-44cb-9b7a-822f9faf6ec0)]
interface IWmiDbSessionEx : IWmiDbSession
{
HRESULT GetObjectByPath(
[in] IWmiDbHandle *pScope,
[in, string] LPCWSTR wszPath,
[in] DWORD dwFlags,
[in] REFIID riid,
[out, iid_is(riid)] LPVOID *pObj
);
HRESULT DeleteObjectByPath(
[in] IWmiDbHandle *pScope,
[in, string] LPCWSTR wszPath,
[in] DWORD dwFlags
);
HRESULT BeginWriteTransaction([in] DWORD dwFlags);
HRESULT BeginReadTransaction([in] DWORD dwFlags);
HRESULT CommitTransaction([in] DWORD dwFlags);
HRESULT AbortTransaction([in] DWORD dwFlags);
};
// Dummy interface to work around MIDL not stripping all the interface
// attributes for IWmiDbSession (MIDL 6.00.0328)
[object, uuid(15e6e24f-7432-4da9-9bd4-c33db0df06c0)]
interface I15e6e24f74324da99bd4c33db0df06c0 : IUnknown
{
HRESULT foo();
};
//***************************************************************************
//
//***************************************************************************
typedef struct
{
HRESULT hRes;
DWORD dwFlags;
IWbemPath *pPath;
IUnknown *pHandle;
IWmiDbHandle *pReturnHandle;
} WMI_BATCH_OBJECT_ACCESS;
typedef struct
{
DWORD dwArraySize;
[size_is(dwArraySize)] WMI_BATCH_OBJECT_ACCESS *pElements;
} WMIOBJECT_BATCH;
//***************************************************************************
//
//***************************************************************************
[object, uuid(0bc53e39-dd83-11d2-9217-00aa001f98b5)]
interface IWmiDbBatchSession : IUnknown
{
HRESULT GetObjects(
[in] IWmiDbHandle *pScope,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[in, out] WMIOBJECT_BATCH *pBatch
);
HRESULT PutObjects(
[in] IWmiDbHandle *pScope,
[in] DWORD dwFlags,
[in] DWORD dwRequestedHandleType,
[in, out] WMIOBJECT_BATCH *pBatch
);
HRESULT DeleteObjects(
[in] IWmiDbHandle *pScope,
[in] DWORD dwFlags,
[in] WMIOBJECT_BATCH *pBatch
);
};
[object, uuid(843180D9-8489-42d7-BB07-3A5D91818E2E)]
interface IWmiDbBackupRestore : IUnknown
{
HRESULT Backup (
[in] LPCWSTR lpBackupPath,
[in] DWORD dwFlags
);
HRESULT Restore (
[in] LPCWSTR lpRestorePath,
[in] LPCWSTR lpDestination,
[in] DWORD dwFlags
);
};
}; // End of lib