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;
#define InterlockedExchangePointer(Target, Value)
CAutoLock(CCritSec *plock)
void WINAPI IntToWstr(int i, __out_ecount(12) LPWSTR wstr)
DWORD WINAPI WaitDispatchingMessages(HANDLE hObject, DWORD dwWait, HWND hwnd=NULL, UINT uMsg=0, HANDLE hEvent=NULL)
STDAPI WriteBSTR(__deref_out BSTR *pstrDest, LPCWSTR szSrc)
QzCComPtr(const QzCComPtr< T > &lp)
BOOL Wait(DWORD dwTimeout=INFINITE)
__inline int lstrcmpiLocaleIndependentW(LPCWSTR lpsz1, LPCWSTR lpsz2)
CAMMsgEvent(__inout_opt HRESULT *phr=NULL)
BOOL WINAPI IsEqualObject(IUnknown *pFirst, IUnknown *pSecond)
#define DEFAULT_QUEUESIZE
T * operator=(const QzCComPtr< T > &lp)
STDAPI FreeBSTR(__deref_in BSTR *pstr)
STDAPI AMGetWideString(LPCWSTR pszString, __deref_out LPWSTR *ppszReturn)
#define EXECUTE_ASSERT(_x_)
HRESULT AMSafeMemMoveOffset(__in_bcount(dst_size) void *dst, __in size_t dst_size, __in DWORD cb_dst_offset, __in_bcount(src_size) const void *src, __in size_t src_size, __in DWORD cb_src_offset, __in size_t count)
LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG rnd)
void *__stdcall memmoveInternal(void *, const void *, size_t)
BOOL WaitMsg(DWORD dwTimeout=INFINITE)
STDAPI_(const GUID) GetTrueColorType(const BITMAPINFOHEADER *pbmiHeader)
IUnknown * QzAtlComPtrAssign(__deref_inout_opt IUnknown **pp, __in_opt IUnknown *lp)
MMRESULT CompatibleTimeSetEvent(UINT uDelay, UINT uResolution, __in LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent)
void PutQueueObject(T Object)
#define DbgLockTrace(pc, fT)
__in REFIID __deref_out void ** pv
void *__cdecl memchrInternal(const void *buf, int chr, size_t cnt)
HRESULT AmGetLastErrorToHResult(void)
LONGLONG WINAPI llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG rnd)
__inline int lstrcmpiLocaleIndependentA(LPCSTR lpsz1, LPCSTR lpsz2)
bool TimeKillSynchronousFlagAvailable(void)