Fixed windows/init.c to properly report HRESULT error codes.
This commit is contained in:
parent
cf05629175
commit
680c9face7
|
@ -13,11 +13,10 @@ struct uiInitError {
|
||||||
char failbuf[256];
|
char failbuf[256];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define initErrorFormat L"error %s: %s%sGetLastError() == %I32u%s"
|
#define initErrorFormat L"error %s: %s%s%s %I32u (0x%I32X)%s"
|
||||||
#define initErrorArgs wmessage, sysmsg, beforele, le, afterle
|
#define initErrorArgs wmessage, sysmsg, beforele, label, value, value, afterle
|
||||||
|
|
||||||
// TODO split for HRESULTs
|
static const char *initerr(const char *message, const WCHAR *label, DWORD value)
|
||||||
static const char *loadLastError(const char *message)
|
|
||||||
{
|
{
|
||||||
WCHAR *sysmsg;
|
WCHAR *sysmsg;
|
||||||
BOOL hassysmsg;
|
BOOL hassysmsg;
|
||||||
|
@ -27,10 +26,8 @@ static const char *loadLastError(const char *message)
|
||||||
WCHAR *wmessage;
|
WCHAR *wmessage;
|
||||||
WCHAR *wstr;
|
WCHAR *wstr;
|
||||||
const char *str;
|
const char *str;
|
||||||
DWORD le;
|
|
||||||
|
|
||||||
le = GetLastError();
|
if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, value, 0, (LPWSTR) (&sysmsg), 0, NULL) != 0) {
|
||||||
if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, le, 0, (LPWSTR) (&sysmsg), 0, NULL) != 0) {
|
|
||||||
hassysmsg = TRUE;
|
hassysmsg = TRUE;
|
||||||
beforele = L" (";
|
beforele = L" (";
|
||||||
afterle = L")";
|
afterle = L")";
|
||||||
|
@ -53,6 +50,16 @@ static const char *loadLastError(const char *message)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *loadLastError(const char *message)
|
||||||
|
{
|
||||||
|
return initerr(message, L"GetLastError() ==", GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *loadHRESULT(const char *message, HRESULT hr)
|
||||||
|
{
|
||||||
|
return initerr(message, L"HRESULT", (DWORD) hr);
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL WINAPI consoleCtrlHandler(DWORD dwCtrlType)
|
static BOOL WINAPI consoleCtrlHandler(DWORD dwCtrlType)
|
||||||
{
|
{
|
||||||
switch (dwCtrlType) {
|
switch (dwCtrlType) {
|
||||||
|
@ -148,7 +155,7 @@ const char *uiInit(uiInitOptions *o)
|
||||||
|
|
||||||
hr = CoInitialize(NULL);
|
hr = CoInitialize(NULL);
|
||||||
if (hr != S_OK && hr != S_FALSE)
|
if (hr != S_OK && hr != S_FALSE)
|
||||||
return loadLastError("initializing COM"); // TODO loadHRESULT
|
return loadHRESULT("initializing COM", hr);
|
||||||
// TODO initialize COM security
|
// TODO initialize COM security
|
||||||
// TODO (windows vista) turn off COM exception handling
|
// TODO (windows vista) turn off COM exception handling
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue