8 #include <audioclient.h>
9 #include <audiopolicy.h>
13 #define BOOST_ASSIGN_MAX_PARAMS 7
14 #include <boost/assign.hpp>
15 #include <boost/assign/ptr_list_of.hpp>
16 #include <boost/assign/ptr_list_inserter.hpp>
17 #include <boost/foreach.hpp>
20 #define _CRTDBG_MAP_ALLOC
22 #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
25 #include "sf_memory.h"
27 using namespace boost;
31 //typedef CComPtr<IAudioClient> IAudioClientPtr;
32 std::map<HRESULT,std::wstring> com_error_ = boost::assign::list_of<std::pair<HRESULT,std::wstring> >
33 (E_POINTER,L"E_POINTER")
34 (E_INVALIDARG,L"E_INVALIDARG")
35 (DWRITE_E_FILEFORMAT,L"DWRITE_E_FILEFORMAT")
36 (DWRITE_E_UNEXPECTED,L"DWRITE_E_UNEXPECTED")
37 (DWRITE_E_NOFONT,L"DWRITE_E_NOFONT")
38 (DWRITE_E_FILENOTFOUND,L"DWRITE_E_FILENOTFOUND")
39 (DWRITE_E_FILEACCESS,L"DWRITE_E_FILEACCESS")
40 (DWRITE_E_FONTCOLLECTIONOBSOLETE,L"DWRITE_E_FONTCOLLECTIONOBSOLETE")
41 (DWRITE_E_ALREADYREGISTERED,L"DWRITE_E_ALREADYREGISTERED")
42 (AUDCLNT_E_NOT_INITIALIZED,L"AUDCLNT_E_NOT_INITIALIZED")
43 (AUDCLNT_E_ALREADY_INITIALIZED,L"AUDCLNT_E_ALREADY_INITIALIZED")
44 (AUDCLNT_E_WRONG_ENDPOINT_TYPE,L"AUDCLNT_E_WRONG_ENDPOINT_TYPE")
45 (AUDCLNT_E_DEVICE_INVALIDATED,L"AUDCLNT_E_DEVICE_INVALIDATED")
46 (AUDCLNT_E_NOT_STOPPED,L"AUDCLNT_E_NOT_STOPPED")
47 (AUDCLNT_E_BUFFER_TOO_LARGE,L"AUDCLNT_E_BUFFER_TOO_LARGE")
48 (AUDCLNT_E_OUT_OF_ORDER,L"AUDCLNT_E_OUT_OF_ORDER")
49 (AUDCLNT_E_UNSUPPORTED_FORMAT,L"AUDCLNT_E_UNSUPPORTED_FORMAT")
50 (AUDCLNT_E_INVALID_SIZE,L"AUDCLNT_E_INVALID_SIZE")
51 (AUDCLNT_E_DEVICE_IN_USE,L"AUDCLNT_E_DEVICE_IN_USE")
52 (AUDCLNT_E_BUFFER_OPERATION_PENDING,L"AUDCLNT_E_BUFFER_OPERATION_PENDING")
53 (AUDCLNT_E_THREAD_NOT_REGISTERED,L"AUDCLNT_E_THREAD_NOT_REGISTERED")
54 (AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED,L"AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED")
55 (AUDCLNT_E_ENDPOINT_CREATE_FAILED,L"AUDCLNT_E_ENDPOINT_CREATE_FAILED")
56 (AUDCLNT_E_SERVICE_NOT_RUNNING,L"AUDCLNT_E_SERVICE_NOT_RUNNING")
57 (AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED,L"AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED")
58 (AUDCLNT_E_EXCLUSIVE_MODE_ONLY,L"AUDCLNT_E_EXCLUSIVE_MODE_ONLY")
59 (AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL,L"AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL")
60 (AUDCLNT_E_EVENTHANDLE_NOT_SET,L"AUDCLNT_E_EVENTHANDLE_NOT_SET")
61 (AUDCLNT_E_INCORRECT_BUFFER_SIZE,L"AUDCLNT_E_INCORRECT_BUFFER_SIZE")
62 (AUDCLNT_E_BUFFER_SIZE_ERROR,L"AUDCLNT_E_BUFFER_SIZE_ERROR")
63 (AUDCLNT_S_BUFFER_EMPTY,L"AUDCLNT_S_BUFFER_EMPTY")
64 (AUDCLNT_S_THREAD_ALREADY_REGISTERED,L"AUDCLNT_S_THREAD_ALREADY_REGISTERED")
65 (DXGI_ERROR_UNSUPPORTED,L"DXGI_ERROR_UNSUPPORTED ")
66 (DXGI_STATUS_OCCLUDED,L"DXGI_STATUS_OCCLUDED")
67 (DXGI_STATUS_CLIPPED,L"DXGI_STATUS_CLIPPED")
71 win32_error_exception::win32_error_exception(uint32_t hr)
72 : std::exception("HRESULT ERROR"),hresult_(hr)
74 local_memory<wchar_t> mem;
75 DWORD 結果 = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,hr,0,(LPWSTR)&mem,0,0);
79 std::map<HRESULT,std::wstring>::iterator it = com_error_.find(hr);
80 if(it != com_error_.end())
84 error_ = (boost::wformat(L"0x%x 不明なCOMエラー") % hr).str();
90 win32_error_exception::win32_error_exception()
92 hresult_ = ::GetLastError();
93 local_memory<wchar_t> mem;
94 DWORD rv = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,hresult_,0,(LPWSTR)&mem,0,0);
96 //Logger::outputDebugPrintf(L"Win32 Error %x %s",hresult_,mem.Get() );
99 std::wstring& win32_error_exception::get_last_error_str(uint32_t err)
101 // DWORD err = ::GetLastError();
102 std::wstring err_str;
103 local_memory<wchar_t> mem;
104 DWORD rv = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,err,0,(LPWSTR)&mem,0,0);