-- Rewrite how we should do syscall now we define the syscall number in a include files. if we getting syscall table for another windows version and sp we can simple adding it to a another include file and use that file to run other that windows. rember the syscall table is diffent in all version of windows and reactos. if u compile this version in vs u will only be avail run it in windows 2000 sp4 and not under any windows version.

-- add one more testcase (NtGdiDdDeleteDirectDrawObject)
-- start adding thrid testcase (NtGdiDdQueryDirectDrawObject), this one will take bit longer to completed but I add a stub for it for now. 

svn path=/trunk/; revision=25814
This commit is contained in:
Magnus Olsen 2007-02-16 16:27:46 +00:00
parent eab0f7c139
commit 9e44309042
6 changed files with 225 additions and 39 deletions

View file

@ -2,18 +2,9 @@
#if !defined(__REACTOS__)
HANDLE sysNtGdiDdCreateDirectDrawObject(HDC hdc)
{
INT retValue;
_asm
{
mov eax, 0x1039
lea edx, [hdc]
int 0x2E
mov [retValue],eax
}
return retValue;
}
#define syscallid_NtGdiDdCreateDirectDrawObject 0x1039
#define syscallid_NtGdiDdDeleteDirectDrawObject 0x103E
#define syscallid_NtGdiDdQueryDirectDrawObject 0x1053
#endif

View file

@ -1,51 +1,142 @@
#include <stdio.h>
/* SDK/DDK/NDK Headers. */
#include <windows.h>
#include <wingdi.h>
#include <winddi.h>
#include <d3dnthal.h>
#include "test.h"
#include "Windows2000Sp4.h"
/* which syscall table shall we use WIndows or ReactOS */
/* Windows 2000 sp4 syscall table for win32k */
#include "Windows2000Sp4.h"
/* Windows syscall code */
#include "Windowsos.h"
/* ReactOS syscall code */
#include "sysreactos.h"
/*
#define DdQueryDirectDrawObject GdiEntry2
#define DdCreateSurfaceObject GdiEntry4
#define DdDeleteSurfaceObject GdiEntry5
#define DdResetVisrgn GdiEntry6
#define DdGetDC GdiEntry7
#define DdReleaseDC GdiEntry8
#define DdCreateDIBSection GdiEntry9
#define DdReenableDirectDrawObject GdiEntry10
#define DdAttachSurface GdiEntry11
#define DdUnattachSurface GdiEntry12
#define DdQueryDisplaySettingsUniqueness GdiEntry13
#define DdGetDxHandle GdiEntry14
#define DdSetGammaRamp GdiEntry15
#define DdSwapTextureHandles GdiEntry16
*/
int main(int argc, char **argv)
{
HANDLE hDirectDrawLocal;
test_NtGdiDdCreateDirectDrawObject();
hDirectDrawLocal = test_NtGdiDdCreateDirectDrawObject();
test_NtGdiDdQueryDirectDrawObject(hDirectDrawLocal);
test_NtGdiDdDeleteDirectDrawObject(hDirectDrawLocal);
return 0;
}
void
/*
* Test see if we getting a DirectDrawObject from win32k
*
*/
HANDLE
test_NtGdiDdCreateDirectDrawObject()
{
HANDLE retValue=0;
int fails=0;
HDC hdc=CreateDCW(L"Display",NULL,NULL,NULL);
printf("Start testing of NtGdiDdCreateDirectDrawObject(NULL)\n");
printf("Start testing of NtGdiDdCreateDirectDrawObject\n");
retValue = sysNtGdiDdCreateDirectDrawObject(NULL);
if (retValue != NULL)
{
printf("FAIL NtGdiDdCreateDirectDrawObject(NULL) != 0\n");
fails++;
}
testing_noteq(retValue,NULL,fails,"NtGdiDdCreateDirectDrawObject(NULL);\0");
retValue = sysNtGdiDdCreateDirectDrawObject(hdc);
if (retValue == NULL)
{
printf("FAIL NtGdiDdCreateDirectDrawObject(NULL) == 0)\n");
fails++;
}
testing_eq(retValue,NULL,fails,"NtGdiDdCreateDirectDrawObject(hdc);\0");
if (fails == 0)
{
printf("End testing of NtGdiDdCreateDirectDrawObject Status : ok\n");
}
else
{
printf("End testing of NtGdiDdCreateDirectDrawObject Status : fail\n");
}
show_status(fails, "NtGdiDdCreateDirectDrawObject\0");
return retValue;
}
/*
* Test see if we can setup DirectDrawObject
*
*/
void
test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
{
int fails=0;
BOOL retValue=FALSE;
DD_HALINFO *pHalInfo;
DWORD *pCallBackFlags;
LPD3DNTHAL_CALLBACKS puD3dCallbacks;
LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData;
PDD_D3DBUFCALLBACKS puD3dBufferCallbacks;
LPDDSURFACEDESC puD3dTextureFormats;
DWORD *puNumHeaps;
VIDEOMEMORY *puvmList;
DWORD *puNumFourCC;
DWORD *puFourCC;
printf("Start testing of NtGdiDdQueryDirectDrawObject\n");
retValue = sysNtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
pCallBackFlags, puD3dCallbacks,
puD3dDriverData, puD3dBufferCallbacks,
puD3dTextureFormats, puNumHeaps,
puvmList, puNumFourCC,
puFourCC);
show_status(fails, "NtGdiDdQueryDirectDrawObject\0");
return retValue;
}
/*
* Test see if we can delete a DirectDrawObject from win32k
*
*/
void
test_NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal)
{
int fails=0;
BOOL retValue=FALSE;
printf("Start testing of NtGdiDdDeleteDirectDrawObject\n");
retValue = sysNtGdiDdDeleteDirectDrawObject(hDirectDrawLocal);
testing_eq(retValue,FALSE,fails,"NtGdiDdDeleteDirectDrawObject(hDirectDrawLocal);\0");
retValue = sysNtGdiDdDeleteDirectDrawObject(NULL);
testing_eq(retValue,TRUE,fails,"NtGdiDdDeleteDirectDrawObject(NULL);\0");
show_status(fails, "NtGdiDdDeleteDirectDrawObject\0");
return retValue;
}

