tablelib.c

来自「深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心」· C语言 代码 · 共 749 行 · 第 1/2 页

C
749
字号
		fieldItem = MapProcessPtr( fieldItem, (LPPROCESS)cs.lpvData );

		retv = ((PTB_INSERTRECORD)lpfn)( hTable, nPos, fieldItem );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef int ( WINAPI * PTB_COUNTRECORD )( HTABLE hTable );
int WINAPI Tb_CountRecord( HTABLE hTable )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_COUNTRECORD, 1 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	int retv = 0;

	if( API_Enter( API_TABLE, TB_COUNTRECORD, &lpfn, &cs ) )
	{
		retv = ((PTB_COUNTRECORD)lpfn)( hTable );
		API_Leave(  );
	}
	return retv;
#endif
}
///////////
typedef BOOL ( WINAPI * PTB_GETRECORDINFO )( HTABLE hTable, LPRECORDINFO lpri );
BOOL WINAPI Tb_GetRecordInfo( HTABLE hTable, LPRECORDINFO lpri )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_GETRECORDINFO, 2 );
    cs.arg0 = (DWORD)hTable;
    return (DWORD)CALL_SERVER( &cs, lpri );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = FALSE;

	if( API_Enter( API_TABLE, TB_GETRECORDINFO, &lpfn, &cs ) )
	{
		lpri = MapProcessPtr( lpri, (LPPROCESS)cs.lpvData );

		retv = ((PTB_GETRECORDINFO)lpfn)( hTable, lpri );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_GETTABLEINFO )( LPCTSTR lpcszFileName, LPTABLEINFO lpti );
BOOL WINAPI Tb_GetTableInfo( LPCTSTR lpcszFileName, LPTABLEINFO lpti )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_GETTABLEINFO, 2 );
    cs.arg0 = (DWORD)lpcszFileName;
    return (DWORD)CALL_SERVER( &cs, lpti );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = FALSE;

	if( API_Enter( API_TABLE, TB_GETTABLEINFO, &lpfn, &cs ) )
	{
		lpcszFileName = MapProcessPtr( lpcszFileName, (LPPROCESS)cs.lpvData );
		lpti = MapProcessPtr( lpti, (LPPROCESS)cs.lpvData );

		retv = ((PTB_GETTABLEINFO)lpfn)( lpcszFileName, lpti );
		API_Leave(  );
	}
	return retv;
#endif

}

