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

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

wine update

File size: 5.9 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.