View file

@ -1,5 +1,7 @@
#if defined(__REACTOS__)
#define sysNtGdiDdCreateDirectDrawObject NtGdiDdCreateDirectDrawObject;
#define sysNtGdiDdCreateDirectDrawObject NtGdiDdCreateDirectDrawObject
#define sysNtGdiDdDeleteDirectDrawObject NtGdiDdDeleteDirectDrawObject
#define sysNtGdiDdQueryDirectDrawObject NtGdiDdQueryDirectDrawObject
#endif

View file

@ -1,5 +1,71 @@
HANDLE test_NtGdiDdCreateDirectDrawObject();
void test_NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal);
void test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal);
HANDLE sysNtGdiDdCreateDirectDrawObject(HDC hdc);
HANDLE NtGdiDdCreateDirectDrawObject(HDC hdc);
void test_NtGdiDdCreateDirectDrawObject();
BOOL sysNtGdiDdDeleteDirectDrawObject( HANDLE hDirectDrawLocal);
BOOL sysNtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal, DD_HALINFO *pHalInfo,
DWORD *pCallBackFlags,
LPD3DNTHAL_CALLBACKS puD3dCallbacks,
LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,
LPDDSURFACEDESC puD3dTextureFormats,
DWORD *puNumHeaps, VIDEOMEMORY *puvmList,
DWORD *puNumFourCC, DWORD *puFourCC);
HANDLE NtGdiDdCreateDirectDrawObject(HDC hdc);
BOOL NtGdiDdDeleteDirectDrawObject( HANDLE hDirectDrawLocal);
BOOL NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal, DD_HALINFO *pHalInfo,
DWORD *pCallBackFlags,
LPD3DNTHAL_CALLBACKS puD3dCallbacks,
LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,
LPDDSURFACEDESC puD3dTextureFormats,
DWORD *puNumHeaps, VIDEOMEMORY *puvmList,
DWORD *puNumFourCC, DWORD *puFourCC);
#define testing_eq(input,value,counter,text) \
if (input == value) \
{ \
counter++; \
printf("FAIL ret=%s, %d != %d )\n",text,input,value); \
}
#define testing_noteq(input,value,counter,text) \
if (input != value) \
{ \
counter++; \
printf("FAIL ret=%s, %d == %d )\n",text,input,value); \
}
#define show_status(counter, text) \
if (counter == 0) \
{ \
printf("End testing of %s Status : ok\n\n",text); \
} \
else \
{ \
printf("End testing of %s Status : fail\n\n",text); \
}
#if !defined(__REACTOS__)
#define win_syscall(inValue,outValue,syscallid) \
__asm { mov eax, syscallid }; \
__asm { lea edx, [inValue] }; \
__asm { int 0x2E }; \
__asm { mov outValue,eax};
#endif

View file

@ -592,6 +592,10 @@
RelativePath=".\Windows2000Sp4.h"
>
</File>
<File
RelativePath=".\windowsos.h"
>
</File>
</Filter>
<Filter
Name="Header Files"

View file

@ -0,0 +1,32 @@
#if !defined(__REACTOS__)
HANDLE sysNtGdiDdCreateDirectDrawObject(HDC hdc)
{
INT retValue;
win_syscall(hdc,retValue, syscallid_NtGdiDdCreateDirectDrawObject);
return retValue;
}
BOOL sysNtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal)
{
INT retValue;
win_syscall(hDirectDrawLocal,retValue, syscallid_NtGdiDdDeleteDirectDrawObject);
return retValue;
}
BOOL sysNtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal, DD_HALINFO *pHalInfo,
DWORD *pCallBackFlags,
LPD3DNTHAL_CALLBACKS puD3dCallbacks,
LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,
LPDDSURFACEDESC puD3dTextureFormats,
DWORD *puNumHeaps, VIDEOMEMORY *puvmList,
DWORD *puNumFourCC, DWORD *puFourCC)
{
INT retValue;
win_syscall(hDirectDrawLocal,retValue, syscallid_NtGdiDdQueryDirectDrawObject);
return retValue;
}
#endif