8#define _ATL_NO_EXCEPTIONS
22#define MODE_CAN_READ(dwMode) \
23 (((dwMode) & (STGM_READ | STGM_WRITE | STGM_READWRITE)) != STGM_WRITE)
24#define MODE_CAN_WRITE(dwMode) \
25 (((dwMode) & (STGM_READ | STGM_WRITE | STGM_READWRITE)) != STGM_READ)
29#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
52#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
72 return ::InterlockedIncrement(&
m_cRefs);
84#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
88 _In_ PROPBAG2 *pPropBag,
97 _In_ PROPBAG2 *pPropBag,
109 _Out_ PROPBAG2 *pPropBag,
159 TRACE(
"%p: %s %p %p\n",
this,
debugstr_w(pszPropName), pvari, pErrorLog);
165#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
173 if (!pszPropName || !pvari)
175 ERR(
"%p: %s %p %p\n",
this,
debugstr_w(pszPropName), pvari, pErrorLog);
182 ERR(
"%p: %s %p %p\n",
this,
debugstr_w(pszPropName), pvari, pErrorLog);
189 ERR(
"%p: 0x%08X %p\n",
this,
hr, pvari);
193 hr = ::VariantChangeTypeForRead(pvari,
vt);
196 ERR(
"%p: 0x%08X %p\n",
this,
hr, pvari);
210#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
218 if (!pszPropName || !pvari)
262 return pMemBag->QueryInterface(
riid, ppvObj);
405 if (
ui.DUMMYSTRUCTNAME.HighPart)
408 *pcbSize =
ui.DUMMYSTRUCTNAME.LowPart;
420 TRACE(
"%p: %s %p %p\n",
this,
debugstr_w(pszPropName), pvari, pErrorLog);
433 DWORD dwType, cbValue;
437 else if (dwType ==
REG_SZ)
448 ERR(
"%p: 0x%08X %ld: %s %p\n",
this,
hr, dwType,
debugstr_w(pszPropName), pvari);
453 hr = ::VariantChangeTypeForRead(pvari,
vt);
456 ERR(
"%p: 0x%08X %ld: %s %p\n",
this,
hr, dwType,
debugstr_w(pszPropName), pvari);
533 hr =
V_UNKNOWN(pvari)->QueryInterface(IID_IStream, (
void **)&pStream);
593 return pRegBag->QueryInterface(
riid, ppvObj);
631 CW2A wide2utf7(pszWideBuff);
729 if (*lpKeyName ==
L'@')
754 if (*lpKeyName ==
L'@')
838 UINT cchSep = (
UINT)(pchSep - pszStart + 1);
839 StrCpyNW(pszSection, pszStart,
min(cchSep, cchSectionMax));
840 StrCpyNW(pszName, pchSep + 1, cchNameMax);
847 StrCpyNW(pszName, pszStart, cchNameMax);
863 TRACE(
"%p: %s %p %p\n",
this,
debugstr_w(pszPropName), pvari, pErrorLog);
895 return ::VariantChangeTypeForRead(pvari,
vt);
983 if (
lstrcmpiW(pchFileTitle,
L"desktop.ini") == 0)
1003 ERR(
"0x%08X\n",
hr);
1007 return pIniPB->QueryInterface(
riid, ppvObj);
1044 DWORD dwValue, cbData =
sizeof(dwValue);
1055 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\DeskView",
1111 pNewStream->Seek(
li, STREAM_SEEK_SET,
NULL);
1113 return pNewStream.
Detach();
1141 return pOldStream.
Detach();
1174 if (
StrCmpW(
L"FFlags", pszPropName) == 0)
1176 else if (
StrCmpNW(
L"ItemPos", pszPropName, 7) == 0)
1185 return ::VariantChangeType(pvari, pvari, 0,
vt);
1201 return pPropBag->QueryInterface(
riid, ppvObj);
1341 if (!pidlOther && !
m_pidl)
1371 return ((
m_dwVspbFlags & SHGVSPB_FOLDER) == SHGVSPB_FOLDER);
1379 return ((
m_dwVspbFlags & SHGVSPB_USERDEFAULTS) == SHGVSPB_USERDEFAULTS);
1395 return ((
m_dwVspbFlags & SHGVSPB_GLOBALDEAFAULTS) == SHGVSPB_GLOBALDEAFAULTS);
1412 else if ((
m_dwVspbFlags & SHGVSPB_FOLDER) == SHGVSPB_FOLDER)
1416 else if ((
m_dwVspbFlags & SHGVSPB_USERDEFAULTS) == SHGVSPB_USERDEFAULTS)
1420 else if ((
m_dwVspbFlags & SHGVSPB_GLOBALDEAFAULTS) == SHGVSPB_GLOBALDEAFAULTS)
1426 if (!(dwVspbFlags & (SHGVSPB_INHERIT | SHGVSPB_PERUSER)))
1429 if ((
m_dwVspbFlags & SHGVSPB_ROAM) && (dwVspbFlags & SHGVSPB_PERFOLDER))
1437 DWORD dwValue, cbValue =
sizeof(dwValue);
1442 return (
UINT)dwValue;
1456 IID_IMruPidlList, (
void**)&pMruList);
1461 hr = pMruList->InitList(cMRUSize,
hKey,
L"BagMRU");
1465 hr = pMruList->QueryPidl(pidl, cSlots, puSlots, pcSlots);
1467 hr = pMruList->UsePidl(pidl, puSlots);
1468 else if (cSlots == 1)
1494 if (
dwFlags & (SHGVSPB_INHERIT | SHGVSPB_PERFOLDER))
1499 if (
dwFlags & SHGVSPB_INHERIT)
1500 StringCchPrintfW(pszDest, cchDest,
L"Bags\\%d\\%s\\Inherit", nSlot, pszBagName);
1521 BIND_OPTS opts = {
sizeof(opts) };
1522 opts.grfMode = dwMode;
1551 if ((dwVspbFlags & SHGVSPB_ALLUSERS) && (dwVspbFlags & SHGVSPB_PERFOLDER))
1559 hr = psf->BindToObject(
m_pidl, pBC,
riid, (
void **)pppb);
1590 UINT cSlots, anSlots[64];
1599 for (
UINT iSlot = 0; iSlot < cSlots; ++iSlot)
1695 return m_pPidlBag->Read(pszPropName, pvari, pErrorLog);
1769 return m_pReadBag->Read(pszPropName, pvari, pErrorLog);
1803 IID_IMruPidlList, (
void**)&pMruList);
1806 hr = pMruList->InitList(200,
hKey,
L"BagMRU");
1808 pMruList->PruneKids(
m_pidl);
1851 hr = psf->GetDisplayNameOf(ppidlLast, SHGDN_FORPARSING, &strret);
1906 TRACE(
"pidl %p is removable\n", pidl);
1913 hr = pBag->Init(pidl, bag_name,
flags);
1916 ERR(
"0x%08X\n",
hr);
1922 return pBag->QueryInterface(
riid,
ppv);
1977 (
void **)&pService);
1984 return pService->GetPropertyBag(
flags,
riid, ppvObj);
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
HRESULT Copy(_In_ const VARIANT *src)
bool IsEmpty() const noexcept
void ReleaseBuffer(_In_ int nNewLength=-1)
int CompareNoCase(_In_z_ PCXSTR psz) const
virtual ~CBasePropertyBag()
CBasePropertyBag(DWORD dwMode)
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) override
STDMETHODIMP Write(_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
HRESULT _ReadFlags(VARIANT *pvari)
STDMETHODIMP Read(_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
IStream * _GetOldDesktopViewStream()
VOID _MarkAsUpgraded(HKEY hkey)
IStream * _NewStreamFromOld(IStream *pOldStream)
CDesktopUpgradePropertyBag()
HRESULT _ReadItemPositions(VARIANT *pvari)
BOOL _AlreadyUpgraded(HKEY hKey)
bool Allocate(_In_ size_t nElements=1)
static BOOL LooksLikeAnAlternateStream(LPCWSTR pszStart)
HRESULT Init(LPCWSTR pszIniFile, LPCWSTR pszSection)
STDMETHODIMP Read(_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
CIniPropertyBag(DWORD dwMode)
HRESULT _GetSectionAndName(LPCWSTR pszStart, LPWSTR pszSection, UINT cchSectionMax, LPWSTR pszName, UINT cchNameMax)
~CIniPropertyBag() override
STDMETHODIMP Write(_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
STDMETHODIMP Read(_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
STDMETHODIMP Write(_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
ATL::CSimpleMap< ATL::CStringW, ATL::CComVariant, CPropMapEqual > m_PropMap
CMemPropertyBag(DWORD dwMode)
HRESULT _ReadDword(LPCWSTR pszPropName, VARIANT *pvari)
STDMETHODIMP Write(_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
CRegPropertyBag(DWORD dwMode)
HRESULT _ReadBinary(LPCWSTR pszPropName, VARIANT *pvari, VARTYPE vt, DWORD uBytes)
HRESULT _ReadStream(VARIANT *pvari, BYTE *pInit, UINT cbInit)
HRESULT Init(HKEY hKey, LPCWSTR lpSubKey)
HRESULT _ReadString(LPCWSTR pszPropName, VARIANTARG *pvarg, UINT len)
HRESULT _CopyStreamIntoBuff(IStream *pStream, void *pv, ULONG cb)
STDMETHODIMP Read(_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
HRESULT _GetStreamSize(IStream *pStream, LPDWORD pcbSize)
~CRegPropertyBag() override
HRESULT _WriteStream(LPCWSTR pszPropName, IStream *pStream)
HRESULT _ReadGlobalDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
BOOL _EnsureGlobalDefaultsBag(DWORD dwMode, REFIID riid)
BOOL _CanAccessGlobalDefaultsBag() const
HRESULT _GetMRUSlot(LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *pSlot)
BOOL _EnsureUserDefaultsBag(DWORD dwMode, REFIID riid)
BOOL _CanAccessInheritBag() const
HRESULT _ReadInheritBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
BOOL _EnsureInheritBag(DWORD dwMode, REFIID riid)
BOOL _CanAccessFolderDefaultsBag() const
BOOL _CanAccessUpgradeBag() const
BOOL m_bFolderDefaultsBag
BOOL _EnsureReadBag(DWORD dwMode, REFIID riid)
CComPtr< IPropertyBag > m_pWriteBag
STDMETHODIMP Write(_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
STDMETHODIMP Read(_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
BOOL _CanAccessUserDefaultsBag() const
CComPtr< IPropertyBag > m_pUpgradeBag
BOOL _CanAccessPidlBag() const
BOOL m_bGlobalDefaultsBag
HRESULT _FindNearestInheritBag(REFIID riid, IPropertyBag **pppb)
HRESULT _ReadPidlBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
CComPtr< IPropertyBag > m_pInheritBag
HRESULT _GetRegKey(LPCITEMIDLIST pidl, LPCWSTR pszBagName, DWORD dwFlags, DWORD dwMode, HKEY hKey, LPWSTR pszDest, INT cchDest)
HRESULT _ReadFolderDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
CComPtr< IPropertyBag > m_pFolderDefaultsBag
CComPtr< IPropertyBag > m_pReadBag
~CViewStatePropertyBag() override
HKEY _GetHKey(DWORD dwVspbFlags)
HRESULT _GetMRUSlots(LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *puSlots, UINT cSlots, UINT *pcSlots)
BOOL _EnsurePidlBag(DWORD dwMode, REFIID riid)
CComPtr< IPropertyBag > m_pPidlBag
CComPtr< IPropertyBag > m_pGlobalDefaultsBag
BOOL IsSameBag(LPCITEMIDLIST pidl, LPCWSTR pszPath, DWORD dwVspbFlags) const
BOOL _EnsureFolderDefaultsBag(DWORD dwMode, REFIID riid)
BOOL _EnsureWriteBag(DWORD dwMode, REFIID riid)
BOOL _IsSamePidl(LPCITEMIDLIST pidlOther) const
UINT _GetMRUSize(HKEY hKey)
CComPtr< IPropertyBag > m_pUserDefaultsBag
void _ResetTryAgainFlag()
BOOL _IsSystemFolder() const
BOOL _EnsureUpgradeBag(DWORD dwMode, REFIID riid)
HRESULT _CreateBag(LPITEMIDLIST pidl, LPCWSTR pszPath, DWORD dwVspbFlags, DWORD dwMode, REFIID riid, IPropertyBag **pppb)
HRESULT _ReadUpgradeBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
HRESULT Init(_In_opt_ LPCITEMIDLIST pidl, _In_opt_ LPCWSTR pszPath, _In_ DWORD dwVspbFlags)
HRESULT _ReadUserDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
#define INVALID_HANDLE_VALUE
#define MultiByteToWideChar
BOOL WINAPI WritePrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR string, LPCWSTR filename)
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI IStream_Size(IStream *lpStream, ULARGE_INTEGER *lpulSize)
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
BOOL WINAPI PathMakeSystemFolderW(LPCWSTR lpszPath)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
BOOL WINAPI PathIsSystemFolderW(LPCWSTR lpszPath, DWORD dwAttrib)
DWORD WINAPI SHDeleteValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue)
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
DWORD WINAPI SHSetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, DWORD dwType, LPCVOID pvData, DWORD cbData)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
LPWSTR WINAPI StrCpyNW(LPWSTR dst, LPCWSTR src, int count)
int WINAPI StrCmpW(LPCWSTR lpszStr, LPCWSTR lpszComp)
LPWSTR WINAPI StrDupW(LPCWSTR lpszStr)
GLfloat GLfloat GLfloat v2
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
HRESULT SetBindOptions([in] BIND_OPTS *pbindopts)
HRESULT Write([in] LPCOLESTR pszPropName, [in] VARIANT *pVar)
HRESULT Read([out, size_is(cb), length_is(*pcbRead)] void *pv, [in] ULONG cb, [out] ULONG *pcbRead)
HRESULT CopyTo([in, unique] IStream *pstm, [in] ULARGE_INTEGER cb, [out] ULARGE_INTEGER *pcbRead, [out] ULARGE_INTEGER *pcbWritten)
HRESULT Seek([in] LARGE_INTEGER dlibMove, [in] DWORD dwOrigin, [out] ULARGE_INTEGER *plibNewPosition)
unsigned long long DWORDLONG
const char * appName(const char *argv0)
#define ERROR_FILE_NOT_FOUND
static DWORD DWORD void LPSTR DWORD cch
static HMODULE MODULEINFO DWORD cb
#define _Out_writes_(size)
#define _Out_writes_to_(size, count)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_SHARE_DELETE
#define UNREFERENCED_PARAMETER(P)
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
BSTR WINAPI SysAllocString(LPCOLESTR str)
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
const GUID IID_IPropertyBag
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
static const WCHAR szName[]
EXTERN_C HRESULT WINAPI SHGetViewStatePropertyBag(_In_opt_ PCIDLIST_ABSOLUTE pidl, _In_opt_ LPCWSTR bag_name, _In_ DWORD flags, _In_ REFIID riid, _Outptr_ void **ppv)
EXTERN_C BOOL WINAPI SHSetIniStringW(_In_z_ LPCWSTR appName, _In_z_ LPCWSTR keyName, _In_opt_z_ LPCWSTR str, _In_z_ LPCWSTR filename)
EXTERN_C BOOL WINAPI SHSetIniStringUTF7W(_In_z_ LPCWSTR lpAppName, _In_z_ LPCWSTR lpKeyName, _In_opt_z_ LPCWSTR lpString, _In_z_ LPCWSTR lpFileName)
EXTERN_C DWORD WINAPI SHGetIniStringW(_In_z_ LPCWSTR appName, _In_z_ LPCWSTR keyName, _Out_writes_to_(outLen, return+1) LPWSTR out, _In_ DWORD outLen, _In_z_ LPCWSTR filename)
EXTERN_C DWORD WINAPI SHGetIniStringUTF7W(_In_opt_z_ LPCWSTR lpAppName, _In_z_ LPCWSTR lpKeyName, _Out_writes_to_(nSize, return+1) _Post_z_ LPWSTR lpReturnedString, _In_ DWORD nSize, _In_z_ LPCWSTR lpFileName)
EXTERN_C HRESULT WINAPI SHCreatePropertyBagOnRegKey(_In_ HKEY hKey, _In_z_ LPCWSTR pszSubKey, _In_ DWORD dwMode, _In_ REFIID riid, _Out_ void **ppvObj)
struct tagOLD_STREAM_HEADER * POLD_STREAM_HEADER
static BOOL Is7BitClean(LPCWSTR psz)
#define MODE_CAN_WRITE(dwMode)
HRESULT SHGetDesktopUpgradePropertyBag(REFIID riid, void **ppvObj)
struct tagOLD_STREAM_HEADER OLD_STREAM_HEADER
static HRESULT BindCtx_CreateWithMode(DWORD dwMode, IBindCtx **ppbc)
#define MODE_CAN_READ(dwMode)
EXTERN_C VOID FreeViewStatePropertyBagCache(VOID)
static BOOL SHIsRemovableDrive(LPCITEMIDLIST pidl)
EXTERN_C INT WINAPI SHGetPerScreenResName(_Out_writes_(cchBuffer) LPWSTR pszBuffer, _In_ INT cchBuffer, _In_ DWORD dwReserved)
CRITICAL_SECTION g_csBagCacheLock
EXTERN_C HRESULT WINAPI SHCreatePropertyBagOnProfileSection(_In_z_ LPCWSTR lpFileName, _In_opt_z_ LPCWSTR pszSection, _In_ DWORD dwMode, _In_ REFIID riid, _Out_ void **ppvObj)
EXTERN_C HRESULT WINAPI IUnknown_QueryServicePropertyBag(_In_ IUnknown *punk, _In_ long flags, _In_ REFIID riid, _Outptr_ void **ppvObj)
CComPtr< CViewStatePropertyBag > g_pCachedBag
EXTERN_C HRESULT WINAPI SHCreatePropertyBagOnMemory(_In_ DWORD dwMode, _In_ REFIID riid, _Out_ void **ppvObj)
#define IsEqualGUID(rguid1, rguid2)
IStream *WINAPI SHOpenRegStream2W(HKEY hKey, LPCWSTR pszSubkey, LPCWSTR pszValue, DWORD dwMode)
IStream *WINAPI SHCreateMemStream(const BYTE *lpbData, UINT dwDataLen)
EXTERN_C INT WINAPI RealDriveType(INT drive, BOOL bQueryNet)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
static bool IsEqualKey(const ATL::CStringW &k1, const ATL::CStringW &k2)
static bool IsEqualValue(const ATL::CComVariant &v1, const ATL::CComVariant &v2)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
*nSize LPSTR _Inout_ LPDWORD nSize
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define HRESULT_FROM_WIN32(x)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define HKEY_CURRENT_USER
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
_Must_inspect_result_ _In_ ULONG Flags