source: trunk/src/quartz/amerror.c@ 6578

Last change on this file since 6578 was 6578, checked in by sandervl, 24 years ago

wine updates

File size: 5.8 KB
Line 
1
2#include "config.h"
3
4#include "windef.h"
5#include "winbase.h"
6#include "wingdi.h"
7#include "winuser.h"
8#include "winerror.h"
9#include "winnls.h"
10#include "wine/obj_base.h"
11#include "strmif.h"
12#include "errors.h"
13
14#include "debugtools.h"
15DEFAULT_DEBUG_CHANNEL(quartz);
16
17
18static
19LPWSTR QUARTZ_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen )
20{
21 INT len;
22
23 len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, lpwstr, wbuflen );
24 if ( len == 0 )
25 *lpwstr = 0;
26 return lpwstr;
27}
28
29
30static LPCSTR hresult_to_string( HRESULT hr )
31{
32 switch ( hr )
33 {
34 #define ENTRY(x) case x: return (const char*)#x;
35 /* some known codes */
36 ENTRY(S_OK)
37 ENTRY(S_FALSE)
38 ENTRY(E_FAIL)
39 ENTRY(E_POINTER)
40 ENTRY(E_NOTIMPL)
41 ENTRY(E_NOINTERFACE)
42 ENTRY(E_OUTOFMEMORY)
43 ENTRY(CLASS_E_CLASSNOTAVAILABLE)
44 ENTRY(CLASS_E_NOAGGREGATION)
45
46 /* vfwmsgs.h */
47 ENTRY(VFW_S_NO_MORE_ITEMS)
48 ENTRY(VFW_E_BAD_KEY)
49 ENTRY(VFW_E_INVALIDMEDIATYPE)
50 ENTRY(VFW_E_INVALIDSUBTYPE)
51 ENTRY(VFW_E_NEED_OWNER)
52 ENTRY(VFW_E_ENUM_OUT_OF_SYNC)
53 ENTRY(VFW_E_ALREADY_CONNECTED)
54 ENTRY(VFW_E_FILTER_ACTIVE)
55 ENTRY(VFW_E_NO_TYPES)
56 ENTRY(VFW_E_NO_ACCEPTABLE_TYPES)
57 ENTRY(VFW_E_INVALID_DIRECTION)
58 ENTRY(VFW_E_NOT_CONNECTED)
59 ENTRY(VFW_E_NO_ALLOCATOR)
60 ENTRY(VFW_E_RUNTIME_ERROR)
61 ENTRY(VFW_E_BUFFER_NOTSET)
62 ENTRY(VFW_E_BUFFER_OVERFLOW)
63 ENTRY(VFW_E_BADALIGN)
64 ENTRY(VFW_E_ALREADY_COMMITTED)
65 ENTRY(VFW_E_BUFFERS_OUTSTANDING)
66 ENTRY(VFW_E_NOT_COMMITTED)
67 ENTRY(VFW_E_SIZENOTSET)
68 ENTRY(VFW_E_NO_CLOCK)
69 ENTRY(VFW_E_NO_SINK)
70 ENTRY(VFW_E_NO_INTERFACE)
71 ENTRY(VFW_E_NOT_FOUND)
72 ENTRY(VFW_E_CANNOT_CONNECT)
73 ENTRY(VFW_E_CANNOT_RENDER)
74 ENTRY(VFW_E_CHANGING_FORMAT)
75 ENTRY(VFW_E_NO_COLOR_KEY_SET)
76 ENTRY(VFW_E_NOT_OVERLAY_CONNECTION)
77 ENTRY(VFW_E_NOT_SAMPLE_CONNECTION)
78 ENTRY(VFW_E_PALETTE_SET)
79 ENTRY(VFW_E_COLOR_KEY_SET)
80 ENTRY(VFW_E_NO_COLOR_KEY_FOUND)
81 ENTRY(VFW_E_NO_PALETTE_AVAILABLE)
82 ENTRY(VFW_E_NO_DISPLAY_PALETTE)
83 ENTRY(VFW_E_TOO_MANY_COLORS)
84 ENTRY(VFW_E_STATE_CHANGED)
85 ENTRY(VFW_E_NOT_STOPPED)
86 ENTRY(VFW_E_NOT_PAUSED)
87 ENTRY(VFW_E_NOT_RUNNING)
88 ENTRY(VFW_E_WRONG_STATE)
89 ENTRY(VFW_E_START_TIME_AFTER_END)
90 ENTRY(VFW_E_INVALID_RECT)
91 ENTRY(VFW_E_TYPE_NOT_ACCEPTED)
92 ENTRY(VFW_E_SAMPLE_REJECTED)
93 ENTRY(VFW_E_SAMPLE_REJECTED_EOS)
94 ENTRY(VFW_S_DUPLICATE_NAME)
95 ENTRY(VFW_E_DUPLICATE_NAME)
96 ENTRY(VFW_E_TIMEOUT)
97 ENTRY(VFW_E_INVALID_FILE_FORMAT)
98 ENTRY(VFW_E_ENUM_OUT_OF_RANGE)
99 ENTRY(VFW_E_CIRCULAR_GRAPH)
100 ENTRY(VFW_E_NOT_ALLOWED_TO_SAVE)
101 ENTRY(VFW_E_TIME_ALREADY_PASSED)
102 ENTRY(VFW_E_ALREADY_CANCELLED)
103 ENTRY(VFW_E_CORRUPT_GRAPH_FILE)
104 ENTRY(VFW_E_ADVISE_ALREADY_SET)
105 ENTRY(VFW_S_STATE_INTERMEDIATE)
106 ENTRY(VFW_E_NO_MODEX_AVAILABLE)
107 ENTRY(VFW_E_NO_ADVISE_SET)
108 ENTRY(VFW_E_NO_FULLSCREEN)
109 ENTRY(VFW_E_IN_FULLSCREEN_MODE)
110 ENTRY(VFW_E_UNKNOWN_FILE_TYPE)
111 ENTRY(VFW_E_CANNOT_LOAD_SOURCE_FILTER)
112 ENTRY(VFW_S_PARTIAL_RENDER)
113 ENTRY(VFW_E_FILE_TOO_SHORT)
114 ENTRY(VFW_E_INVALID_FILE_VERSION)
115 ENTRY(VFW_S_SOME_DATA_IGNORED)
116 ENTRY(VFW_S_CONNECTIONS_DEFERRED)
117 ENTRY(VFW_E_INVALID_CLSID)
118 ENTRY(VFW_E_INVALID_MEDIA_TYPE)
119 ENTRY(VFW_E_SAMPLE_TIME_NOT_SET)
120 ENTRY(VFW_S_RESOURCE_NOT_NEEDED)
121 ENTRY(VFW_E_MEDIA_TIME_NOT_SET)
122 ENTRY(VFW_E_NO_TIME_FORMAT_SET)
123 ENTRY(VFW_E_MONO_AUDIO_HW)
124 ENTRY(VFW_S_MEDIA_TYPE_IGNORED)
125 ENTRY(VFW_E_NO_DECOMPRESSOR)
126 ENTRY(VFW_E_NO_AUDIO_HARDWARE)
127 ENTRY(VFW_S_VIDEO_NOT_RENDERED)
128 ENTRY(VFW_S_AUDIO_NOT_RENDERED)
129 ENTRY(VFW_E_RPZA)
130 ENTRY(VFW_S_RPZA)
131 ENTRY(VFW_E_PROCESSOR_NOT_SUITABLE)
132 ENTRY(VFW_E_UNSUPPORTED_AUDIO)
133 ENTRY(VFW_E_UNSUPPORTED_VIDEO)
134 ENTRY(VFW_E_MPEG_NOT_CONSTRAINED)
135 ENTRY(VFW_E_NOT_IN_GRAPH)
136 ENTRY(VFW_S_ESTIMATED)
137 ENTRY(VFW_E_NO_TIME_FORMAT)
138 ENTRY(VFW_E_READ_ONLY)
139 ENTRY(VFW_S_RESERVED)
140 ENTRY(VFW_E_BUFFER_UNDERFLOW)
141 ENTRY(VFW_E_UNSUPPORTED_STREAM)
142 ENTRY(VFW_E_NO_TRANSPORT)
143 ENTRY(VFW_S_STREAM_OFF)
144 ENTRY(VFW_S_CANT_CUE)
145 ENTRY(VFW_E_BAD_VIDEOCD)
146 ENTRY(VFW_S_NO_STOP_TIME)
147 ENTRY(VFW_E_OUT_OF_VIDEO_MEMORY)
148 ENTRY(VFW_E_VP_NEGOTIATION_FAILED)
149 ENTRY(VFW_E_DDRAW_CAPS_NOT_SUITABLE)
150 ENTRY(VFW_E_NO_VP_HARDWARE)
151 ENTRY(VFW_E_NO_CAPTURE_HARDWARE)
152 ENTRY(VFW_E_DVD_OPERATION_INHIBITED)
153 ENTRY(VFW_E_DVD_INVALIDDOMAIN)
154 ENTRY(VFW_E_DVD_NO_BUTTON)
155 ENTRY(VFW_E_DVD_GRAPHNOTREADY)
156 ENTRY(VFW_E_DVD_RENDERFAIL)
157 ENTRY(VFW_E_DVD_DECNOTENOUGH)
158 ENTRY(VFW_E_DDRAW_VERSION_NOT_SUITABLE)
159 ENTRY(VFW_E_COPYPROT_FAILED)
160 ENTRY(VFW_S_NOPREVIEWPIN)
161 ENTRY(VFW_E_TIME_EXPIRED)
162 ENTRY(VFW_S_DVD_NON_ONE_SEQUENTIAL)
163 ENTRY(VFW_E_DVD_WRONG_SPEED)
164 ENTRY(VFW_E_DVD_MENU_DOES_NOT_EXIST)
165 ENTRY(VFW_E_DVD_CMD_CANCELLED)
166 ENTRY(VFW_E_DVD_STATE_WRONG_VERSION)
167 ENTRY(VFW_E_DVD_STATE_CORRUPT)
168 ENTRY(VFW_E_DVD_STATE_WRONG_DISC)
169 ENTRY(VFW_E_DVD_INCOMPATIBLE_REGION)
170 ENTRY(VFW_E_DVD_NO_ATTRIBUTES)
171 ENTRY(VFW_E_DVD_NO_GOUP_PGC)
172 ENTRY(VFW_E_DVD_LOW_PARENTAL_LEVEL)
173 ENTRY(VFW_E_DVD_NOT_IN_KARAOKE_MODE)
174 ENTRY(VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE)
175 ENTRY(VFW_S_DVD_NOT_ACCURATE)
176 ENTRY(VFW_E_FRAME_STEP_UNSUPPORTED)
177 ENTRY(VFW_E_DVD_STREAM_DISABLED)
178 ENTRY(VFW_E_DVD_TITLE_UNKNOWN)
179 ENTRY(VFW_E_DVD_INVALID_DISC)
180 ENTRY(VFW_E_DVD_NO_RESUME_INFORMATION)
181 ENTRY(VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD)
182 ENTRY(VFW_E_PIN_ALREADY_BLOCKED)
183 ENTRY(VFW_E_CERTIFICATION_FAILURE)
184 #undef ENTRY
185 }
186
187 return NULL;
188}
189
190/***********************************************************************
191 * AMGetErrorTextA (quartz.@)
192 */
193DWORD WINAPI AMGetErrorTextA(HRESULT hr, LPSTR pszbuf, DWORD dwBufLen)
194{
195 LPCSTR lpszRes;
196 DWORD len;
197
198 lpszRes = hresult_to_string( hr );
199 if ( lpszRes == NULL )
200 return 0;
201 len = (DWORD)(strlen(lpszRes)+1);
202 if ( len > dwBufLen )
203 return 0;
204
205 memcpy( pszbuf, lpszRes, len );
206 return len;
207}
208
209/***********************************************************************
210 * AMGetErrorTextW (quartz.@)
211 */
212DWORD WINAPI AMGetErrorTextW(HRESULT hr, LPWSTR pwszbuf, DWORD dwBufLen)
213{
214 CHAR szBuf[MAX_ERROR_TEXT_LEN+1];
215 DWORD dwLen;
216
217 dwLen = AMGetErrorTextA(hr,szBuf,MAX_ERROR_TEXT_LEN);
218 if ( dwLen == 0 )
219 return 0;
220 szBuf[dwLen] = 0;
221
222 QUARTZ_strncpyAtoW( pwszbuf, szBuf, dwBufLen );
223
224 return lstrlenW( pwszbuf );
225}
Note: See TracBrowser for help on using the repository browser.