HRESULT ceJetHResult( IN HRESULT hr) { if (S_OK != hr) { if (SUCCEEDED(hr)) { #if 0 hr = HRESULT_FROM_JETWARNING(hr); #else if (S_FALSE != hr) { _PrintError(hr, "JetHResult: mapping to S_FALSE"); } assert(S_FALSE == hr); hr = S_FALSE; #endif } else if (ISJETERROR(hr)) { hr = HRESULT_FROM_JETERROR(hr); } } assert(S_OK == hr || S_FALSE == hr || FAILED(hr)); return(hr); }
HRESULT ceGetMachineDnsName( OUT WCHAR **ppwszDnsName) { HRESULT hr; WCHAR *pwszDnsName = NULL; DWORD cwc; COMPUTER_NAME_FORMAT NameType = ComputerNameDnsFullyQualified; *ppwszDnsName = NULL; while (TRUE) { cwc = 0; if (!GetComputerNameEx(NameType, NULL, &cwc)) { hr = ceHLastError(); if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr && ComputerNameDnsFullyQualified == NameType) { _PrintError(hr, "GetComputerNameEx(DnsFullyQualified) -- switching to NetBIOS"); NameType = ComputerNameNetBIOS; continue; } if (HRESULT_FROM_WIN32(ERROR_MORE_DATA) != hr) { _JumpError(hr, error, "GetComputerNameEx"); } break; } } pwszDnsName = (WCHAR *) LocalAlloc(LMEM_FIXED, cwc * sizeof(WCHAR)); if (NULL == pwszDnsName) { hr = E_OUTOFMEMORY; _JumpError(hr, error, "LocalAlloc"); } if (!GetComputerNameEx(NameType, pwszDnsName, &cwc)) { hr = ceHLastError(); _JumpError(hr, error, "GetComputerNameEx"); } *ppwszDnsName = pwszDnsName; pwszDnsName = NULL; hr = S_OK; error: if (NULL != pwszDnsName) { LocalFree(pwszDnsName); } return(hr); }
HRESULT ceDispatchSetErrorInfo( IN HRESULT hrError, IN WCHAR const *pwszDescription, OPTIONAL IN WCHAR const *pwszProgId, OPTIONAL IN IID const *piid) { HRESULT hr; WCHAR const *pwszError = NULL; WCHAR *pwszText = NULL; if (NULL == pwszDescription) { hr = E_POINTER; _JumpError(hr, error, "NULL pointer"); } assert(FAILED(hrError)); pwszError = ceGetErrorMessageText(hrError, TRUE); if (NULL == pwszError) { _PrintError(E_OUTOFMEMORY, "myGetErrorMessageText"); } else { pwszText = (WCHAR *) LocalAlloc( LMEM_FIXED, (wcslen(pwszDescription) + 1 + wcslen(pwszError) + 1) * sizeof(WCHAR)); if (NULL == pwszText) { _PrintError(E_OUTOFMEMORY, "LocalAlloc"); } else { wcscpy(pwszText, pwszDescription); wcscat(pwszText, L" "); wcscat(pwszText, pwszError); } } hr = ceDispatchSetErrorInfoSub( hrError, NULL, // pwszIDispatchMethod NULL != pwszText? pwszText : const_cast<WCHAR *>(pwszDescription), pwszProgId, piid, NULL, // pwszHelpFile 0); // dwHelpFileContext _PrintIfError(hr, "ceDispatchSetErrorInfoSub"); error: if (NULL != pwszText) { LocalFree(pwszText); } if (NULL != pwszError) { LocalFree(const_cast<WCHAR *>(pwszError)); } return(hrError); // return input error! }