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

Last change on this file since 6649 was 6649, checked in by bird, 24 years ago

Added $Id:$ keyword.

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