windows-nt/Source/XPSP1/NT/multimedia/media/avi/compman/compmani.h

160 lines
4.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//==========================================================================;
//
// compmani.h
//
// Copyright (c) 1994 - 1995 Microsoft Corporation. All Rights Reserved.
//
// Description:
// Internal COMPMAN header file. Defines some internal
// data structures and things not needed outside of COMPMAN itself.
//
// History:
// 07/07/94 frankye
//
//==========================================================================;
#if !defined NUMELMS
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
#define FIELDOFF(type,field) (&(((type)0)->field))
#define FIELDSIZ(type,field) (sizeof(((type)0)->field))
#endif
//--------------------------------------------------------------------------;
//
// ICMGARB structure
//
//
// This structure contains information (ICM Garbage) that is global but
// on a per-process basis. Currently this is required only for 16-bit
// builds and the structues are maintained in a linked list whose head
// is pointed to by the gplig global variable.
//
//--------------------------------------------------------------------------;
typedef struct tICMGARB
{
struct tICMGARB*pigNext; // next garb structure
DWORD pid; // process id associated with this garb
UINT cUsage; // usage count for this process
//
// 16-to-32 thunk related data
//
BOOL fThunksInitialized;
BOOL fThunkError;
DWORD dwMsvfw32Handle;
LPVOID lpvThunkEntry;
} ICMGARB, *PICMGARB, FAR *LPICMGARB;
extern PICMGARB gplig;
//--------------------------------------------------------------------------;
//
// misc data structures
//
//--------------------------------------------------------------------------;
//
//
//
typedef struct {
DWORD dwSmag; // 'Smag'
HTASK hTask; // owner task.
DWORD fccType; // converter type ie 'vidc'
DWORD fccHandler; // converter id ie 'rle '
HDRVR hDriver; // handle of driver
LPARAM dwDriver; // driver id for functions
DRIVERPROC DriverProc; // function to call
DWORD dnDevNode; // devnode id iff pnp driver
#ifdef NT_THUNK16
//
// h32 : 32-bit driver handle
// lpstd : 16:16 ptr to current status thunk descriptor
//
DWORD h32;
struct tICSTATUSTHUNKDESC FAR* lpstd;
#endif
} IC, *PIC;
//
// This structure is similar in use to the ICINFO structure except
// that it is only used internally and not passed to apps.
//
// !!! If you add anything to this structure that requires thunking,
// then you're going to need to thunk it in thunk.c
//
typedef struct {
DWORD dnDevNode; // devnode id iff pnp driver
} ICINFOI, NEAR *NPICINFOI, *PICINFOI, FAR *LPICINFOI ;
//--------------------------------------------------------------------------;
//
// GetCurrentProcessId prototype
//
//--------------------------------------------------------------------------;
//--------------------------------------------------------------------------;
//
// DWORD GetCurrentProcessId
//
// Description:
// This function returns the current process id
//
// Arguments:
//
// Return (DWORD):
// Id of current process
//
// History:
// 04/25/94 frankye
//
// Notes:
//
// WIN32:
// This function exists in the 32-bit kernels on both Chicago and
// Daytona and we provide no prototype for WIN32 compiles.
//
// 16-bit Chicago:
// It is exported as in internal API by the 16-bit Chicago kernel.
// We provide the prototype here and import it in the def file.
//
// 16-bit Daytona:
// Has no such 16-bit function and really doesn't need one since all
// 16-bit tasks are part of the same process under Daytona. Therefore
// we just #define this to return (1) for 16-bit non-Chicago builds.
//
//--------------------------------------------------------------------------;
#ifndef _WIN32
#ifdef CHICAGO
DWORD WINAPI GetCurrentProcessId(void);
#else
#define GetCurrentProcessId() (1)
#endif
#endif
//--------------------------------------------------------------------------;
//
// Thunk initialization and termination function protos
//
//--------------------------------------------------------------------------;
PICMGARB WINAPI thunkInitialize(VOID);
VOID WINAPI thunkTerminate(PICMGARB pid);
//--------------------------------------------------------------------------;
//
// pig function protos
//
//--------------------------------------------------------------------------;
PICMGARB FAR PASCAL pigNew(void);
PICMGARB FAR PASCAL pigFind(void);
void FAR PASCAL pigDelete(PICMGARB pig);
//--------------------------------------------------------------------------;
//
// misc function protos
//
//--------------------------------------------------------------------------;
BOOL VFWAPI ICInfoInternal(DWORD fccType, DWORD fccHandler, ICINFO FAR * lpicinfo, ICINFOI FAR * lpicinfoi);