56 lines
2.2 KiB
C++
56 lines
2.2 KiB
C++
#ifndef _PP_DEFS_COMPILED_
|
|
#define _PP_DEFS_COMPILED_
|
|
|
|
// contains definitions common to the Passive provider project
|
|
|
|
namespace PseudoProviderDef
|
|
{
|
|
// used to build monikers for the ROT
|
|
extern const WCHAR* SinkPrefix;
|
|
|
|
extern const WCHAR* ProviderPrefix;
|
|
|
|
// Sink Moniker is of the form WMIPseudoSink!name\space!class!<number>
|
|
// where <number> is a hex digit 0 <= number < NumbDupsAllowed
|
|
// Provider Moniker is WMIPseudoProvider!name\space!class
|
|
extern const WCHAR* SinkMonikerTemplate;
|
|
extern const WCHAR* ProviderMonikerTemplate;
|
|
// for use if you've already got the mangled name
|
|
extern const WCHAR* SinkMonikerShortTemplate;
|
|
|
|
// name used for the registry value the goodies are stored in
|
|
extern const WCHAR* ProviderStreamName;
|
|
extern const char* ProviderStreamNameA;
|
|
|
|
// number of duplicate PseudoPsinks allowed
|
|
enum {NumbDupsAllowed = 256};
|
|
|
|
// Mutex to protect the Registry & assumptions made therefrom
|
|
// should be used during any sequence that writes to or reads from the Registry
|
|
// basically, once one side has decided it's the first up we don't want the world changing
|
|
extern const WCHAR* StartupMutexName;
|
|
extern const char* StartupMutexNameA;
|
|
|
|
// marker for invalid index in the Sink Manager
|
|
enum {InvalidIndex = 0xFFFFFFFF};
|
|
|
|
extern const WCHAR* PsProvRegKey;
|
|
extern const char* PsProvRegKeyA;
|
|
}
|
|
|
|
// creates proper registry key for either, caller must delete returned pointer.
|
|
WCHAR* GetProviderKey(const WCHAR* pNamespace, const WCHAR* pProvider);
|
|
// caller may supply buffer
|
|
// caller may wish to iterate through a whole bunch of these guys
|
|
// and so the first call can allocate buffer, subsequent calls will reuse same buffer
|
|
WCHAR* GetPsinkKey(const WCHAR* pNamespace, const WCHAR* pProvider, DWORD dwIndex, WCHAR* pBuffer);
|
|
|
|
HRESULT InterfaceToRegistry(const WCHAR* pKeyName, IUnknown* pUnk);
|
|
|
|
// returns WBEM_S_FALSE if interface is not found
|
|
HRESULT RegistryToInterface(const WCHAR* pKeyName, IUnknown** ppUnk);
|
|
|
|
// CoFreeMarshalData, remove registry entry
|
|
void ReleaseRegistryInterface(const WCHAR* pKeyName);
|
|
|
|
#endif // #ifndef _PP_DEFS_COMPILED_
|