COMのエラーコードdwResultをHRESUTへ変換します。 具体的にはERROR_ACCESS_DENIEDならE_ACCESSDENIEDへ変換されます。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <windows.h>
/*
dwResultをHRESUTへ変換する
*/
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
// 標準出力にユニコード出力する
setlocale( LC_ALL, "Japanese" );
// エラーコード(DWORD)
DWORD dwResult = ERROR_ACCESS_DENIED;
// dwResult(COMのエラー)をHRESULTへ変換する
HRESULT hResult = HRESULT_FROM_WIN32( dwResult );
/*
hResultを文字列へ変換して出力
*/
{
TCHAR* lpMessageBuffer = NULL;
// hResultを文字列へ変換する
if ( 0 != FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_IGNORE_INSERTS
, NULL
, ERROR_ACCESS_DENIED//hResult
, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ) // デフォルト ユーザー言語
, (LPTSTR)&lpMessageBuffer
, 0
, NULL
) ) {
// エラーを文字列変換してものを出力
std::wcout << lpMessageBuffer << std::endl;
// システムによって確保されたバッファを開放します。
LocalFree( lpMessageBuffer );
}
}
// 正常終了
return( 0 );
}
アクセスが拒否されました。