31#define SEE_MASK_CLASSALL (SEE_MASK_CLASSNAME | SEE_MASK_CLASSKEY)
76 static INT s_bInDllProcess = -1;
78 if (s_bInDllProcess != -1)
79 return s_bInDllProcess;
83 return s_bInDllProcess;
91 UINT fCmic = (sei.
fMask & SEE_CMIC_COMMON_BASICFLAGS) | CMIC_MASK_FLAG_NO_UI;
92 CMINVOKECOMMANDINFO ici = {
sizeof(ici), fCmic, hWndOwner };
106 return pWide->Execute(pSEI);
114 hr = pAnsi->Execute(sei);
152 bool firstCharQuote =
false;
153 bool quotes_opened =
false;
154 bool backslash_encountered =
false;
156 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
158 firstCharQuote =
false;
161 quotes_opened =
true;
162 firstCharQuote =
true;
171 backslash_encountered = !backslash_encountered;
173 else if (*
args ==
'"')
177 if (*(
args + 1) !=
'"')
179 quotes_opened =
false;
190 quotes_opened =
true;
193 backslash_encountered =
false;
197 backslash_encountered =
false;
198 if (*
args ==
' ' && !firstCharQuote)
202 if (curArg == argNum)
219 bool quotes_opened =
false;
220 bool backslash_encountered =
false;
222 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
229 backslash_encountered = !backslash_encountered;
231 else if (*
args ==
'"')
235 if (*(
args + 1) !=
'"')
237 quotes_opened =
false;
246 quotes_opened =
true;
249 backslash_encountered =
false;
253 backslash_encountered =
false;
254 if (*
args ==
' ' && !quotes_opened && curArg != argNum)
258 if (curArg == argNum)
305 bool tildeEffect =
false;
381 if ((!done || (*
fmt ==
'1')) && lpFile)
463 ERR(
"pidl format buffer too small!\n");
485 WCHAR tmpBuffer[1024];
486 PWSTR tmpB = tmpBuffer;
497 if (envRet == 0 || envRet >
MAX_PATH)
560 hr = desktop->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &strret);
681 NULL,
Cmd, CreationFlags,
Env, Dir, pSI, pPI))
698 else if (dlgret ==
IDOK)
709 pPI->hProcess =
NULL;
714 pPI->hProcess =
NULL;
731 UINT gcdret = 0, lasterror = 0;
765 startup.dwFlags |= STARTF_TITLEISLINKNAME;
773 if (psei->
fMask & SEE_MASK_ICON)
776 startup.dwFlags |= STARTF_SHELLPRIVATE;
785 startup.dwFlags |= STARTF_SHELLPRIVATE;
793 createdProcess =
hr ==
S_OK;
823 WARN(
"CreateProcess returned error %ld\n",
retval);
836 RestoreLastError(lasterror);
864 if (!got_path)
total += 5;
915 wcscpy(
buffer,
L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\");
985 commandlen /=
sizeof(
WCHAR);
1005 paramlen /=
sizeof(
WCHAR);
1008 commandlen += paramlen;
1047 const WCHAR *search_paths[3] = {0};
1061 WARN(
"(lpFile=%s,lpResult=%s): NULL parameter\n",
1073 if (lpPath && *lpPath)
1075 search_paths[0] = lpPath;
1076 search_paths[1] = curdir;
1080 search_paths[0] = curdir;
1087 TRACE(
"PathResolveW returned non-zero\n");
1093 while (
i > 0 && xlpFile[
i - 1] ==
'.')
1095 xlpFile[--
i] =
'\0';
1104 TRACE(
"SearchPathW returned non-zero\n");
1120 if (xlpFile[0] == 0)
1122 TRACE(
"Returning SE_ERR_FNF\n");
1126 extension =
wcsrchr(xlpFile,
'.');
1131 if (extension ==
NULL || extension[1] == 0)
1133 WARN(
"Returning SE_ERR_NOASSOC\n");
1155 while (*
p && *
p !=
' ' && *
p !=
'\t')
p++;
1159 while (*
p ==
' ' || *
p ==
'\t')
p++;
1162 if (
_wcsicmp(tok, &extension[1]) == 0)
1164 wcscpy(lpResult, xlpFile);
1179 classnamelen /=
sizeof(
WCHAR);
1201 if (finishedLen > resultLen)
1202 ERR(
"Argify buffer not large enough.. truncated\n");
1204 if (*lpResult ==
'"')
1207 while (*(
p + 1) !=
'"')
1218 while (*
p !=
' ' && *
p !=
'\0')
1233 tok =
wcschr(lpResult,
'^');
1237 wcscat(lpResult, xlpFile);
1241 wcscat(lpResult, &tok[5]);
1259 HSZ hsz1, HSZ hsz2, HDDEDATA hData,
1262 TRACE(
"dde_cb: %04x, %04x, %p, %p, %p, %p, %08lx, %08lx\n",
1263 uType, uFmt, hConv, hsz1, hsz2, hData, dwData1, dwData2);
1283 WCHAR app[256],
topic[256], ifexec[256], static_res[256];
1286 LONG applen, topiclen, ifexeclen;
1290 DWORD resultLen, endkeyLen;
1303 endkeyLen =
ARRAY_SIZE(regkey) - (endkey - regkey);
1304 if (
strlenW(
L"\\application") + 1 > endkeyLen)
1309 wcscpy(endkey,
L"\\application");
1310 applen =
sizeof(app);
1322 FIXME(
"size of input parameter %s larger than buffer\n",
1369 if (
strlenW(
L"\\topic") + 1 > endkeyLen)
1375 topiclen =
sizeof(
topic);
1403 TRACE(
"Couldn't launch\n");
1407 if (ddeexec ==
NULL)
1409 TRACE(
"Exiting because ddeexec is NULL. ret=42.\n");
1415 if (
wcscmp(ddeexec,
L"") == 0)
1417 TRACE(
"Exiting because ddeexec is 'empty string'. ret=42.\n");
1425 TRACE(
"Couldn't connect. ret=%d\n",
ret);
1430 if (
strlenW(
L"\\ifexec") + 1 > endkeyLen)
1436 ifexeclen =
sizeof(ifexec);
1491 DWORD cmdlen =
sizeof(
cmd), ddeexeclen =
sizeof(ddeexec);
1508 cmdlen /=
sizeof(
WCHAR);
1515 ERR(
"Argify buffer not large enough, truncating\n");
1558 TRACE(
"returning %s\n", lpResult);
1678 allocatedPidl.
Attach(pidl);
1687 CMINVOKECOMMANDINFOEX ici;
1705 r = cm->QueryContextMenu(
hmenu, 0, 0x20, 0x7fff, CMF_DEFAULTONLY);
1710 for (
i = 0;
i <
n;
i++)
1734 memset(&ici, 0,
sizeof ici);
1735 ici.cbSize =
sizeof ici;
1736 ici.fMask = (sei->
fMask & SEE_CMIC_COMMON_BASICFLAGS) | CMIC_MASK_UNICODE;
1737 ici.nShow = sei->
nShow;
1739 ici.hwnd = sei->
hwnd;
1742 r = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1744 TRACE(
"invoke command returned %08x\n",
r);
1772 hr =
obj->Initialize(
NULL, dataobj, hkey);
1813 pidl = allocatedPidl;
1843 BOOL fDefault = StrIsNullOrEmpty(sei->
lpVerb);
1844 CMINVOKECOMMANDINFOEX ici = {
sizeof(ici) };
1845 ici.fMask = SeeFlagsToCmicFlags(sei->
fMask) | CMIC_MASK_UNICODE;
1846 ici.nShow = sei->
nShow;
1851 ici.lpVerbW = sei->
lpVerb;
1853 ici.hwnd = sei->
hwnd;
1856 ici.lpDirectory =
dir;
1859 ici.hIcon = sei->
hIcon;
1860 if (ici.fMask & (CMIC_MASK_HASLINKNAME | CMIC_MASK_HASTITLE))
1863 enum { idFirst = 1, idLast = 0x7fff };
1866 hr = cm->QueryContextMenu(hMenu, 0, idFirst, idLast, fDefault ? CMF_DEFAULTONLY : 0);
1872 uDefault = (uDefault != -1) ? uDefault - idFirst : 0;
1877 hr = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1893 HKEY hkey, hkeycm = 0;
1907 r =
RegOpenKeyW(hkey,
L"shellex\\ContextMenuHandlers", &hkeycm);
1954 execCmd,
sizeof(execCmd));
1962 if (!done && wszApplicationName[0])
1967 if (*wszApplicationName !=
'"')
1970 strcatW(wcmd, wszApplicationName);
1974 strcatW(wcmd, wszApplicationName);
1978 ERR(
"Argify buffer not large enough... truncating\n");
1979 return execfunc(wcmd,
NULL,
FALSE, psei, psei_out);
1989 wszApplicationName,
NULL, psei,
1990 psei_out, execfunc );
2005 ERR(
"parameters len exceeds buffer size (%i > %i), truncating\n",
2008 if (
strlenW(
L"explorer.exe") > dwApplicationNameLen)
2009 ERR(
"application len exceeds buffer size (%i), truncating\n",
2010 dwApplicationNameLen);
2011 lstrcpynW(wszApplicationName,
L"explorer.exe", dwApplicationNameLen);
2012 appKnownSingular =
TRUE;
2014 sei->
fMask &= ~SEE_MASK_INVOKEIDLIST;
2031 if (resultLen > dwApplicationNameLen)
2032 ERR(
"Argify buffer not large enough... truncating\n");
2033 appKnownSingular =
FALSE;
2042 appKnownSingular =
TRUE;
2044 sei->
fMask &= ~SEE_MASK_INVOKEIDLIST;
2047 return appKnownSingular;
2069 CMINVOKECOMMANDINFO ici = {
sizeof(ici) };
2070 ici.fMask = (sei->fMask & SEE_CMIC_COMMON_BASICFLAGS) & ~CMIC_MASK_UNICODE;
2071 ici.nShow = sei->nShow;
2072 ici.hwnd = sei->hwnd;
2074 if (sei->lpVerb && sei->lpVerb[0])
2078 ici.lpVerb = szVerb;
2083 const INT idCmdFirst = 1, idCmdLast = 0x7FFF;
2084 hr = pCM->QueryContextMenu(hMenu, 0, idCmdFirst, idCmdLast, CMF_DEFAULTONLY);
2093 if (nDefaultID == -1)
2094 nDefaultID = idCmdFirst;
2098 hr = pCM->InvokeCommand(&ici);
2111 if (wszParameters[0])
2123 if (wszParameters[0])
2126 strcatW(wszQuotedCmd, wszParameters);
2147 lpstrRes =
strchrW(lpFile,
':');
2149 iSize = lpstrRes - lpFile;
2161 memcpy(lpstrProtocol, lpFile, iSize *
sizeof(
WCHAR));
2162 lpstrProtocol[iSize] =
'\0';
2163 strcatW(lpstrProtocol,
L"\\shell\\");
2165 strcatW(lpstrProtocol,
L"\\command");
2168 wcmd, execfunc, psei, psei_out);
2222 return buf.Detach();
2230 static const DWORD unsupportedFlags =
2241 TRACE(
"mask=0x%08x hwnd=%p verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s\n",
2267 wszApplicationName.
Allocate(dwApplicationNameLen);
2268 *wszApplicationName =
'\0';
2272 if(
len-1 >= dwApplicationNameLen)
2273 dwApplicationNameLen =
len;
2275 wszApplicationName.
Allocate(dwApplicationNameLen);
2279 wszApplicationName[
len-2] =
'\0';
2280 appKnownSingular =
TRUE;
2287 if(
l > dwApplicationNameLen) dwApplicationNameLen =
l + 1;
2288 wszApplicationName.
Allocate(dwApplicationNameLen);
2291 if (wszApplicationName[2] == 0 && wszApplicationName[1] ==
L':' &&
2292 ((
L'A' <= wszApplicationName[0] && wszApplicationName[0] <=
L'Z') ||
2293 (
L'a' <= wszApplicationName[0] && wszApplicationName[0] <=
L'z')))
2300 WCHAR parametersBuffer[1024];
2301 LPWSTR wszParameters = parametersBuffer;
2308 if (
len > parametersLen)
2311 wszParameters = wszParamAlloc;
2312 parametersLen =
len;
2317 *wszParameters =
L'\0';
2321 LPWSTR wszDir = dirBuffer;
2332 wszDir = wszDirAlloc;
2339 wszDir = wszDirAlloc;
2363 sei_tmp.
lpFile = wszApplicationName;
2367 if (sei_tmp.
fMask & unsupportedFlags)
2369 FIXME(
"flags ignored: 0x%08x\n", sei_tmp.
fMask & unsupportedFlags);
2379 if (dwApplicationNameLen)
2382 TRACE(
"Unable to get PIDL parsing path\n");
2384 appKnownSingular =
TRUE;
2393 wszApplicationName.
Attach(tmp);
2394 sei_tmp.
lpFile = wszApplicationName;
2427 Info.pcszFile = wszApplicationName;
2457 dwApplicationNameLen );
2471 wszApplicationName.
Attach(
buf.Detach());
2472 sei_tmp.
lpFile = wszApplicationName;
2483 if (sei_tmp.
lpFile[0] ==
L'"')
2489 if (parametersLen <
_countof(parametersBuffer))
2492 wszParameters = parametersBuffer;
2497 wszParameters = wszParamAlloc;
2509 LPWSTR beg = wszApplicationName;
2534 WCHAR wcmdBuffer[1024];
2535 LPWSTR wcmd = wcmdBuffer;
2564 WCHAR wszKeyname[256];
2571 wszApplicationName,
env, &sei_tmp,
2588 wszApplicationName,
env,
2589 &sei_tmp, sei, execfunc);
2603 WCHAR lpstrTmpFile[256];
2605 strcatW(lpstrTmpFile, lpFile);
2627 TRACE(
"%p,%s,%s,%s,%s,%d\n",
2631 sei.
cbSize =
sizeof(sei);
2638 sei.
nShow = iShowCmd;
2660 DbgPrint(
"FIXME: Failed with error 0 on '%ls'\n", sei->lpFile);
2769 fOldMask = sei->
fMask;
2779 sei->
fMask = fOldMask;
2799 sei.
cbSize =
sizeof(sei);
2806 sei.
nShow = nShowCmd;
2836 seiW.
cbSize =
sizeof(seiW);
2839 seiW.
nShow = iShowCmd;
2892 for (
pch = psz + 1; *
pch && ich + 1 < cchArg0; ++ich, ++
pch)
2894 if (*
pch ==
L'"' &&
pch[1] ==
L'"')
2897 pszArg0[ich] =
L'"';
2899 else if (*
pch ==
L'"')
2908 pszArg0[ich] = *
pch;
2918 pszArg0[ich] = *
pch;
2946 if (pwszCommand ==
NULL)
3001 apPathList[0] = pwszStartDir;
3002 apPathList[1] =
NULL;
3043 info.lpVerb = pszVerb;
3044 info.lpFile = szFile;
3045 info.lpParameters = (pchParams && *pchParams) ? pchParams :
NULL;
3046 info.lpDirectory = pwszStartDir;
3073 TRACE(
"(%p, %s, %s, %s, %s, %p, %s, %p, %u, %p, %lu)\n",
3079 ExecInfo.
cbSize =
sizeof(ExecInfo);
3082 ExecInfo.
lpVerb = lpOperation;
3083 ExecInfo.
lpFile = lpFile;
3106 if (lphProcess ==
NULL)
3140 TRACE(
"(%p, %s, %s, %s, %s, %p, %s, %p, %u, %p, %lu)\n",
3146 ExecInfo.
cbSize =
sizeof(ExecInfo);
3149 ExecInfo.
lpVerb = lpOperation;
3150 ExecInfo.
lpFile = lpFile;
3173 if (lphProcess ==
NULL)
3268 if (*pszSrc ==
L'"')
3297 for (
INT ich = 0; ; ++ich)
3301 if (pszSrc[ich] && pszSrc[ich] !=
L' ')
3306 if (resolveRelative &&
3321 pchArg = pszSrc + ich;
3329 else if (!resolveRelative)
3348 pchArg = pszSrc + cchPath;
3360 return requiredSize;
3365 return requiredSize;
3378 if (!pszCmdLine || !*pszCmdLine)
3383 if (*pszCmdLine ==
L'?')
3387 fNewMask |= MaskValue;
3391 pszCmdLine = pch2ndQuestion + 1;
3408 execInfo.
fMask = fNewMask;
3412 execInfo.
nShow = nCmdShow;
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define IID_PPV_ARG(Itype, ppType)
#define PRF_TRYPROGRAMEXTENSIONS
#define shell32_hInstance
#define SECL_ALLOW_NONEXE
#define DECLSPEC_HOTPATCH
static void startup(void)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define IDS_FILE_NOT_FOUND
#define UlongToHandle(ul)
#define RegCloseKey(hKey)
bool Allocate(_In_ size_t nElements=1)
static LPCWSTR LPCWSTR LPCWSTR env
HDDEDATA WINAPI DdeClientTransaction(LPBYTE, DWORD, HCONV, HSZ, UINT, UINT, DWORD, LPDWORD)
BOOL WINAPI DdeUninitialize(DWORD)
UINT WINAPI DdeInitializeW(LPDWORD, PFNCALLBACK, DWORD, DWORD)
HCONV WINAPI DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT)
UINT WINAPI DdeGetLastError(DWORD)
HSZ WINAPI DdeCreateStringHandleW(DWORD, LPCWSTR, INT)
BOOL WINAPI DdeDisconnect(HCONV)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
#define APPCMD_CLIENTONLY
UINT WINAPI DdeInitializeA(LPDWORD, PFNCALLBACK, DWORD, DWORD)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
BOOL WINAPI CreateProcessWithLogonW(_In_ LPCWSTR lpUsername, _In_opt_ LPCWSTR lpDomain, _In_ LPCWSTR lpPassword, _In_ DWORD dwLogonFlags, _In_opt_ LPCWSTR lpApplicationName, _Inout_opt_ LPWSTR lpCommandLine, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCWSTR lpCurrentDirectory, _In_ LPSTARTUPINFOW lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
#define ERROR_INVALID_PARAMETER
#define GetCurrentDirectoryW(x, y)
#define GetEnvironmentVariableW(x, y, z)
#define ERROR_NOT_SUPPORTED
#define WideCharToMultiByte
#define ERROR_ACCESS_DENIED
static const WCHAR *const ext[]
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
VOID WINAPI ExitProcess(IN UINT uExitCode)
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
INT WINAPI GetProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
void WINAPI PathRemoveBlanksW(WCHAR *path)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
HRESULT WINAPI PathCreateFromUrlW(const WCHAR *url, WCHAR *path, DWORD *pcchPath, DWORD dwReserved)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
BOOL WINAPI UrlIsW(const WCHAR *url, URLIS Urlis)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
BOOL WINAPI PathStripToRootW(WCHAR *path)
BOOL WINAPI PathIsURLW(const WCHAR *path)
WCHAR *WINAPI PathGetArgsW(const WCHAR *path)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
LPWSTR WINAPI DECLSPEC_HOTPATCH GetEnvironmentStringsW(void)
BOOL WINAPI SHRegGetBoolUSValueW(const WCHAR *subkey, const WCHAR *value, BOOL ignore_hkcu, BOOL default_value)
BOOL WINAPI StrToIntExW(const WCHAR *str, DWORD flags, INT *ret)
BOOL WINAPI StrTrimW(WCHAR *str, const WCHAR *trim)
LPWSTR WINAPI CharLowerW(WCHAR *str)
WCHAR *WINAPI StrDupW(const WCHAR *str)
int WINAPI StrCmpIW(const WCHAR *str, const WCHAR *comp)
WCHAR *WINAPI StrCpyNW(WCHAR *dst, const WCHAR *src, int count)
DWORD WINAPI GetVersion(void)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t)
EXTERN_C HRESULT SHGetNameAndFlagsW(_In_ LPCITEMIDLIST pidl, _In_ DWORD dwFlags, _Out_opt_ LPWSTR pszText, _In_ UINT cchBuf, _Inout_opt_ DWORD *pdwAttributes)
EXTERN_C HRESULT SHELL_GetUIObjectOfAbsoluteItem(_In_opt_ HWND hWnd, _In_ PCIDLIST_ABSOLUTE pidl, _In_ REFIID riid, _Out_ void **ppvObj)
HRESULT SHCoInitializeAnyApartment(VOID)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI SHExtCoCreateInstance(_In_opt_ LPCWSTR aclsid, _In_opt_ const CLSID *clsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ REFIID riid, _Out_ LPVOID *ppv)
BOOL WINAPI PathResolveW(WCHAR *path, const WCHAR **dirs, DWORD flags)
DWORD WINAPI SHGetAppCompatFlags(_In_ DWORD dwMask)
HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc, LPCWSTR pszExtra, LPWSTR pszOut, DWORD *pcchOut)
HANDLE WINAPI SHAllocShared(LPCVOID lpvData, DWORD dwSize, DWORD dwProcId)
PVOID WINAPI SHLockShared(HANDLE hShared, DWORD dwProcId)
BOOL WINAPI SHUnlockShared(LPVOID lpView)
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
BOOL WINAPI PathFindOnPathW(LPWSTR lpszFile, LPCWSTR *lppszOtherDirs)
BOOL WINAPI PathFindOnPathExW(LPWSTR lpszFile, LPCWSTR *lppszOtherDirs, DWORD dwWhich)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
#define FAILED_UNEXPECTEDLY
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLsizei const GLchar *const * strings
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
nsresult QueryInterface(nsIIDRef riid, void **result)
_In_ BOOL _In_ HANDLE hProcess
#define EXCEPTION_ACCESS_VIOLATION
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define _swprintf(buf, format,...)
static IPrintDialogCallback callback
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define _Out_writes_opt_(s)
#define FILE_ATTRIBUTE_DIRECTORY
#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
#define PathAddExtensionW
#define PathAddBackslashW
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
static const WCHAR szName[]
struct _STARTUPINFOW STARTUPINFOW
static const char topic[]
HMENU WINAPI CreatePopupMenu(void)
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
#define GetWindowLongPtrW
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
HMENU WINAPI CreateMenu(void)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetDesktopWindow(void)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
DWORD WINAPI WaitForInputIdle(_In_ HANDLE, _In_ DWORD)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define MAKEINTRESOURCEW(i)
#define SetWindowLongPtrW
BOOL WINAPI IsWindowVisible(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define REGSTR_PATH_EXPLORER
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
HRESULT HCR_GetProgIdKeyOfExtension(PCWSTR szExtension, PHKEY phKey, BOOL AllowFallback)
@ REST_SH32_ENABLESHELLEXECUTEHOOKS
static __inline void __SHCloneStrWtoA(char **target, const WCHAR *source)
DWORD SH32_InternalRestricted(DWORD rest)
static __inline LPWSTR __SHCloneStrAtoW(WCHAR **target, const char *source)
static __inline void __SHCloneStrW(WCHAR **target, const WCHAR *source)
#define SEE_MASK_FLAG_LOG_USAGE
#define SEE_MASK_DOENVSUBST
#define SEE_MASK_CLASSKEY
#define SEE_MASK_NOCLOSEPROCESS
struct _SHELLEXECUTEINFOW SHELLEXECUTEINFOW
#define SEE_MASK_HMONITOR
#define SEE_MASK_CLASSNAME
#define SE_ERR_ACCESSDENIED
#define SE_ERR_DLLNOTFOUND
#define SEE_MASK_WAITFORINPUTIDLE
#define SEE_MASK_FLAG_DDEWAIT
#define SEE_MASK_CONNECTNETDRV
_In_opt_ LPCSTR lpDirectory
#define SEE_MASK_INVOKEIDLIST
#define SEE_MASK_FLAG_NO_UI
#define SE_ERR_DDETIMEOUT
#define SEE_MASK_NO_CONSOLE
LONG WINAPI SHRegQueryValueExW(HKEY hkey, LPCWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
static HRESULT ShellExecute_ContextMenuVerb(LPSHELLEXECUTEINFOW sei)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExA(LPSHELLEXECUTEINFOA sei)
static UINT_PTR InvokeOpenWith(HWND hWndOwner, SHELLEXECUTEINFOW &sei)
EXTERN_C VOID WINAPI ShellExec_RunDLLW(_In_opt_ HWND hwnd, _In_opt_ HINSTANCE hInstance, _In_ PCWSTR pszCmdLine, _In_ INT nCmdShow)
HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
static HRESULT shellex_load_object_and_run(HKEY hkey, LPCGUID guid, LPSHELLEXECUTEINFOW sei)
static HRESULT PromptAndRunProcessAs(_In_opt_ HWND hwnd, _In_ LPWSTR Cmd, _In_ DWORD CreationFlags, _In_opt_ LPWSTR Env, _In_opt_ LPCWSTR Dir, _In_ STARTUPINFOW *pSI, _Out_ PROCESS_INFORMATION *pPI)
static void do_error_dialog(UINT_PTR retval, HWND hwnd, PCWSTR filename)
static void ParseNoTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
static BOOL SHELL_InvokePidl(_In_ LPSHELLEXECUTEINFOW sei, _In_ LPCITEMIDLIST pidl)
EXTERN_C void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow)
static LPCWSTR SplitParams(LPCWSTR psz, LPWSTR pszArg0, size_t cchArg0)
EXTERN_C HINSTANCE WINAPI RealShellExecuteExW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR lpOperation, _In_opt_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpParameters, _In_opt_ LPCWSTR lpDirectory, _In_opt_ LPWSTR lpReturn, _In_opt_ LPCWSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess, _In_ DWORD dwFlags)
static UINT_PTR execute_from_key(LPCWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline, LPCWSTR executable_name, SHELL_ExecuteW32 execfunc, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out)
static INT_PTR CALLBACK RunAsDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
EXTERN_C void WINAPI OpenAs_RunDLLW(HWND hwnd, HINSTANCE hinst, LPCWSTR cmdline, int cmdshow)
static LONG ShellExecute_FromContextMenuHandlers(LPSHELLEXECUTEINFOW sei)
static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, LPWSTR lpResult, DWORD resultLen, LPWSTR key, WCHAR **env, LPITEMIDLIST pidl, LPCWSTR args)
static UINT_PTR ExecuteFailed(UINT_PTR retval, SHELLEXECUTEINFOW &sei, LPCWSTR lpFile, BOOL AllowOpenWith=TRUE)
static DWORD ShellExecute_Normal(_Inout_ LPSHELLEXECUTEINFOW sei)
EXTERN_C VOID WINAPI ShellExec_RunDLLA(_In_opt_ HWND hwnd, _In_opt_ HINSTANCE hInstance, _In_ PCSTR pszCmdLine, _In_ INT nCmdShow)
EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd, void *callback)
static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc)
static HDDEDATA CALLBACK dde_cb(UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2)
static BOOL SHELL_ArgifyW(WCHAR *out, DWORD len, const WCHAR *fmt, const WCHAR *lpFile, LPITEMIDLIST pidl, LPCWSTR args, DWORD *out_len, const WCHAR *lpDir)
#define SEE_MASK_CLASSALL
static WCHAR * expand_environment(const WCHAR *str)
static HRESULT TryShellExecuteHooks(LPSHELLEXECUTEINFOW pSEI)
HINSTANCE WINAPI FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
EXTERN_C LONG PathProcessCommandW(_In_ PCWSTR pszSrc, _Out_writes_opt_(dwBuffSize) PWSTR pszDest, _In_ INT cchDest, _In_ DWORD dwFlags)
struct _RUNASDLGDATA RUNASDLGDATA
static unsigned dde_connect(const WCHAR *key, const WCHAR *start, WCHAR *ddeexec, const WCHAR *lpFile, WCHAR *env, LPCWSTR szCommandline, LPITEMIDLIST pidl, SHELL_ExecuteW32 execfunc, const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out)
static VOID ShellExecute_ShowError(_In_ const SHELLEXECUTEINFOW *ExecInfo, _In_opt_ LPCWSTR pszCaption, _In_ DWORD dwError)
EXTERN_C BOOL PathIsExeW(LPCWSTR lpszPath)
static HRESULT shellex_run_context_menu_default(IShellExtInit *obj, LPSHELLEXECUTEINFOW sei)
static HRESULT InvokeShellExecuteHook(PCWSTR pszClsid, LPSHELLEXECUTEINFOW pSEI)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
static UINT SHELL_FindExecutableByVerb(LPCWSTR lpVerb, LPWSTR key, LPWSTR classname, LPWSTR command, LONG commandlen)
static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out)
static BOOL SHELL_InRunDllProcess(VOID)
static HWND SHELL_GetUsableDialogOwner(HWND hWnd)
static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters, DWORD parametersLen, LPWSTR wszApplicationName, DWORD dwApplicationNameLen)
static HKEY ShellExecute_GetClassKey(const SHELLEXECUTEINFOW *sei)
static HRESULT shellex_get_contextmenu(LPSHELLEXECUTEINFOW sei, CComPtr< IContextMenu > &cm)
EXTERN_C HINSTANCE WINAPI RealShellExecuteA(_In_opt_ HWND hwnd, _In_opt_ LPCSTR lpOperation, _In_opt_ LPCSTR lpFile, _In_opt_ LPCSTR lpParameters, _In_opt_ LPCSTR lpDirectory, _In_opt_ LPSTR lpReturn, _In_opt_ LPCSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess)
static HRESULT shellex_get_dataobj(LPSHELLEXECUTEINFOW sei, CComPtr< IDataObject > &dataObj)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
static VOID ShellExec_RunDLL_Helper(_In_opt_ HWND hwnd, _In_opt_ HINSTANCE hInstance, _In_ PCWSTR pszCmdLine, _In_ INT nCmdShow)
static LPWSTR SHELL_BuildEnvW(const WCHAR *path)
UINT_PTR(* SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out)
static HRESULT SHELL_GetPathFromIDListForExecuteW(LPCITEMIDLIST pidl, LPWSTR pszPath, UINT uOutSize)
static void ParseTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd)
EXTERN_C HINSTANCE WINAPI RealShellExecuteExA(_In_opt_ HWND hwnd, _In_opt_ LPCSTR lpOperation, _In_opt_ LPCSTR lpFile, _In_opt_ LPCSTR lpParameters, _In_opt_ LPCSTR lpDirectory, _In_opt_ LPSTR lpReturn, _In_opt_ LPCSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess, _In_ DWORD dwFlags)
static BOOL SHELL_TryAppPathW(LPCWSTR szName, LPWSTR lpResult, WCHAR **env)
static int Win32ErrFromHInst(HINSTANCE hInst)
static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR wszKeyname, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
EXTERN_C HINSTANCE WINAPI RealShellExecuteW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR lpOperation, _In_opt_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpParameters, _In_opt_ LPCWSTR lpDirectory, _In_opt_ LPWSTR lpReturn, _In_opt_ LPCWSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess)
#define PPCF_FORCEQUALIFY
#define PPCF_LONGESTPOSSIBLE
@ OAIF_ALLOW_REGISTRATION
#define PPCF_ADDARGUMENTS
#define PPCF_NODIRECTORIES
#define SHACF_WIN95SHLEXEC
#define IDC_RUNAS_CURRENT
#define IDS_SHLEXEC_NOASSOC
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
WCHAR NameBuffer[MAX_PATH]
#define EXCEPTION_NONCONTINUABLE
#define LANG_USER_DEFAULT
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define SEE_MASK_USE_RESERVED
#define SEE_MASK_FLAG_SEPVDM
#define SEE_MASK_HASTITLE
#define SEE_MASK_NO_HOOKS
#define SEE_MASK_UNKNOWN_0x1000
#define SEE_MASK_HASLINKNAME
#define INVALID_FILE_ATTRIBUTES
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
#define LOGON_WITH_PROFILE
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
#define CREATE_UNICODE_ENVIRONMENT
#define FORMAT_MESSAGE_FROM_SYSTEM
#define CREATE_SEPARATE_WOW_VDM
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define LOGON_NETCREDENTIALS_ONLY
#define CREATE_NEW_CONSOLE
#define strncmpiW(s1, s2, n)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_APP_WRONG_OS
#define ERROR_INVALID_LOGON_HOURS
#define ERROR_SHARING_VIOLATION
#define HRESULT_FACILITY(hr)
#define ERROR_ACCOUNT_RESTRICTION
#define ERROR_LOGON_FAILURE
#define ERROR_INVALID_ACCOUNT_NAME
#define ERROR_DLL_NOT_FOUND
#define ERROR_NO_ASSOCIATION
#define ERROR_INVALID_DLL
#define ERROR_SINGLE_INSTANCE_APP
#define ERROR_OLD_WIN_VERSION
#define ERROR_ACCOUNT_DISABLED
#define ERROR_NO_SUCH_USER
#define ERROR_FUNCTION_FAILED
#define ERROR_PASSWORD_EXPIRED
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
#define HKEY_LOCAL_MACHINE
#define HKEY_CLASSES_ROOT
#define IID_NULL_PPV_ARG(Itype, ppType)