2005-05-08 02:11:54 +00:00
|
|
|
/*
|
2003-10-28 19:30:08 +00:00
|
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS kernel
|
|
|
|
* PURPOSE: Native DirectDraw implementation
|
|
|
|
* FILE: subsys/win32k/ntddraw/ddraw.c
|
2007-04-07 09:30:52 +00:00
|
|
|
* PROGRAMER: Magnus olsen (magnus@greatlord.com)
|
2003-10-28 19:30:08 +00:00
|
|
|
* REVISION HISTORY:
|
2007-10-14 20:42:41 +00:00
|
|
|
* 19/1-2006 Magnus Olsen
|
2003-10-28 19:30:08 +00:00
|
|
|
*/
|
2005-06-29 07:09:25 +00:00
|
|
|
|
2005-06-25 20:05:56 +00:00
|
|
|
#include <w32k.h>
|
2003-10-28 19:30:08 +00:00
|
|
|
#include <debug.h>
|
|
|
|
|
2007-10-14 12:07:23 +00:00
|
|
|
PGD_DXDDSTARTUPDXGRAPHICS gpfnStartupDxGraphics = NULL;
|
|
|
|
PGD_DXDDCLEANUPDXGRAPHICS gpfnCleanupDxGraphics = NULL;
|
|
|
|
|
|
|
|
DRVFN gaEngFuncs;
|
|
|
|
PDRVFN gpDxFuncs;
|
|
|
|
HANDLE ghDxGraphics;
|
|
|
|
ULONG gdwDirectDrawContext;
|
|
|
|
ULONG gcEngFuncs;
|
|
|
|
|
|
|
|
/************************************************************************/
|
2007-10-14 19:02:45 +00:00
|
|
|
/* DirectX graphic/video driver loading and cleanup start here */
|
2007-10-14 12:07:23 +00:00
|
|
|
/************************************************************************/
|
|
|
|
NTSTATUS
|
|
|
|
STDCALL
|
|
|
|
DxDdStartupDxGraphics( ULONG ulc1,
|
|
|
|
PDRVENABLEDATA pDrved1,
|
|
|
|
ULONG ulc2,
|
|
|
|
PDRVENABLEDATA pDrved2,
|
|
|
|
PULONG DDContext,
|
|
|
|
PEPROCESS Proc)
|
|
|
|
{
|
|
|
|
DRVENABLEDATA EngDrv;
|
|
|
|
DRVENABLEDATA DXG_API;
|
|
|
|
|
|
|
|
NTSTATUS Status = STATUS_DLL_NOT_FOUND;
|
|
|
|
|
|
|
|
/* FIXME setup of gaEngFuncs driver export list
|
|
|
|
* but not in this api, we can add it here tempary until we figout where
|
|
|
|
* no code have been writen for it yet
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/* FIXME ReactOS does not loading the dxapi.sys or import functions from it yet */
|
|
|
|
// DxApiGetVersion()
|
|
|
|
|
|
|
|
/* Loading the kernel interface of directx for win32k */
|
|
|
|
ghDxGraphics = EngLoadImage(L"drivers\\dxg.sys");
|
|
|
|
if (!ghDxGraphics)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no dxg.sys in ReactOS");
|
|
|
|
return Status;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* import DxDdStartupDxGraphics and DxDdCleanupDxGraphics */
|
|
|
|
gpfnStartupDxGraphics = EngFindImageProcAddress(ghDxGraphics,"DxDdStartupDxGraphics");
|
|
|
|
gpfnCleanupDxGraphics = EngFindImageProcAddress(ghDxGraphics,"DxDdCleanupDxGraphics");
|
|
|
|
|
|
|
|
if ((gpfnStartupDxGraphics) &&
|
|
|
|
(gpfnCleanupDxGraphics))
|
|
|
|
{
|
|
|
|
/* Setup driver data for activate the dx interface */
|
|
|
|
EngDrv.iDriverVersion = DDI_DRIVER_VERSION_NT5_01;
|
|
|
|
EngDrv.pdrvfn = &gaEngFuncs;
|
|
|
|
EngDrv.c = gcEngFuncs;
|
|
|
|
|
|
|
|
Status = gpfnStartupDxGraphics ( sizeof(DRVENABLEDATA),
|
|
|
|
&EngDrv,
|
|
|
|
sizeof(DRVENABLEDATA),
|
|
|
|
&DXG_API,
|
|
|
|
&gdwDirectDrawContext,
|
|
|
|
Proc );
|
|
|
|
}
|
|
|
|
|
|
|
|
/* check if we manger loading the data and execute the dxStartupDxGraphics and it susscess */
|
|
|
|
if (!NT_SUCCESS(Status))
|
|
|
|
{
|
|
|
|
gpfnStartupDxGraphics = NULL;
|
|
|
|
gpfnCleanupDxGraphics = NULL;
|
|
|
|
EngUnloadImage( ghDxGraphics);
|
|
|
|
ghDxGraphics = NULL;
|
|
|
|
DPRINT1("Warring no init of DirectX graphic interface");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
gpDxFuncs = DXG_API.pdrvfn;
|
|
|
|
DPRINT1("DirectX interface is Activated");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* return the status */
|
|
|
|
return Status;
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
BOOL
|
|
|
|
INTERNAL_CALL
|
|
|
|
DD_Cleanup(PVOID ObjectBody)
|
|
|
|
{
|
2007-10-15 18:40:01 +00:00
|
|
|
// FIXME remove this line PDD_DIRECTDRAW pDirectDraw = (PDD_DIRECTDRAW) ObjectBody;
|
2007-10-14 19:02:45 +00:00
|
|
|
DPRINT1("DD_Cleanup\n");
|
|
|
|
|
|
|
|
/* Do not known what the new cleanup code should do at moment */
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
INTERNAL_CALL
|
|
|
|
DDSURF_Cleanup(PVOID pDDSurf)
|
|
|
|
{
|
|
|
|
DPRINT1("DDSURF_Cleanup\n");
|
|
|
|
/* Do not known what the new cleanup code should do at moment */
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* DirectX graphic/video driver loading cleanup ends here */
|
|
|
|
/************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdCreateDirectDrawObject */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
HANDLE
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdCreateDirectDrawObject(HDC hdc)
|
|
|
|
{
|
|
|
|
|
|
|
|
PGD_DDCREATEDIRECTDRAWOBJECT pfnDdCreateDirectDrawObject = NULL;
|
|
|
|
NTSTATUS Status;
|
|
|
|
PEPROCESS Proc = NULL;
|
|
|
|
INT i=0;
|
|
|
|
|
|
|
|
/* FIXME get the process data */
|
|
|
|
/* FIXME this code should be add where the driver being load */
|
|
|
|
Status = DxDdStartupDxGraphics(0,NULL,0,NULL,NULL, Proc);
|
|
|
|
if (!NT_SUCCESS(Status))
|
|
|
|
{
|
|
|
|
DPRINT1("Warring : Fail to statup the directx interface");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* This is in correct place */
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdCreateDirectDrawObject, pfnDdCreateDirectDrawObject);
|
|
|
|
|
|
|
|
if (pfnDdCreateDirectDrawObject == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdCreateDirectDrawObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys DdCreateDirectDrawObject");
|
|
|
|
return pfnDdCreateDirectDrawObject(hdc);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-14 20:42:41 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDxgGenericThunk */
|
|
|
|
/************************************************************************/
|
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDxgGenericThunk(ULONG_PTR ulIndex,
|
|
|
|
ULONG_PTR ulHandle,
|
|
|
|
SIZE_T *pdwSizeOfPtr1,
|
|
|
|
PVOID pvPtr1,
|
|
|
|
SIZE_T *pdwSizeOfPtr2,
|
|
|
|
PVOID pvPtr2)
|
|
|
|
{
|
|
|
|
PGD_DXGENERICTRUNK pfnDxgGenericThunk = NULL;
|
|
|
|
INT i;
|
|
|
|
|
2007-10-15 18:40:01 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDxgGenericThunk, pfnDxgGenericThunk);
|
2007-10-14 20:42:41 +00:00
|
|
|
|
2007-10-15 18:40:01 +00:00
|
|
|
if (pfnDxgGenericThunk == NULL)
|
2007-10-14 20:42:41 +00:00
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDxgGenericThunk");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys pfnDxgGenericThunk");
|
|
|
|
return pfnDxgGenericThunk(ulIndex, ulHandle, pdwSizeOfPtr1, pvPtr1, pdwSizeOfPtr2, pvPtr2);
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdGetDriverState */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdGetDriverState(PDD_GETDRIVERSTATEDATA pdata)
|
|
|
|
{
|
|
|
|
PGD_DDGETDRIVERSTATE pfnDdGetDriverState = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetDriverState, pfnDdGetDriverState);
|
|
|
|
|
|
|
|
if (pfnDdGetDriverState == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdGetDriverState");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys DdGetDriverState");
|
|
|
|
return pfnDdGetDriverState(pdata);
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdColorControl */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdColorControl(HANDLE hSurface,
|
|
|
|
PDD_COLORCONTROLDATA puColorControlData)
|
|
|
|
{
|
|
|
|
PGD_DDCOLORCONTROL pfnDdColorControl = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdColorControl, pfnDdColorControl);
|
|
|
|
|
|
|
|
if (pfnDdColorControl == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdColorControl");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys DdColorControl");
|
|
|
|
return pfnDdColorControl(hSurface,puColorControlData);
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdCreateSurfaceObject */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
HANDLE
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdCreateSurfaceObject(HANDLE hDirectDrawLocal,
|
|
|
|
HANDLE hSurface,
|
|
|
|
PDD_SURFACE_LOCAL puSurfaceLocal,
|
|
|
|
PDD_SURFACE_MORE puSurfaceMore,
|
|
|
|
PDD_SURFACE_GLOBAL puSurfaceGlobal,
|
|
|
|
BOOL bComplete
|
|
|
|
)
|
|
|
|
{
|
|
|
|
PGD_DXDDCREATESURFACEOBJECT pfnDdCreateSurfaceObject = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdCreateSurfaceObject, pfnDdCreateSurfaceObject);
|
|
|
|
|
|
|
|
if (pfnDdCreateSurfaceObject == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdCreateSurfaceObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdCreateSurfaceObject");
|
2007-10-14 12:07:23 +00:00
|
|
|
return pfnDdCreateSurfaceObject(hDirectDrawLocal, hSurface, puSurfaceLocal, puSurfaceMore, puSurfaceGlobal, bComplete);
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdDeleteDirectDrawObject */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
BOOL
|
|
|
|
STDCALL
|
2007-10-14 19:02:45 +00:00
|
|
|
NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal)
|
2007-10-14 12:07:23 +00:00
|
|
|
{
|
|
|
|
PGD_DXDDDELETEDIRECTDRAWOBJECT pfnDdDeleteDirectDrawObject = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdDeleteDirectDrawObject, pfnDdDeleteDirectDrawObject);
|
|
|
|
|
|
|
|
if (pfnDdDeleteDirectDrawObject == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdDeleteDirectDrawObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdDeleteDirectDrawObject");
|
2007-10-14 12:07:23 +00:00
|
|
|
return pfnDdDeleteDirectDrawObject(hDirectDrawLocal);
|
|
|
|
}
|
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdDeleteSurfaceObject */
|
|
|
|
/************************************************************************/
|
2007-10-14 12:07:23 +00:00
|
|
|
BOOL
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdDeleteSurfaceObject(HANDLE hSurface)
|
|
|
|
{
|
|
|
|
PGD_DXDDDELETESURFACEOBJECT pfnDdDeleteSurfaceObject = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdDeleteSurfaceObject, pfnDdDeleteSurfaceObject);
|
|
|
|
|
|
|
|
if (pfnDdDeleteSurfaceObject == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdDeleteSurfaceObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys DdDeleteSurfaceObject");
|
|
|
|
return pfnDdDeleteSurfaceObject(hSurface);
|
|
|
|
}
|
|
|
|
|
2003-10-28 19:30:08 +00:00
|
|
|
/************************************************************************/
|
2007-10-14 19:02:45 +00:00
|
|
|
/* NtGdiDdDeleteSurfaceObject */
|
2003-10-28 19:30:08 +00:00
|
|
|
/************************************************************************/
|
2007-02-21 22:19:31 +00:00
|
|
|
BOOL
|
2007-10-14 19:02:45 +00:00
|
|
|
STDCALL
|
|
|
|
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)
|
2003-10-28 19:30:08 +00:00
|
|
|
{
|
2007-10-14 19:02:45 +00:00
|
|
|
PGD_DXDDQUERYDIRECTDRAWOBJECT pfnDdQueryDirectDrawObject = NULL;
|
|
|
|
INT i;
|
2006-12-23 19:06:43 +00:00
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdQueryDirectDrawObject, pfnDdQueryDirectDrawObject);
|
2007-02-21 22:19:31 +00:00
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
if (pfnDdQueryDirectDrawObject == NULL)
|
2007-02-21 22:19:31 +00:00
|
|
|
{
|
2007-10-14 19:02:45 +00:00
|
|
|
DPRINT1("Warring no pfnDdQueryDirectDrawObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
2006-12-23 19:06:43 +00:00
|
|
|
}
|
2005-10-09 22:15:06 +00:00
|
|
|
|
2007-10-14 19:02:45 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdQueryDirectDrawObject");
|
|
|
|
return pfnDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData,
|
|
|
|
puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, puvmList, puNumFourCC, puFourCC);
|
2005-10-09 22:15:06 +00:00
|
|
|
}
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2007-04-07 09:30:52 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdReenableDirectDrawObject */
|
|
|
|
/************************************************************************/
|
2007-10-14 19:02:45 +00:00
|
|
|
BOOL
|
2007-10-14 19:45:13 +00:00
|
|
|
STDCALL
|
|
|
|
NtGdiDdReenableDirectDrawObject(HANDLE hDirectDrawLocal,
|
|
|
|
BOOL *pubNewMode)
|
2007-03-03 20:19:56 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
PGD_DXDDREENABLEDIRECTDRAWOBJECT pfnDdReenableDirectDrawObject = NULL;
|
|
|
|
INT i;
|
2007-03-03 20:19:56 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdReenableDirectDrawObject, pfnDdReenableDirectDrawObject);
|
2007-03-03 20:19:56 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
if (pfnDdReenableDirectDrawObject == NULL)
|
2007-03-03 20:19:56 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Warring no pfnDdReenableDirectDrawObject");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
2007-03-03 20:19:56 +00:00
|
|
|
}
|
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdReenableDirectDrawObject");
|
|
|
|
return pfnDdReenableDirectDrawObject(hDirectDrawLocal, pubNewMode);
|
2007-03-03 20:19:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdGetDriverInfo */
|
|
|
|
/************************************************************************/
|
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdGetDriverInfo(HANDLE hDirectDrawLocal,
|
|
|
|
PDD_GETDRIVERINFODATA puGetDriverInfoData)
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2005-10-09 22:15:06 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
PGD_DXDDGETDRIVERINFO pfnDdGetDriverInfo = NULL;
|
|
|
|
INT i;
|
2003-10-28 19:30:08 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetDriverInfo, pfnDdGetDriverInfo);
|
2006-07-19 01:40:06 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
if (pfnDdGetDriverInfo == NULL)
|
2006-12-23 19:06:43 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Warring no pfnDdGetDriverInfo");
|
2006-12-23 19:06:43 +00:00
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
2005-12-09 20:58:32 +00:00
|
|
|
}
|
2005-10-09 22:15:06 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdGetDriverInfo");
|
|
|
|
return pfnDdGetDriverInfo(hDirectDrawLocal, puGetDriverInfoData);
|
2005-10-09 22:15:06 +00:00
|
|
|
}
|
2005-10-07 20:27:52 +00:00
|
|
|
|
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdGetAvailDriverMemory */
|
|
|
|
/************************************************************************/
|
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdGetAvailDriverMemory(HANDLE hDirectDrawLocal,
|
|
|
|
PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData)
|
2005-04-26 17:19:06 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
PGD_DXDDGETAVAILDRIVERMEMORY pfnDdGetAvailDriverMemory = NULL;
|
|
|
|
INT i;
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetAvailDriverMemory, pfnDdGetAvailDriverMemory);
|
2005-10-24 18:47:33 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
if (pfnDdGetAvailDriverMemory == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdGetAvailDriverMemory");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2005-10-24 18:47:33 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdGetAvailDriverMemory");
|
|
|
|
return pfnDdGetAvailDriverMemory(hDirectDrawLocal, puGetAvailDriverMemoryData);
|
2005-04-26 17:19:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdSetExclusiveMode */
|
|
|
|
/************************************************************************/
|
2005-04-26 17:19:06 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdSetExclusiveMode(HANDLE hDirectDraw,
|
|
|
|
PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData)
|
2005-10-06 21:18:59 +00:00
|
|
|
{
|
2007-10-14 19:45:13 +00:00
|
|
|
PGD_DXDDSETEXCLUSIVEMODE pfnDdSetExclusiveMode = NULL;
|
|
|
|
INT i;
|
2005-10-24 18:47:33 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdSetExclusiveMode, pfnDdSetExclusiveMode);
|
2005-10-24 18:47:33 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
if (pfnDdSetExclusiveMode == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdSetExclusiveMode");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2005-10-06 21:18:59 +00:00
|
|
|
|
2007-10-14 19:45:13 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdSetExclusiveMode");
|
2007-10-15 18:40:01 +00:00
|
|
|
return pfnDdSetExclusiveMode(hDirectDraw, puSetExclusiveModeData);
|
2005-10-24 18:47:33 +00:00
|
|
|
|
2005-10-06 21:18:59 +00:00
|
|
|
}
|
2005-04-26 22:02:32 +00:00
|
|
|
|
2005-04-26 22:28:24 +00:00
|
|
|
|
2007-10-14 20:05:40 +00:00
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdFlipToGDISurface */
|
|
|
|
/************************************************************************/
|
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdFlipToGDISurface(HANDLE hDirectDraw,
|
|
|
|
PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData)
|
|
|
|
{
|
|
|
|
PGD_DXDDFLIPTOGDISURFACE pfnDdFlipToGDISurface = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdFlipToGDISurface, pfnDdFlipToGDISurface);
|
|
|
|
|
|
|
|
if (pfnDdFlipToGDISurface == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdFlipToGDISurface");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys pfnDdFlipToGDISurface");
|
2007-10-15 19:04:50 +00:00
|
|
|
return pfnDdFlipToGDISurface(hDirectDraw, puFlipToGDISurfaceData);
|
2007-10-14 20:05:40 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdGetDC */
|
|
|
|
/************************************************************************/
|
|
|
|
HDC
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdGetDC(HANDLE hSurface,
|
|
|
|
PALETTEENTRY *puColorTable)
|
|
|
|
{
|
2007-10-15 08:42:47 +00:00
|
|
|
PGD_DDGETDC pfnDdGetDC = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetDC, pfnDdGetDC);
|
|
|
|
|
|
|
|
if (pfnDdGetDC == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdGetDC");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2007-10-14 20:05:40 +00:00
|
|
|
|
2007-10-15 08:42:47 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdGetDC");
|
|
|
|
return pfnDdGetDC(hSurface, puColorTable);
|
2007-10-14 20:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdGetDxHandle */
|
|
|
|
/************************************************************************/
|
|
|
|
HANDLE
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdGetDxHandle(HANDLE hDirectDraw,
|
|
|
|
HANDLE hSurface,
|
|
|
|
BOOL bRelease)
|
|
|
|
{
|
2007-10-15 09:49:58 +00:00
|
|
|
|
2007-10-15 19:04:50 +00:00
|
|
|
PGD_DDGETDXHANDLE pfnDdGetDxHandle = NULL;
|
2007-10-15 09:49:58 +00:00
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetDxHandle, pfnDdGetDxHandle);
|
|
|
|
|
|
|
|
if (pfnDdGetDxHandle == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdGetDxHandle");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2007-10-14 20:05:40 +00:00
|
|
|
|
2007-10-15 09:49:58 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdGetDxHandle");
|
|
|
|
return pfnDdGetDxHandle(hDirectDraw, hSurface, bRelease);
|
2007-10-14 20:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdReleaseDC */
|
|
|
|
/************************************************************************/
|
|
|
|
BOOL
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdReleaseDC(HANDLE hSurface)
|
|
|
|
{
|
2007-10-15 19:04:50 +00:00
|
|
|
PGD_DDRELEASEDC pfnDdReleaseDC = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdReleaseDC, pfnDdReleaseDC);
|
|
|
|
|
|
|
|
if (pfnDdReleaseDC == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdReleaseDC");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2007-10-14 20:05:40 +00:00
|
|
|
|
2007-10-15 19:04:50 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdReleaseDC");
|
|
|
|
return pfnDdReleaseDC(hSurface);
|
2007-10-14 20:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdResetVisrgn */
|
|
|
|
/************************************************************************/
|
|
|
|
BOOL
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdResetVisrgn(HANDLE hSurface,
|
|
|
|
HWND hwnd)
|
|
|
|
{
|
|
|
|
|
2007-10-15 19:04:50 +00:00
|
|
|
PGD_DDRESTVISRGN pfnDdResetVisrgn = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdResetVisrgn, pfnDdResetVisrgn);
|
|
|
|
|
|
|
|
if (pfnDdResetVisrgn == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdResetVisrgn");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
|
|
|
|
|
|
|
DPRINT1("Calling on dxg.sys pfnDdResetVisrgn");
|
|
|
|
return pfnDdResetVisrgn(hSurface, hwnd);
|
2007-10-14 20:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
/* NtGdiDdSetGammaRamp */
|
|
|
|
/************************************************************************/
|
|
|
|
BOOL
|
|
|
|
STDCALL
|
|
|
|
NtGdiDdSetGammaRamp(HANDLE hDirectDraw,
|
|
|
|
HDC hdc,
|
|
|
|
LPVOID lpGammaRamp)
|
|
|
|
{
|
2007-10-15 19:04:50 +00:00
|
|
|
PGD_DDSETGAMMARAMP pfnDdSetGammaRamp = NULL;
|
|
|
|
INT i;
|
|
|
|
|
|
|
|
DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdSetGammaRamp, pfnDdSetGammaRamp);
|
|
|
|
|
|
|
|
if (pfnDdSetGammaRamp == NULL)
|
|
|
|
{
|
|
|
|
DPRINT1("Warring no pfnDdSetGammaRamp");
|
|
|
|
return DDHAL_DRIVER_NOTHANDLED;
|
|
|
|
}
|
2007-10-14 20:05:40 +00:00
|
|
|
|
2007-10-15 19:04:50 +00:00
|
|
|
DPRINT1("Calling on dxg.sys pfnDdSetGammaRamp");
|
|
|
|
return pfnDdSetGammaRamp(hDirectDraw, hdc, lpGammaRamp);
|
2007-10-14 20:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-04-26 22:02:32 +00:00
|
|
|
|
2005-03-16 11:50:24 +00:00
|
|
|
|
2003-10-28 19:30:08 +00:00
|
|
|
/* EOF */
|