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 ); }
アクセスが拒否されました。