tablelib.c
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· 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 + -
显示快捷键?