15 #pragma warning(disable: 4705)
25 CRITICAL_SECTION m_CritSec;
41 InitializeCriticalSection(&m_CritSec);
45 DeleteCriticalSection(&m_CritSec);
49 EnterCriticalSection(&m_CritSec);
53 LeaveCriticalSection(&m_CritSec);
75 #define CritCheckIn(x) TRUE
76 #define CritCheckOut(x) TRUE
77 #define DbgLockTrace(pc, fT)
119 CAMEvent(BOOL fManualReset = FALSE, __inout_opt HRESULT *phr =
NULL);
127 BOOL
Wait(DWORD dwTimeout = INFINITE) {
128 return (WaitForSingleObject(
m_hEvent, dwTimeout) == WAIT_OBJECT_0);
147 BOOL
WaitMsg(DWORD dwTimeout = INFINITE);
151 #define CTimeoutEvent CAMEvent
158 class AM_NOVTABLE CAMThread {
162 CAMThread(
const CAMThread &refThread);
163 CAMThread &operator=(
const CAMThread &refThread);
176 virtual DWORD ThreadProc() = 0;
179 CAMThread(__inout_opt HRESULT *phr =
NULL);
180 virtual ~CAMThread();
187 static DWORD WINAPI InitialThreadProc(__inout LPVOID
pv);
194 DWORD CallWorker(DWORD);
201 #pragma warning(push)
202 #pragma warning(disable: 4312)
207 WaitForSingleObject(hThread, INFINITE);
208 CloseHandle(hThread);
214 BOOL ThreadExists(
void)
const
216 if (m_hThread == 0) {
227 BOOL CheckRequest(__out_opt DWORD * pParam);
234 HANDLE GetRequestHandle()
const {
return m_EventSend; };
237 DWORD GetRequestParam()
const {
return m_dwParam; };
241 static HRESULT CoInitializeHelper();
243 #endif // AM_NOVTABLE
259 #define DEFAULT_QUEUESIZE 2
265 CRITICAL_SECTION CritSect;
271 void Initialize(
int n) {
272 iNextPut = iNextGet = 0;
274 InitializeCriticalSection(&CritSect);
276 hSemGet = CreateSemaphore(
NULL, 0,
n,
NULL);
277 QueueObjects =
new T[
n];
291 delete [] QueueObjects;
292 DeleteCriticalSection(&CritSect);
293 CloseHandle(hSemPut);
294 CloseHandle(hSemGet);
305 WaitForSingleObject(hSemGet, INFINITE);
307 EnterCriticalSection(&CritSect);
308 iSlot = iNextGet++ % nMax;
309 Object = QueueObjects[iSlot];
310 LeaveCriticalSection(&CritSect);
315 ReleaseSemaphore(hSemPut, 1L, &lPrevious);
326 WaitForSingleObject(hSemPut, INFINITE);
328 EnterCriticalSection(&CritSect);
329 iSlot = iNextPut++ % nMax;
330 QueueObjects[iSlot] = Object;
331 LeaveCriticalSection(&CritSect);
336 ReleaseSemaphore(hSemGet, 1L, &lPrevious);
354 __in_bcount(dst_size)
void * dst,
355 __in
size_t dst_size,
356 __in DWORD cb_dst_offset,
357 __in_bcount(src_size)
const void * src,
358 __in
size_t src_size,
359 __in DWORD cb_src_offset,
385 while ( cnt && (*(
unsigned char *)buf != (
unsigned char)chr) ) {
386 buf = (
unsigned char *)buf + 1;
390 return(cnt ? (
void *)buf :
NULL);
394 void WINAPI
IntToWstr(
int i, __out_ecount(12) LPWSTR wstr);
396 #define WstrToInt(sz) _wtoi(sz)
397 #define atoiW(sz) _wtoi(sz)
398 #define atoiA(sz) atoi(sz)
408 STDAPI_(
const GUID) GetTrueColorType(
const BITMAPINFOHEADER *pbmiHeader);
409 STDAPI_(
const GUID) GetBitmapSubtype(
const BITMAPINFOHEADER *pbmiHeader);
421 #define GetSubtypeName GetSubtypeNameW
423 #define GetSubtypeName GetSubtypeNameA
426 STDAPI_(LONG) GetBitmapFormatSize(
const BITMAPINFOHEADER *pHeader);
427 STDAPI_(DWORD) GetBitmapSize(
const BITMAPINFOHEADER *pHeader);
430 STDAPI_(BOOL) ContainsPalette(
const VIDEOINFOHEADER *pVideoInfo);
431 STDAPI_(
const RGBQUAD *) GetBitmapPalette(
const VIDEOINFOHEADER *pVideoInfo);
432 #endif // __AMVIDEO__
436 BOOL WINAPI
IsEqualObject(IUnknown *pFirst, IUnknown *pSecond);
439 #define EqualPins(pPin1, pPin2) IsEqualObject(pPin1, pPin2)
445 LONGLONG WINAPI
llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG rnd);
446 LONGLONG WINAPI
Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG rnd);
450 STDAPI
WriteBSTR(__deref_out BSTR * pstrDest, LPCWSTR szSrc);
451 STDAPI
FreeBSTR(__deref_in BSTR* pstr);
458 STDAPI
AMGetWideString(LPCWSTR pszString, __deref_out LPWSTR *ppszReturn);
472 #define AmHresultFromWin32(x) (MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, x))
480 IUnknown*
QzAtlComPtrAssign(__deref_inout_opt IUnknown** pp, __in_opt IUnknown* lp);
490 if ((
p = lp) !=
NULL)
500 operator T*() {
return (T*)
p;}
519 MMRESULT
CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, __in LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent );
525 return CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, lpsz1, -1, lpsz2, -1) - CSTR_EQUAL;
529 return CompareStringA(LOCALE_INVARIANT, NORM_IGNORECASE, lpsz1, -1, lpsz2, -1) - CSTR_EQUAL;