1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
//------------------------------------------------------------------------------
// File: RegBag.idl
//
// Desc: IDL source for RegBag.dll.
//
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
#ifndef DO_NO_IMPORTS
import "objidl.idl";
import "oaidl.idl";
import "ocidl.idl";
#endif
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// Custom Factory interface
// since com doesn't support ctors or initialization parameters on std factory interface
// we have a custom creation interface
//
///////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
[object,
hidden, restricted,
uuid(8A674B48-1F63-11d3-B64C-00C04F79498E),
helpstring("Create property bag backed by registry"),
pointer_default(unique),
local
]
interface ICreatePropBagOnRegKey : IUnknown {
// NOTE: it is up to the caller to set the correct registry access based on the interface
// and methods the caller intends to use
// IPropertyBag2::GetPropertyInfo and CountProperties require both KEY_QUERY_VALUE and KEY_ENUMERATE_SUBKEYS
// IPropertyBagXXX::Read requires KEY_READ
// IPropertyBagXXX::Write requires KEY_WRITE
// also, you must CoTaskMemFree the name string from GetPropertyInfo
// if you write a value of VT_EMPTY or VT_NULL the property will be removed from the bag and the corresponding
// registry info will be deleted.
HRESULT Create([in] HKEY hkey, [in] LPCOLESTR subkey, [in] DWORD ulOptions, [in] DWORD samDesired, REFIID iid, [out] LPVOID *ppBag);
};
|