typedef DWORD ( WINAPI * PTB_GETRECORDSIZE )( HTABLE hTable );
DWORD WINAPI Tb_GetRecordSize( HTABLE hTable )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_GETRECORDSIZE, 1 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = 0;

	if( API_Enter( API_TABLE, TB_GETRECORDSIZE, &lpfn, &cs ) )
	{
		retv = ((PTB_GETRECORDSIZE)lpfn)( hTable );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef HANDLE ( WINAPI * PTB_FINDFIRST )( HTABLE hTable, UINT uField, const void * lpcvFind, UINT uLen, LPFINDSTRUCT lpfs );
HANDLE WINAPI Tb_FindFirst( HTABLE hTable, 
						    UINT uField, 
							const void * lpcvFind, 
							UINT uLen, 
							LPFINDSTRUCT lpfs )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_FINDFIRST, 5 );
    cs.arg0 = (DWORD)hTable;
    return (HANDLE)CALL_SERVER( &cs, uField, lpcvFind, uLen, lpfs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	HANDLE retv = INVALID_HANDLE_VALUE;

	if( API_Enter( API_TABLE, TB_FINDFIRST, &lpfn, &cs ) )
	{
		lpcvFind = MapProcessPtr( lpcvFind, (LPPROCESS)cs.lpvData );
		lpfs = MapProcessPtr( lpfs, (LPPROCESS)cs.lpvData );

		retv = ((PTB_FINDFIRST)lpfn)( hTable, uField, lpcvFind, uLen, lpfs );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_FINDNEXT )( HANDLE hFind, LPFINDSTRUCT lpfs );
BOOL WINAPI Tb_FindNext( HANDLE hFind, LPFINDSTRUCT lpfs )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_FINDNEXT, 2 );
    cs.arg0 = (DWORD)hFind;
    return (DWORD)CALL_SERVER( &cs, lpfs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = FALSE;

	if( API_Enter( API_TABLE, TB_FINDNEXT, &lpfn, &cs ) )
	{
		lpfs = MapProcessPtr( lpfs, (LPPROCESS)cs.lpvData );

		retv = ((PTB_FINDNEXT)lpfn)( hFind, lpfs );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_CLOSEFIND )( HANDLE hFind );
BOOL WINAPI Tb_CloseFind( HANDLE hFind )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_CLOSEFIND, 1 );
    cs.arg0 = (DWORD)hFind ;
    return (DWORD)CALL_SERVER( &cs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = FALSE;

	if( API_Enter( API_TABLE, TB_CLOSEFIND, &lpfn, &cs ) )
	{
		retv = ((PTB_CLOSEFIND)lpfn)( hFind );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_PACK )( LPCTSTR lpcszFileName, UINT uiFlag );
BOOL WINAPI Tb_Pack( LPCTSTR lpcszFileName, UINT uiFlag )
{
#ifdef CALL_TRAP
	CALLTRAP cs;
	
	cs.apiInfo = CALL_API( API_TABLE, TB_PACK, 2 );
	cs.arg0 = (DWORD)lpcszFileName;
	return (DWORD)CALL_SERVER( &cs, uiFlag );
#else
	
	FARPROC lpfn;
	
	CALLSTACK cs;
	BOOL retv = FALSE;
	
	if( API_Enter( API_TABLE, TB_PACK, &lpfn, &cs ) )
	{
		lpcszFileName = MapProcessPtr( lpcszFileName, (LPPROCESS)cs.lpvData );
		
		retv = ((PTB_PACK)lpfn)( lpcszFileName, uiFlag );
		API_Leave(  );
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_PACKBYHANDLE )( HANDLE hTable, UINT uiFlag );
BOOL WINAPI Tb_PackByHandle( HANDLE hTable, UINT uiFlag )
{
#ifdef CALL_TRAP
	CALLTRAP cs;
	cs.apiInfo = CALL_API( API_TABLE, TB_PACKBYHANDLE, 2 );
	cs.arg0 = (DWORD)hTable;
	return (DWORD)CALL_SERVER( &cs, uiFlag );
#else
	
	FARPROC lpfn;
	
	CALLSTACK cs;
	BOOL retv = FALSE;
	
	if( API_Enter( API_TABLE, TB_PACKBYHANDLE, &lpfn, &cs ) )
	{
		retv = ((PTB_PACKBYHANDLE)lpfn)( hTable, uiFlag );
		API_Leave(  );
	}
	return retv;
#endif
}

/*
typedef BOOL ( CALLBACK * PTB_CLOSEALL )( HANDLE hProcess );
BOOL CALLBACK Tb_CloseAll( HANDLE hProcess )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_CLOSEALL, 1 );
    cs.arg0 = (DWORD)hProcess ;
    return (DWORD)CALL_SERVER( &cs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = FALSE;

	if( API_Enter( API_TABLE, TB_CLOSEALL, &lpfn, &cs ) )
	{
		retv = ((PTB_CLOSEALL)lpfn)( hProcess );
		API_Leave(  );
	}
	return retv;
#endif
}
*/

typedef BOOL ( WINAPI * PTB_ReadMultiRecords )( HTABLE hTable, LPMULTI_RECORD lpmultiRecord );
UINT WINAPI Tb_ReadMultiRecords( HTABLE hTable, LPMULTI_RECORD lpmultiRecord )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_READMULTIRECORDS, 2 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs, lpmultiRecord );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	UINT retv = 0;

	if( API_Enter( API_TABLE, TB_READMULTIRECORDS, &lpfn, &cs ) )
	{
		retv = ((PTB_ReadMultiRecords)lpfn)( hTable, lpmultiRecord );
		API_Leave();
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_GETUSERDATA )( HTABLE hTable, LPVOID lpUserBuf, UINT nBufSize );
UINT WINAPI Tb_GetUserData( 
					HTABLE hTable,					
                    LPVOID lpUserBuf,
					UINT nBufSize
                   )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_GETUSERDATA, 3 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs, lpUserBuf, nBufSize );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	UINT retv = 0;

	if( API_Enter( API_TABLE, TB_GETUSERDATA, &lpfn, &cs ) )
	{
		retv = ((PTB_GETUSERDATA)lpfn)( hTable, lpUserBuf, nBufSize );
		API_Leave();
	}
	return retv;
#endif
}


typedef BOOL ( WINAPI * PTB_SETUSERDATA )( HTABLE hTable, LPCVOID lpUserBuf, UINT nBufSize );
UINT WINAPI Tb_SetUserData( 
					HTABLE hTable,					
                    LPCVOID lpUserBuf,
					UINT nBufSize
                   )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_SETUSERDATA, 3 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs, lpUserBuf, nBufSize );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	UINT retv = 0;

	if( API_Enter( API_TABLE, TB_SETUSERDATA, &lpfn, &cs ) )
	{
		retv = ((PTB_SETUSERDATA)lpfn)( hTable, lpUserBuf, nBufSize );
		API_Leave();
	}
	return retv;
#endif
}

typedef BOOL ( WINAPI * PTB_FLUSH )( HTABLE hTable );
BOOL WINAPI Tb_Flush( HTABLE hTable )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_TABLE, TB_FLUSH, 1 );
    cs.arg0 = (DWORD)hTable ;
    return (DWORD)CALL_SERVER( &cs );
#else

	FARPROC lpfn;

	CALLSTACK cs;
	BOOL retv = 0;

	if( API_Enter( API_TABLE, TB_FLUSH, &lpfn, &cs ) )
	{
		retv = ((PTB_FLUSH)lpfn)( hTable );
		API_Leave();
	}
	return retv;
#endif
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?