34#define ASSOCQUERY_DE (ASSOCQUERY_DIRECT | ASSOCQUERY_EXISTS)
35#define ASSOCQUERY_SDE (ASSOCQUERY_STRING | ASSOCQUERY_DE)
36#define ASSOCQUERY_SDED (ASSOCQUERY_SDE | ASSOCQUERY_DWORD)
37#define ASSOCQUERY_SDEI (ASSOCQUERY_SDE | ASSOCQUERY_INDIRECT)
38#define ASSOCQUERY_SDEEV (ASSOCQUERY_SDE | ASSOCQUERY_EXTRA_VERB)
40#define ASSOCQUERY_DEFAULTICON (ASSOCQUERY_SDE | 0x1)
41#define ASSOCQUERY_CLSID (ASSOCQUERY_SDE | 0x3)
42#define ASSOCQUERY_PROGID (ASSOCQUERY_SDE | 0x4)
43#define ASSOCQUERY_SHELLEX (ASSOCQUERY_SDE | ASSOCQUERY_FALLBACK | ASSOCQUERY_EXTRA_NON_VERB | 0x2)
44#define ASSOCQUERY_NOACTIVATEHANDLER (ASSOCQUERY_DE | ASSOCQUERY_EXTRA_VERB | 0x5)
45#define ASSOCQUERY_COMMAND_COMMAND (ASSOCQUERY_DE | ASSOCQUERY_EXTRA_VERB | 0x6)
46#define ASSOCQUERY_FRIENDLYAPPNAME ASSOCQUERY_SDEI
47#define ASSOCQUERY_VERB_FRIENDLYAPPNAME (ASSOCQUERY_SDEI | ASSOCQUERY_EXTRA_VERB | 0x8)
48#define ASSOCQUERY_COMMAND ASSOCQUERY_SDEEV
49#define ASSOCQUERY_DDEEXEC (ASSOCQUERY_SDEEV | 0x1)
50#define ASSOCQUERY_DDEEXEC_IFEXEC (ASSOCQUERY_SDEEV | 0x2)
51#define ASSOCQUERY_DDEEXEC_APPLICATION (ASSOCQUERY_SDEEV | 0x3)
52#define ASSOCQUERY_DDEEXEC_TOPIC (ASSOCQUERY_SDEEV | 0x4)
53#define ASSOCQUERY_LOCALIZEDSTRING (ASSOCQUERY_SDEI | ASSOCQUERY_EXTRA_NON_VERB | 0x1)
54#define ASSOCQUERY_SEV_7 (ASSOCQUERY_STRING | ASSOCQUERY_EXTRA_VERB | 0x7)
55#define ASSOCQUERY_APPKEY_FRIENDLYAPPNAME (ASSOCQUERY_SDEEV | ASSOCQUERY_INDIRECT | 0x8)
56#define ASSOCQUERY_CONTENT_TYPE (ASSOCQUERY_SDE | ASSOCQUERY_FALLBACK | 0x2)
57#define ASSOCQUERY_DELEGATE (ASSOCQUERY_STRING | ASSOCQUERY_EXTRA_VERB | 0x7)
58#define ASSOCQUERY_OBJECT_EV_1 (ASSOCQUERY_OBJECT | ASSOCQUERY_EXTRA_VERB | 0x1)
101 for (
UINT iItem = 0; iItem < cItems; ++iItem)
111 WCHAR szOutBuf[1024];
130 IQuerySourceOld* pSource,
134 IQuerySourceOld** ppSource)
138 return pSource->OpenSource(szDest,
bCreate, ppSource);
146 if (!lpsz || *lpsz !=
'.' || !lpsz[1])
166 if (lpSubKey && *lpSubKey)
182 IQuerySourceOld* pSource,
188 return pSource->QueryValueDirect(keyName, valueName, (FLAGGED_BYTE_BLOB**)
pValue);
193 IQuerySourceOld* pSource,
199 return pSource->QueryValueDword(keyName, valueName, (
PDWORD)
pValue);
204 IQuerySourceOld* pSource,
210 return pSource->QueryValueExists(keyName, valueName);
215 IQuerySourceOld* pSource,
239 IQuerySourceOld** ppSource)
280 if (
StrCmpIW(
L"Excel.Sheet.8", psz) == 0)
342 NULL, &pszParameters);
353 *ppszApplication =
NULL;
365 pchComma - pszParameters);
401 :
public IObjectWithQuerySourceOld
402 ,
public IAssociationElementOld
412 IQuerySourceOld* pQS,
419 IQuerySourceOld* pSource,
451 ,
public IPersistString2
666 IQuerySourceOld* pQS,
688 IQuerySourceOld* pSource,
718 *
ppv =
static_cast<IObjectWithQuerySourceOld*
>(
this);
722 if (
riid == IID_IAssociationElementOld)
724 *
ppv =
static_cast<IAssociationElementOld*
>(
this);
814 if (
riid == IID_IPersistString2)
816 *
ppv =
static_cast<IPersistString2*
>(
this);
825 return CAssocElement::AddRef();
830 return CAssocElement::Release();
860 IQuerySourceOld* pSource;
873 ERR(
"E_OUTOFMEMORY\n");
878 hr = pElement->SetSource(pSource);
879 *ppElement =
static_cast<IAssociationElementOld*
>(pElement);
889 IAssociationElementOld* pDelegate;
894 hr = pDelegate->QueryString(
query,
NULL, ppszValue);
904 IAssociationElementOld* pDelegate;
919 IAssociationElementOld* pDelegate;
935 IAssociationElementOld* pDelegate;
954 IAssociationElementOld* pDelegate;
970 *pClassID = CLSID_AssocShellElement;
983 cchBuff = cchString + 1;
1007 IQuerySourceOld* pShellSource;
1017 hr = pShellSource->OpenSource(pszVerb,
FALSE, ppSource);
1038 hr = pShellSource->OpenSource(pszFirst,
FALSE, ppSource);
1049 pShellSource->Release();
1058 : m_bAppSource(bAppSource)
1099 IAssociationElementOld* pElement;
1124 IPersistString2* pPS2;
1128 hr = pPS2->SetString(psz);
1176 *pClsid = CLSID_AssocApplicationElement;
1273 *pClassID = CLSID_AssocProgidElement;
1334 *pClassID = CLSID_AssocClsidElement;
1349 *pClassID = CLSID_AssocSystemElement;
1372 *pClassID = CLSID_AssocFolderElement;
1396 *pClassID = CLSID_AssocStarElement;
1426 *pClassID = CLSID_AssocPerceivedElement;
1477 IAssociationElementOld* pDelegate;
1500 *pClassID = CLSID_AssocClientElement;
1523 DWORD dwDisposition;
1537 IQuerySourceOld* pNewSource =
NULL;
1560 L"Software\\Clients\\Mail\\Netscape Messenger",
1618 lstrcmpiW(szData,
L"Netscape Messenger") != 0 ||
1637 IAssociationElementOld* pElement;
1638 if (rclsid == CLSID_AssocShellElement)
1641 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1643 else if (rclsid == CLSID_AssocApplicationElement)
1646 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1648 else if (rclsid == CLSID_AssocProgidElement)
1651 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1653 else if (rclsid == CLSID_AssocClsidElement)
1656 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1658 else if (rclsid == CLSID_AssocSystemElement)
1661 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1663 else if (rclsid == CLSID_AssocFolderElement)
1666 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1668 else if (rclsid == CLSID_AssocStarElement)
1671 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1673 else if (rclsid == CLSID_AssocPerceivedElement)
1676 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1678 else if (rclsid == CLSID_AssocClientElement)
1681 pElement =
static_cast<IAssociationElementOld*
>(pNewElement);
1692 ERR(
"E_OUTOFMEMORY\n");
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
HRESULT _InitSource() override
HRESULT _GetAppDisplayName(PWSTR *ppsz)
UINT _GetQueryKeyVal(const QUERYKEYVAL **ppItems) override
STDMETHODIMP GetClassID(CLSID *pClsid) override
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppv) override
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppsz) override
HRESULT _InitSourceFromKey(HKEY hKey, PCWSTR lpSubKey, DWORD dwFlags)
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
HRESULT _FixNetscapeRegistration()
HRESULT _InitSource() override
STDMETHODIMP GetClassID(CLSID *pClassID) override
BOOL _CreateRepairedNetscapeRegistration(HKEY hKey)
HRESULT _InitSource() override
STDMETHODIMP GetClassID(CLSID *pClassID) override
STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv) override
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
STDMETHODIMP SetSource(IQuerySourceOld *pSource) override
STDMETHODIMP QueryDirect(ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) override
STDMETHODIMP QueryExists(ASSOCQUERY query, PCWSTR key) override
IQuerySourceOld * m_pSource
HRESULT _QueryKeyValAny(QUERY_CALLBACK callback, const QUERYKEYVAL *pItems, UINT cItems, IQuerySourceOld *pQS, ASSOCQUERY query, PCWSTR valueName, PVOID pValue)
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
STDMETHODIMP QueryDword(ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) override
HRESULT _QuerySourceAny(QUERY_CALLBACK callback, IQuerySourceOld *pSource, DWORD dwFlags, ASSOCQUERY query, PCWSTR valueName, PVOID pValue)
virtual UINT _GetQueryKeyVal(const QUERYKEYVAL **ppItems)
STDMETHODIMP GetSource(REFIID riid, PVOID *ppSource) override
HRESULT _InitSource() override
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
STDMETHODIMP GetClassID(CLSID *pClassID) override
UINT _GetQueryKeyVal(const QUERYKEYVAL **ppItems) override
HRESULT _GetVerbDelegate(PCWSTR pszSrc, IAssociationElementOld **ppElement) override
HRESULT _InitSource() override
STDMETHODIMP GetSource(REFIID riid, PVOID *ppSource) override
STDMETHODIMP GetClassID(CLSID *pClassID) override
HRESULT _InitSource() override
STDMETHODIMP GetClassID(CLSID *pClassID) override
BOOL _UseEnumForDefaultVerb() override
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
IQuerySourceOld * m_pSource2
~CAssocProgidElement() override
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
STDMETHODIMP SetString(PCWSTR psz) override
STDMETHODIMP GetClassID(CLSID *pClassID) override
virtual BOOL _IsAppSource()
STDMETHODIMP QueryDword(ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) override
STDMETHODIMP GetString(PWSTR *ppsz) override
virtual HRESULT _InitSource()
UINT _GetQueryKeyVal(const QUERYKEYVAL **ppItems) override
STDMETHODIMP_(ULONG) AddRef() override
virtual BOOL _UseEnumForDefaultVerb()
STDMETHODIMP QueryExists(ASSOCQUERY query, PCWSTR key) override
STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv) override
STDMETHODIMP QueryDirect(ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) override
HRESULT _DefaultVerbSource(IQuerySourceOld **ppSource)
virtual HRESULT _GetVerbDelegate(PCWSTR pszSrc, IAssociationElementOld **ppElement)
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
STDMETHODIMP_(ULONG) Release() override
UINT _GetQueryKeyVal(const QUERYKEYVAL **ppItems) override
CAssocShellVerbElement(BOOL bAppSource)
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppwsz) override
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
HRESULT _GetAppDelegate(REFIID riid, PVOID *ppv)
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
STDMETHODIMP GetClassID(CLSID *pClassID) override
HRESULT _InitSource() override
HRESULT _InitSource() override
STDMETHODIMP GetClassID(CLSID *pClassID) override
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
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)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
void WINAPI CoTaskMemFree(void *ptr)
int WINAPI StrCSpnW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
void WINAPI PathRemoveExtensionW(WCHAR *path)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
void WINAPI PathStripPathW(WCHAR *path)
int WINAPI PathParseIconLocationW(WCHAR *path)
HRESULT WINAPI PathCchAddExtension(WCHAR *path, SIZE_T size, const WCHAR *extension)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
BOOL WINAPI PathIsFileSpecW(const WCHAR *path)
HRESULT WINAPI PathCchCombineEx(WCHAR *out, SIZE_T size, const WCHAR *path1, const WCHAR *path2, DWORD flags)
void WINAPI PathQuoteSpacesW(WCHAR *path)
LPWSTR WINAPI CharUpperW(WCHAR *str)
HRESULT WINAPI SHLoadIndirectString(const WCHAR *src, WCHAR *dst, UINT dst_len, void **reserved)
int WINAPI StrCmpIW(const WCHAR *str, const WCHAR *comp)
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
DWORD WINAPI SHGetValueW(HKEY hkey, const WCHAR *subkey, const WCHAR *value, DWORD *type, void *data, DWORD *data_len)
DWORD WINAPI SHDeleteKeyW(HKEY hkey, const WCHAR *subkey)
HRESULT WINAPI AssocGetPerceivedType(LPCWSTR lpszExt, PERCEIVED *lpType, INT *lpFlag, LPWSTR *lppszType)
HRESULT WINAPI SKGetValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD *type, void *data, DWORD *count)
HRESULT WINAPI SKSetValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD type, void *data, DWORD count)
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
BOOL WINAPI SHGetFileDescriptionW(_In_ PCWSTR pszPath, _In_opt_ PCWSTR pszVerKey, _In_opt_ PCWSTR pszDisplayName, _Out_opt_ PWSTR pszOut, _Inout_ PUINT pcchOut)
#define FAILED_UNEXPECTEDLY
static HRESULT _AssocOpenRegKey(HKEY hKey, PCWSTR lpSubKey, PHKEY phkResult, BOOL bCreate)
static HRESULT _GetFileTypeName(PWSTR lpsz, PWSTR *ppwsz)
static LSTATUS _RegQueryString(HKEY hKey, PCWSTR lpSubKey, PWSTR lpData, LONG cchData)
#define ASSOCQUERY_DELEGATE
static const QUERYKEYVAL g_shellVerbKeyVals[]
static HRESULT CALLBACK _QuerySourceString(IQuerySourceOld *pSource, ASSOCQUERY query, PCWSTR keyName, PCWSTR valueName, PVOID pValue)
static HRESULT _QuerySourceCreateFromKey(HKEY hKey, PCWSTR lpSubKey, BOOL bCreate, IQuerySourceOld **ppSource)
#define ASSOCQUERY_CONTENT_TYPE
struct QUERYKEYVAL * PQUERYKEYVAL
#define ASSOCQUERY_COMMAND_COMMAND
#define ASSOCQUERY_DDEEXEC
#define ASSOCQUERY_SHELLEX
#define ASSOCQUERY_DDEEXEC_TOPIC
#define ASSOCQUERY_VERB_FRIENDLYAPPNAME
static const QUERYKEYVAL g_progidKeyVals[2]
static void _MakeApplicationsKey(PCWSTR pszPath, PWSTR pszDest, UINT cchDest)
#define ASSOCQUERY_DDEEXEC_IFEXEC
static LSTATUS _RegSetVolatileString(HKEY hKey, PCWSTR lpSubKey, PCWSTR lpString)
static HRESULT CALLBACK _QuerySourceExists(IQuerySourceOld *pSource, ASSOCQUERY query, PCWSTR keyName, PCWSTR valueName, PVOID pValue)
HRESULT(CALLBACK * QUERY_CALLBACK)(IQuerySourceOld *, ASSOCQUERY query, PCWSTR keyName, PCWSTR valueName, PVOID pValue)
#define ASSOCQUERY_LOCALIZEDSTRING
static HRESULT CALLBACK _QuerySourceDirect(IQuerySourceOld *pSource, ASSOCQUERY query, PCWSTR keyName, PCWSTR valueName, PVOID pValue)
static BOOL _ParamIsApp(PCWSTR psz)
static const QUERYKEYVAL g_perceivedKeyVals[]
static HRESULT SHAllocMUI(PWSTR *ppwsz)
#define ASSOCQUERY_FRIENDLYAPPNAME
static HKEY _OpenProgidKey(PCWSTR psz)
#define ASSOCQUERY_DEFAULTICON
static const QUERYKEYVAL g_shellAppKeyVals[]
#define ASSOCQUERY_PROGID
static HRESULT _SHAllocLoadString(HINSTANCE hInstance, UINT uID, PWSTR *ppwsz)
EXTERN_C HRESULT WINAPI AssocCreateElement(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ PVOID *ppvObj)
#define ASSOCQUERY_OBJECT_EV_1
static HRESULT QSOpen2(IQuerySourceOld *pSource, PCWSTR key, PCWSTR pszSrc, BOOL bCreate, IQuerySourceOld **ppSource)
#define ASSOCQUERY_APPKEY_FRIENDLYAPPNAME
static const QUERYKEYVAL * _FindKeyVal(ASSOCQUERY query, const QUERYKEYVAL *pItems, UINT cItems)
static HRESULT _QuerySourceCreateFromKey2(HKEY hKey, PCWSTR key1, PCWSTR key2, IQuerySourceOld **ppSource)
static HRESULT CALLBACK _QuerySourceDword(IQuerySourceOld *pSource, ASSOCQUERY query, PCWSTR keyName, PCWSTR valueName, PVOID pValue)
#define ASSOCQUERY_DDEEXEC_APPLICATION
#define ASSOCQUERY_NOACTIVATEHANDLER
static HRESULT _PathFileExists(PCWSTR lpFileName)
#define ASSOCQUERY_COMMAND
static const QUERYKEYVAL g_shellKeyVals[]
static HRESULT _ExeFromCmd(PCWSTR pszCmdTemplate, PWSTR *ppszApplication)
EXTERN_C HRESULT _PathCopyExeAndTrimWhiteSpaces(PWSTR pszBuff, size_t cchBuff, PCWSTR pszSrc, size_t cchSrc)
EXTERN_C HRESULT _PathFindInSystem(_Inout_ PWSTR pszPath, _In_ UINT cchPath)
EXTERN_C HRESULT WINAPI SHEvaluateSystemCommandTemplate(_In_ PCWSTR pszCmdTemplate, _Outptr_ PWSTR *ppszApplication, _Outptr_opt_ PWSTR *ppszCommandLine, _Outptr_opt_ PWSTR *ppszParameters)
GLuint GLuint GLsizei GLenum type
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] LPOLESTR *rgelt, [out] ULONG *pceltFetched)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define ERROR_FILE_NOT_FOUND
static IPrintDialogCallback callback
static ULONG WINAPI AddRef(IStream *iface)
static int int const SCRIPT_CONTROL const SCRIPT_STATE SCRIPT_ITEM * pItems
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define FILE_ATTRIBUTE_DIRECTORY
#define REG_OPENED_EXISTING_KEY
#define REG_OPTION_VOLATILE
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
#define PERCEIVEDFLAG_NATIVESUPPORT
EXTERN_C HRESULT WINAPI QuerySourceCreateFromKey(_In_ HKEY hKey, _In_opt_ PCWSTR lpSubKey, _In_ BOOL bCreate, _In_ REFIID riid, _Outptr_ PVOID *ppv)
static __inline const char * wine_dbgstr_guid(const GUID *id)
#define IID_IObjectWithQuerySourceOld
_In_ int _In_ BOOL bCreate
#define ASSOCQUERY_DIRECT
#define ASSOCQUERY_STRING
#define ASSOCQUERY_INDIRECT
#define ASSOCQUERY_EXTRA_VERB
#define ASSOCQUERY_EXTRA_NON_VERB
#define ASSOCQUERY_FALLBACK
#define ASSOCQUERY_OBJECT
static BOOL PathIsAbsolute(_In_ PCWSTR pszPath)
enum tagPERCEIVED PERCEIVED
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_NO_ASSOCIATION
#define CLASS_E_CLASSNOTAVAILABLE
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT
#define IID_PPV_ARG(Itype, ppType)