|
|
/******************************Module*Header*******************************\
* Module Name: ddsup.cxx * * * * Copyright (c) 1990-2000 Microsoft Corporation * * * * DirectDraw support routines * * * \**************************************************************************/
#include "precomp.hxx"
DRVFN gaEngFuncs[] = { { INDEX_DxEngUnused, (PFN) NULL }, { INDEX_DxEngIsTermSrv, (PFN) DxEngIsTermSrv }, { INDEX_DxEngScreenAccessCheck, (PFN) DxEngScreenAccessCheck }, { INDEX_DxEngRedrawDesktop, (PFN) DxEngRedrawDesktop }, { INDEX_DxEngDispUniq, (PFN) DxEngDispUniq }, { INDEX_DxEngIncDispUniq, (PFN) DxEngIncDispUniq }, { INDEX_DxEngVisRgnUniq, (PFN) DxEngVisRgnUniq }, { INDEX_DxEngLockShareSem, (PFN) DxEngLockShareSem }, { INDEX_DxEngUnlockShareSem, (PFN) DxEngUnlockShareSem }, { INDEX_DxEngEnumerateHdev, (PFN) DxEngEnumerateHdev }, { INDEX_DxEngLockHdev, (PFN) DxEngLockHdev }, { INDEX_DxEngUnlockHdev, (PFN) DxEngUnlockHdev }, { INDEX_DxEngIsHdevLockedByCurrentThread, (PFN) DxEngIsHdevLockedByCurrentThread }, { INDEX_DxEngReferenceHdev, (PFN) DxEngReferenceHdev }, { INDEX_DxEngUnreferenceHdev, (PFN) DxEngUnreferenceHdev }, { INDEX_DxEngGetDeviceGammaRamp, (PFN) DxEngGetDeviceGammaRamp }, { INDEX_DxEngSetDeviceGammaRamp, (PFN) DxEngSetDeviceGammaRamp }, { INDEX_DxEngSpTearDownSprites, (PFN) DxEngSpTearDownSprites }, { INDEX_DxEngSpUnTearDownSprites, (PFN) DxEngSpUnTearDownSprites }, { INDEX_DxEngSpSpritesVisible, (PFN) DxEngSpSpritesVisible }, { INDEX_DxEngGetHdevData, (PFN) DxEngGetHdevData }, { INDEX_DxEngSetHdevData, (PFN) DxEngSetHdevData }, { INDEX_DxEngCreateMemoryDC, (PFN) DxEngCreateMemoryDC }, { INDEX_DxEngGetDesktopDC, (PFN) DxEngGetDesktopDC }, { INDEX_DxEngDeleteDC, (PFN) DxEngDeleteDC }, { INDEX_DxEngCleanDC, (PFN) DxEngCleanDC }, { INDEX_DxEngSetDCOwner, (PFN) DxEngSetDCOwner }, { INDEX_DxEngLockDC, (PFN) DxEngLockDC }, { INDEX_DxEngUnlockDC, (PFN) DxEngUnlockDC }, { INDEX_DxEngSetDCState, (PFN) DxEngSetDCState }, { INDEX_DxEngGetDCState, (PFN) DxEngGetDCState }, { INDEX_DxEngSelectBitmap, (PFN) DxEngSelectBitmap }, { INDEX_DxEngSetBitmapOwner, (PFN) DxEngSetBitmapOwner }, { INDEX_DxEngDeleteSurface, (PFN) DxEngDeleteSurface }, { INDEX_DxEngGetSurfaceData, (PFN) DxEngGetSurfaceData }, { INDEX_DxEngAltLockSurface, (PFN) DxEngAltLockSurface }, { INDEX_DxEngUploadPaletteEntryToSurface, (PFN) DxEngUploadPaletteEntryToSurface }, { INDEX_DxEngMarkSurfaceAsDirectDraw, (PFN) DxEngMarkSurfaceAsDirectDraw }, { INDEX_DxEngSelectPaletteToSurface, (PFN) DxEngSelectPaletteToSurface }, { INDEX_DxEngSyncPaletteTableWithDevice, (PFN) DxEngSyncPaletteTableWithDevice }, { INDEX_DxEngSetPaletteState, (PFN) DxEngSetPaletteState }, { INDEX_DxEngGetRedirectionBitmap, (PFN) DxEngGetRedirectionBitmap }, { INDEX_DxEngLoadImage, (PFN) DxEngLoadImage } };
ULONG gcEngFuncs = sizeof(gaEngFuncs) / sizeof(DRVFN);
DRVFN *gpDxFuncs = NULL;
HANDLE ghDxGraphics = NULL; PFN_StartupDxGraphics gpfnStartupDxGraphics = NULL; PFN_CleanupDxGraphics gpfnCleanupDxGraphics = NULL;
DWORD gdwDirectDrawContext = 0;
extern ULONG giVisRgnUniqueness;
extern "C" ULONG APIENTRY DxApiGetVersion(VOID);
/******************************Public*Routine******************************\
* DxDdStartupDxGraphics() * * History: * * Write it: * 31-Aug-2000 -by- Hideyuki Nagase [hideyukn] \**************************************************************************/
NTSTATUS DxDdStartupDxGraphics( ULONG dummy1, DRVENABLEDATA *dummy2, ULONG dummy3, DRVENABLEDATA *dummy4, DWORD *dummy5, PEPROCESS pepSession) { NTSTATUS NtStatus;
UNREFERENCED_PARAMETER(dummy1); UNREFERENCED_PARAMETER(dummy2); UNREFERENCED_PARAMETER(dummy3); UNREFERENCED_PARAMETER(dummy4);
// Note: this is a dummy call to bring in dxapi.sys which we link to
DxApiGetVersion();
//
// Load directx driver.
//
ghDxGraphics = EngLoadImage(L"drivers\\dxg.sys");
if (ghDxGraphics) { //
// Get initialization entry point.
//
gpfnStartupDxGraphics = (PFN_StartupDxGraphics) EngFindImageProcAddress(ghDxGraphics,"DxDdStartupDxGraphics");
//
// Get Un-initialization entry point.
//
gpfnCleanupDxGraphics = (PFN_CleanupDxGraphics) EngFindImageProcAddress(ghDxGraphics,"DxDdCleanupDxGraphics");
if ((gpfnStartupDxGraphics == NULL) || (gpfnCleanupDxGraphics == NULL)) { WARNING("Can't find initalization export from dxg.sys"); NtStatus = STATUS_PROCEDURE_NOT_FOUND; goto DxDd_InitError; }
//
// Initialize directx driver.
//
DRVENABLEDATA dedEng; DRVENABLEDATA dedDxg;
// iDriverVersion for win32k.sys version
//
// - 0x00050001 for Whistler
dedEng.iDriverVersion = 0x00050001; dedEng.c = gcEngFuncs; dedEng.pdrvfn = gaEngFuncs;
NtStatus = (*gpfnStartupDxGraphics)(sizeof(DRVENABLEDATA), &dedEng, sizeof(DRVENABLEDATA), &dedDxg, &gdwDirectDrawContext, pepSession);
if (NT_SUCCESS(NtStatus)) { //
// Keep the pointer to array of dxg calls
//
gpDxFuncs = dedDxg.pdrvfn;
//
// Now everything initialized correctly.
//
return (STATUS_SUCCESS); } else { WARNING("Failed on initialization for dxg.sys");
//
// fall through to error handling code.
//
} } else { WARNING("Failed on loading dxg.sys");
//
// fall through to error handling code.
//
NtStatus = STATUS_DLL_NOT_FOUND; }
DxDd_InitError:
if (ghDxGraphics) { EngUnloadImage(ghDxGraphics); }
//
// Put eveything back to NULL.
//
ghDxGraphics = NULL; gpfnStartupDxGraphics = NULL; gpfnCleanupDxGraphics = NULL; gpDxFuncs = NULL;
return (NtStatus); }
/******************************Public*Routine******************************\
* DxDdCleanupDxGraphics() * * History: * * Write it: * 31-Aug-2000 -by- Hideyuki Nagase [hideyukn] \**************************************************************************/
NTSTATUS DxDdCleanupDxGraphics(VOID) { if (ghDxGraphics) { //
// call directx driver to let them clean up.
//
if (gpfnCleanupDxGraphics) { (*gpfnCleanupDxGraphics)(); }
//
// Unload modules.
//
EngUnloadImage(ghDxGraphics); }
//
// Put eveything back to NULL.
//
ghDxGraphics = NULL; gpfnStartupDxGraphics = NULL; gpfnCleanupDxGraphics = NULL; gpDxFuncs = NULL;
return (STATUS_SUCCESS); }
/***************************************************************************\
* * Internal functions called by dxg.sys * \***************************************************************************/
BOOL DxEngIsTermSrv(VOID) { return(!!(SharedUserData->SuiteMask & (1 << TerminalServer))); }
BOOL DxEngScreenAccessCheck(VOID) { return(UserScreenAccessCheck()); } BOOL DxEngRedrawDesktop(VOID) { UserRedrawDesktop(); return (TRUE); }
ULONG DxEngDispUniq(VOID) { return (gpGdiSharedMemory->iDisplaySettingsUniqueness); }
BOOL DxEngIncDispUniq(VOID) { LONG* pl = (PLONG) &gpGdiSharedMemory->iDisplaySettingsUniqueness; InterlockedIncrement(pl); return (TRUE); }
ULONG DxEngVisRgnUniq(VOID) { return (giVisRgnUniqueness); }
BOOL DxEngLockShareSem(VOID) { GDIFunctionID(DxEngLockShareSem); GreAcquireSemaphoreEx(ghsemShareDevLock, SEMORDER_SHAREDEVLOCK, NULL); return (TRUE); }
BOOL DxEngUnlockShareSem(VOID) { GDIFunctionID(DxEngUnlockShareSem); GreReleaseSemaphoreEx(ghsemShareDevLock); return (TRUE); }
HDEV DxEngEnumerateHdev(HDEV hdev) { return (hdevEnumerate(hdev)); }
BOOL DxEngLockHdev(HDEV hdev) { GDIFunctionID(DxEngLockHdev); PDEVOBJ poLock(hdev); GreAcquireSemaphoreEx(poLock.hsemDevLock(), SEMORDER_DEVLOCK, NULL); GreEnterMonitoredSection(poLock.ppdev, WD_DEVLOCK); return (TRUE); }
BOOL DxEngUnlockHdev(HDEV hdev) { GDIFunctionID(DxEngUnlockHdev); PDEVOBJ poLock(hdev); GreExitMonitoredSection(poLock.ppdev, WD_DEVLOCK); GreReleaseSemaphoreEx(poLock.hsemDevLock()); return (TRUE); }
BOOL DxEngIsHdevLockedByCurrentThread(HDEV hdev) { PDEVOBJ poLock(hdev); return (GreIsSemaphoreOwnedByCurrentThread(poLock.hsemDevLock())); }
BOOL DxEngReferenceHdev(HDEV hdev) { PDEVOBJ po(hdev); po.vReferencePdev(); return (TRUE); }
BOOL DxEngUnreferenceHdev(HDEV hdev) { PDEVOBJ po(hdev); po.vUnreferencePdev(); return (TRUE); }
BOOL DxEngGetDeviceGammaRamp(HDEV hdev,PVOID pv) { return (GreGetDeviceGammaRampInternal(hdev,pv)); }
BOOL DxEngSetDeviceGammaRamp( HDEV hdev, PVOID pv, BOOL b) { return (GreSetDeviceGammaRampInternal(hdev,pv,b)); }
BOOL DxEngSpTearDownSprites( HDEV hdev, RECTL* prcl, BOOL b) { return (bSpTearDownSprites(hdev,prcl,b)); }
BOOL DxEngSpUnTearDownSprites( HDEV hdev, RECTL* prcl, BOOL b) { vSpUnTearDownSprites(hdev,prcl,b); return (TRUE); }
BOOL DxEngSpSpritesVisible(HDEV hdev) { return (bSpSpritesVisible(hdev)); }
ULONG_PTR DxEngGetHdevData( HDEV hdev, DWORD dwIndex) { ULONG_PTR ulRet = 0; PDEVOBJ po(hdev);
switch (dwIndex) { case HDEV_SURFACEHANDLE: ulRet = (ULONG_PTR)(po.pSurface()->hGet()); break; case HDEV_MINIPORTHANDLE: ulRet = (ULONG_PTR)(po.hScreen()); break; case HDEV_DITHERFORMAT: ulRet = (ULONG_PTR)(po.iDitherFormat()); break; case HDEV_GCAPS: ulRet = (ULONG_PTR)(po.flGraphicsCapsNotDynamic()); break; case HDEV_GCAPS2: ulRet = (ULONG_PTR)(po.flGraphicsCaps2NotDynamic()); break; case HDEV_FUNCTIONTABLE: ulRet = (ULONG_PTR)(po.apfn()); break; case HDEV_DHPDEV: ulRet = (ULONG_PTR)(po.dhpdev()); break; case HDEV_DXDATA: ulRet = (ULONG_PTR)(po.pDirectDrawContext()); break; case HDEV_DXLOCKS: ulRet = (ULONG_PTR)(po.cDirectDrawDisableLocks()); break; case HDEV_CAPSOVERRIDE: ulRet = (ULONG_PTR)(po.dwDriverCapableOverride()); break; case HDEV_DISABLED: ulRet = (ULONG_PTR)(po.bDisabled()); break; case HDEV_DDML: ulRet = (ULONG_PTR)(po.bMetaDriver()); break; case HDEV_CLONE: ulRet = (ULONG_PTR)(po.bCloneDriver()); break; case HDEV_DISPLAY: ulRet = (ULONG_PTR)(po.bDisplayPDEV()); break; case HDEV_PARENTHDEV: ulRet = (ULONG_PTR)(po.hdevParent()); break; case HDEV_DELETED: ulRet = (ULONG_PTR)(po.bDeleted()); break; case HDEV_PALMANAGED: ulRet = (ULONG_PTR)(po.bIsPalManaged()); break; case HDEV_LDEV: ulRet = (ULONG_PTR)(po.pldev()); break; case HDEV_GRAPHICSDEVICE: ulRet = (ULONG_PTR)(((PDEV *)po.hdev())->pGraphicsDevice); break; }
return (ulRet); }
BOOL DxEngSetHdevData( HDEV hdev, DWORD dwIndex, ULONG_PTR ulData) { BOOL bRet = FALSE; PDEVOBJ po(hdev);
switch (dwIndex) { case HDEV_DXLOCKS: po.cDirectDrawDisableLocks((ULONG)ulData); bRet = TRUE; break; }
return (bRet); }
// Functions for control DC
HDC DxEngCreateMemoryDC( HDEV hdev) { return (GreCreateDisplayDC(hdev,DCTYPE_MEMORY,FALSE)); }
HDC DxEngGetDesktopDC( ULONG ulType, BOOL bAltType, BOOL bValidate) { return (UserGetDesktopDC(ulType, bAltType, bValidate)); }
BOOL DxEngDeleteDC( HDC hdc, BOOL bForce) { return (bDeleteDCInternal(hdc, bForce, FALSE)); }
BOOL DxEngCleanDC( HDC hdc) { return (GreCleanDC(hdc)); }
BOOL DxEngSetDCOwner( HDC hdc, W32PID pidOwner) { return (GreSetDCOwner(hdc, pidOwner)); }
PVOID DxEngLockDC( HDC hdc) { PVOID pvLockedDC = NULL; XDCOBJ dco(hdc); if (dco.bValid()) { pvLockedDC = (PVOID)(dco.pdc); dco.vDontUnlockDC(); } return (pvLockedDC); }
BOOL DxEngUnlockDC( PVOID pvLockedDC) { XDCOBJ dco; dco.pdc = (PDC)pvLockedDC; dco.vUnlock(); return (TRUE); }
BOOL DxEngSetDCState( HDC hdc, DWORD dwState, ULONG_PTR ulData) { BOOL bRet = FALSE; MDCOBJA dco(hdc); // Multiple Alt Lock.
if (dco.bValid()) { switch (dwState) { case DCSTATE_FULLSCREEN: dco.bInFullScreen((BOOL)ulData); bRet = TRUE; break; } } return (bRet); } ULONG_PTR DxEngGetDCState( HDC hdc, DWORD dwState) { ULONG_PTR ulRet = 0; XDCOBJ dco(hdc); if (dco.bValid()) { switch (dwState) { case DCSTATE_FULLSCREEN: ulRet = (ULONG_PTR)(dco.bInFullScreen()); break; case DCSTATE_VISRGNCOMPLEX: { RGNOBJ ro(dco.pdc->prgnVis()); ulRet = (ULONG_PTR)(ro.iComplexity()); break; } case DCSTATE_HDEV: ulRet = (ULONG_PTR)(dco.hdev()); break; } dco.vUnlockFast(); } return (ulRet); }
// Functions for control Bitmap/Surface
HBITMAP DxEngSelectBitmap( HDC hdc, HBITMAP hbm) { return (hbmSelectBitmap(hdc, hbm, TRUE)); }
BOOL DxEngSetBitmapOwner( HBITMAP hbm, W32PID pidOwner) { return (GreSetBitmapOwner(hbm, pidOwner)); }
BOOL DxEngDeleteSurface( HSURF hsurf) { return (bDeleteSurface(hsurf)); }
ULONG_PTR DxEngGetSurfaceData( SURFOBJ* pso, DWORD dwIndex) { ULONG_PTR ulRet = 0; SURFACE *pSurface = SURFOBJ_TO_SURFACE_NOT_NULL(pso); switch (dwIndex) { case SURF_HOOKFLAGS: ulRet = (ULONG_PTR) pSurface->flags(); break; case SURF_IS_DIRECTDRAW_SURFACE: ulRet = (ULONG_PTR) pSurface->bDirectDraw(); break; case SURF_DD_SURFACE_HANDLE: ulRet = (ULONG_PTR) pSurface->hDDSurface; break; } return (ulRet); }
SURFOBJ* DxEngAltLockSurface( HBITMAP hsurf) { SURFREF so;
so.vAltLock((HSURF) hsurf); if (so.bValid()) { so.vKeepIt(); return(so.pSurfobj()); } else { WARNING("DxEngAltLockSurface failed to lock handle\n"); return((SURFOBJ *) NULL); } }
BOOL DxEngUploadPaletteEntryToSurface( HDEV hdev, SURFOBJ* pso, PALETTEENTRY* puColorTable, ULONG cColors) { BOOL bRet = FALSE; PDEVOBJ po(hdev);
if (po.bValid() && pso && puColorTable) { // Update the color table.
SURFACE *pSurface = SURFOBJ_TO_SURFACE_NOT_NULL(pso);
// Note that the scumy application might have delete the cached
// bitmap, so we have to check for bValid() here. (It's been a
// bad app, so we just protect against crashing, and don't bother
// to re-create a good bitmap for him.)
if (pSurface->bValid()) { XEPALOBJ pal(pSurface->ppal()); ASSERTGDI(pal.bValid(), "Unexpected invalid palette");
// Since we'll be mucking with the palette table:
pal.vUpdateTime();
if (puColorTable == NULL) { ASSERTGDI(po.bIsPalManaged(), "Expected palettized display");
// Make this palette share the same colour table as the
// screen, so that we always get identity blts:
pal.apalColorSet(po.ppalSurf());
bRet = TRUE; } else { // Previously, there might not have been a color table, but
// now there is. So reset the shared-palette pointer:
pal.apalResetColorTable();
PAL_ULONG* ppalstruc = pal.apalColorGet(); __try { for (ULONG i = 0; i < cColors; i++) { ppalstruc->pal = *puColorTable; puColorTable++; ppalstruc++; }
bRet = TRUE; } __except(EXCEPTION_EXECUTE_HANDLER) { WARNING("hbmDdCreateAndLockSurface: Bad color table"); } } } }
return (FALSE); }
BOOL DxEngMarkSurfaceAsDirectDraw( SURFOBJ* pso, HANDLE hDdSurf) { if (pso) { SURFACE *pSurface = SURFOBJ_TO_SURFACE_NOT_NULL(pso);
// Make sure that the USE_DEVLOCK flag is set so
// that the devlock is always acquired before drawing
// to the surface -- needed so that we can switch to
// a different mode and 'turn-off' access to the
// surface by changing the clipping:
pSurface->vSetUseDevlock(); pSurface->vSetDirectDraw(); pSurface->hDDSurface = hDdSurf; return (TRUE); }
return (FALSE); }
HPALETTE DxEngSelectPaletteToSurface( SURFOBJ* pso, HPALETTE hpal) { HPALETTE hpalRet = NULL; EPALOBJ pal(hpal);
if (pso && pal.bValid()) { SURFACE *pSurface = SURFOBJ_TO_SURFACE_NOT_NULL(pso);
// Get palette currently selected.
PPALETTE ppalOld = pSurface->ppal();
// Select palette into surface and increment ref count.
pSurface->ppal(pal.ppalGet());
pal.vRefPalette();
#if 0 // TODO:
if ((ppalOld != ppalDefaut) && (ppalOld != NULL)) { hpalRet = ppalOld->hGet(); ppalOld->vUnrefPalette(); } #endif
}
return (hpalRet); }
// Functions for control palette
BOOL DxEngSyncPaletteTableWithDevice( HPALETTE hpal, HDEV hdev) { BOOL bRet = FALSE; PDEVOBJ po(hdev); EPALOBJ pal(hpal); if (po.bValid() && pal.bValid()) { pal.apalColorSet(po.ppalSurf()); bRet = TRUE; } return (bRet); }
BOOL DxEngSetPaletteState( HPALETTE hpal, DWORD dwIndex, ULONG_PTR ulData) { BOOL bRet = FALSE; EPALOBJ pal(hpal); if (pal.bValid()) { switch (dwIndex) { case PALSTATE_DIBSECTION: if (ulData) { pal.flPal(PAL_DIBSECTION); } else { pal.flPalSet(pal.flPal() & ~PAL_DIBSECTION); } bRet = TRUE; } } return (bRet); }
// Functions for window handle
HBITMAP DxEngGetRedirectionBitmap( HWND hWnd ) { #ifdef DX_REDIRECTION
return (UserGetRedirectionBitmap(hWnd)); #else
return (NULL); #endif // DX_REDIRECTION
}
// Functions to load image file
HANDLE DxEngLoadImage( LPWSTR pwszDriver, BOOL bLoadInSessionSpace ) { BOOL bLoaded; HANDLE h;
GreAcquireSemaphoreEx(ghsemDriverMgmt, SEMORDER_DRIVERMGMT, NULL);
h = ldevLoadImage(pwszDriver, TRUE, &bLoaded, bLoadInSessionSpace);
GreReleaseSemaphoreEx(ghsemDriverMgmt);
return h; }
/***************************************************************************\
* * Stub routines to call dxg.sys * \***************************************************************************/
#define PPFNGET_DXFUNC(name) ((PFN_Dx##name)((gpDxFuncs[INDEX_Dx##name]).pfn))
#define CALL_DXFUNC(name) (*(PPFNGET_DXFUNC(name)))
extern "C" DWORD APIENTRY NtGdiDxgGenericThunk( IN ULONG_PTR ulIndex, IN ULONG_PTR ulHandle, IN OUT SIZE_T *pdwSizeOfPtr1, IN OUT PVOID pvPtr1, IN OUT SIZE_T *pdwSizeOfPtr2, IN OUT PVOID pvPtr2) { return (CALL_DXFUNC(DxgGenericThunk)(ulIndex,ulHandle, pdwSizeOfPtr1,pvPtr1, pdwSizeOfPtr2,pvPtr2)); }
DWORD APIENTRY NtGdiDdAddAttachedSurface( IN HANDLE hSurface, IN HANDLE hSurfaceAttached, IN OUT PDD_ADDATTACHEDSURFACEDATA puAddAttachedSurfaceData) { return (CALL_DXFUNC(DdAddAttachedSurface)(hSurface,hSurfaceAttached,puAddAttachedSurfaceData)); }
BOOL APIENTRY NtGdiDdAttachSurface( IN HANDLE hSurfaceFrom, IN HANDLE hSurfaceTo) { return (CALL_DXFUNC(DdAttachSurface)(hSurfaceFrom,hSurfaceTo)); }
DWORD APIENTRY NtGdiDdBlt( IN HANDLE hSurfaceDest, IN HANDLE hSurfaceSrc, IN OUT PDD_BLTDATA puBltData) { return (CALL_DXFUNC(DdBlt)(hSurfaceDest,hSurfaceSrc,puBltData)); }
DWORD APIENTRY NtGdiDdCanCreateSurface( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATESURFACEDATA puCanCreateSurfaceData) { return (CALL_DXFUNC(DdCanCreateSurface)(hDirectDraw,puCanCreateSurfaceData)); }
DWORD APIENTRY NtGdiDdColorControl( IN HANDLE hSurface, IN OUT PDD_COLORCONTROLDATA puColorControlData) { return (CALL_DXFUNC(DdColorControl)(hSurface,puColorControlData)); }
HANDLE APIENTRY NtGdiDdCreateDirectDrawObject( IN HDC hdc) { return (CALL_DXFUNC(DdCreateDirectDrawObject)(hdc)); }
DWORD APIENTRY NtGdiDdCreateSurface( IN HANDLE hDirectDraw, IN HANDLE* hSurface, IN OUT DDSURFACEDESC* puSurfaceDescription, IN OUT DD_SURFACE_GLOBAL* puSurfaceGlobalData, IN OUT DD_SURFACE_LOCAL* puSurfaceLocalData, IN OUT DD_SURFACE_MORE* puSurfaceMoreData, IN OUT DD_CREATESURFACEDATA* puCreateSurfaceData, OUT HANDLE* puhSurface) { return (CALL_DXFUNC(DdCreateSurface)(hDirectDraw,hSurface,puSurfaceDescription, puSurfaceGlobalData,puSurfaceLocalData, puSurfaceMoreData,puCreateSurfaceData, puhSurface)); }
HANDLE APIENTRY NtGdiDdCreateSurfaceObject( IN HANDLE hDirectDrawLocal, IN HANDLE hSurface, IN PDD_SURFACE_LOCAL puSurfaceLocal, IN PDD_SURFACE_MORE puSurfaceMore, IN PDD_SURFACE_GLOBAL puSurfaceGlobal, IN BOOL bComplete) { return (CALL_DXFUNC(DdCreateSurfaceObject)( hDirectDrawLocal,hSurface, puSurfaceLocal,puSurfaceMore,puSurfaceGlobal, bComplete)); }
BOOL APIENTRY NtGdiDdDeleteSurfaceObject( IN HANDLE hSurface) { return (CALL_DXFUNC(DdDeleteSurfaceObject)(hSurface)); }
BOOL APIENTRY NtGdiDdDeleteDirectDrawObject( IN HANDLE hDirectDrawLocal) { return (CALL_DXFUNC(DdDeleteDirectDrawObject)(hDirectDrawLocal)); }
DWORD APIENTRY NtGdiDdDestroySurface( IN HANDLE hSurface, IN BOOL bRealDestroy) { return (CALL_DXFUNC(DdDestroySurface)(hSurface,bRealDestroy)); }
DWORD APIENTRY NtGdiDdFlip( IN HANDLE hSurfaceCurrent, IN HANDLE hSurfaceTarget, IN HANDLE hSurfaceCurrentLeft, IN HANDLE hSurfaceTargetLeft, IN OUT PDD_FLIPDATA puFlipData) { return (CALL_DXFUNC(DdFlip)(hSurfaceCurrent,hSurfaceTarget, hSurfaceCurrentLeft,hSurfaceTargetLeft,puFlipData)); }
DWORD APIENTRY NtGdiDdGetAvailDriverMemory( IN HANDLE hDirectDraw, IN OUT PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData) { return (CALL_DXFUNC(DdGetAvailDriverMemory)(hDirectDraw,puGetAvailDriverMemoryData)); }
DWORD APIENTRY NtGdiDdGetBltStatus( IN HANDLE hSurface, IN OUT PDD_GETBLTSTATUSDATA puGetBltStatusData) { return (CALL_DXFUNC(DdGetBltStatus)(hSurface,puGetBltStatusData)); }
HDC APIENTRY NtGdiDdGetDC( IN HANDLE hSurface, IN PALETTEENTRY* puColorTable) { return (CALL_DXFUNC(DdGetDC)(hSurface,puColorTable)); }
DWORD APIENTRY NtGdiDdGetDriverInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETDRIVERINFODATA puGetDriverInfoData) { return (CALL_DXFUNC(DdGetDriverInfo)(hDirectDraw,puGetDriverInfoData)); }
DWORD APIENTRY NtGdiDdGetFlipStatus( IN HANDLE hSurface, IN OUT PDD_GETFLIPSTATUSDATA puGetFlipStatusData) { return (CALL_DXFUNC(DdGetFlipStatus)(hSurface,puGetFlipStatusData)); }
DWORD APIENTRY NtGdiDdGetScanLine( IN HANDLE hDirectDraw, IN OUT PDD_GETSCANLINEDATA puGetScanLineData) { return (CALL_DXFUNC(DdGetScanLine)(hDirectDraw,puGetScanLineData)); }
DWORD APIENTRY NtGdiDdSetExclusiveMode( IN HANDLE hDirectDraw, IN OUT PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData) { return (CALL_DXFUNC(DdSetExclusiveMode)(hDirectDraw,puSetExclusiveModeData)); }
DWORD APIENTRY NtGdiDdFlipToGDISurface( IN HANDLE hDirectDraw, IN OUT PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData) { return (CALL_DXFUNC(DdFlipToGDISurface)(hDirectDraw,puFlipToGDISurfaceData)); }
DWORD APIENTRY NtGdiDdLock( IN HANDLE hSurface, IN OUT PDD_LOCKDATA puLockData, IN HDC hdcClip) { return (CALL_DXFUNC(DdLock)(hSurface,puLockData,hdcClip)); }
BOOL APIENTRY 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) { return (CALL_DXFUNC(DdQueryDirectDrawObject)(hDirectDrawLocal,pHalInfo,pCallBackFlags, puD3dCallbacks,puD3dDriverData,puD3dBufferCallbacks, puD3dTextureFormats,puNumHeaps,puvmList, puNumFourCC,puFourCC)); } BOOL APIENTRY NtGdiDdReenableDirectDrawObject( IN HANDLE hDirectDrawLocal, IN OUT BOOL* pubNewMode) { return (CALL_DXFUNC(DdReenableDirectDrawObject)(hDirectDrawLocal,pubNewMode)); }
BOOL APIENTRY NtGdiDdReleaseDC( IN HANDLE hSurface) { return (CALL_DXFUNC(DdReleaseDC)(hSurface)); }
BOOL APIENTRY NtGdiDdResetVisrgn( IN HANDLE hSurface, IN HWND hwnd) { return (CALL_DXFUNC(DdResetVisrgn)(hSurface,hwnd)); }
DWORD APIENTRY NtGdiDdSetColorKey( IN HANDLE hSurface, IN OUT PDD_SETCOLORKEYDATA puSetColorKeyData) { return (CALL_DXFUNC(DdSetColorKey)(hSurface,puSetColorKeyData)); }
DWORD APIENTRY NtGdiDdSetOverlayPosition( IN HANDLE hSurfaceSource, IN HANDLE hSurfaceDestination, IN OUT PDD_SETOVERLAYPOSITIONDATA puSetOverlayPositionData) { return (CALL_DXFUNC(DdSetOverlayPosition)(hSurfaceSource,hSurfaceDestination,puSetOverlayPositionData)); }
VOID APIENTRY NtGdiDdUnattachSurface( IN HANDLE hSurface, IN HANDLE hSurfaceAttached) { CALL_DXFUNC(DdUnattachSurface)(hSurface,hSurfaceAttached); }
DWORD APIENTRY NtGdiDdUnlock( IN HANDLE hSurface, IN OUT PDD_UNLOCKDATA puUnlockData) { return (CALL_DXFUNC(DdUnlock)(hSurface,puUnlockData)); }
DWORD APIENTRY NtGdiDdUpdateOverlay( IN HANDLE hSurfaceDestination, IN HANDLE hSurfaceSource, IN OUT PDD_UPDATEOVERLAYDATA puUpdateOverlayData) { return (CALL_DXFUNC(DdUpdateOverlay)(hSurfaceDestination,hSurfaceSource,puUpdateOverlayData)); }
DWORD APIENTRY NtGdiDdWaitForVerticalBlank( IN HANDLE hDirectDraw, IN OUT PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData) { return (CALL_DXFUNC(DdWaitForVerticalBlank)(hDirectDraw,puWaitForVerticalBlankData)); }
HANDLE APIENTRY NtGdiDdGetDxHandle( IN HANDLE hDirectDraw, IN HANDLE hSurface, IN BOOL bRelease) { return (CALL_DXFUNC(DdGetDxHandle)(hDirectDraw,hSurface,bRelease)); }
BOOL APIENTRY NtGdiDdSetGammaRamp( IN HANDLE hDirectDraw, IN HDC hdc, IN LPVOID lpGammaRamp) { return (CALL_DXFUNC(DdSetGammaRamp)(hDirectDraw,hdc,lpGammaRamp)); }
DWORD APIENTRY NtGdiDdLockD3D( IN HANDLE hSurface, IN OUT PDD_LOCKDATA puLockData) { return (CALL_DXFUNC(DdLockD3D)(hSurface,puLockData)); }
DWORD APIENTRY NtGdiDdUnlockD3D( IN HANDLE hSurface, IN OUT PDD_UNLOCKDATA puUnlockData) { return (CALL_DXFUNC(DdUnlockD3D)(hSurface,puUnlockData)); }
DWORD APIENTRY NtGdiDdCreateD3DBuffer( IN HANDLE hDirectDraw, IN OUT HANDLE* hSurface, IN OUT DDSURFACEDESC* puSurfaceDescription, IN OUT DD_SURFACE_GLOBAL* puSurfaceGlobalData, IN OUT DD_SURFACE_LOCAL* puSurfaceLocalData, IN OUT DD_SURFACE_MORE* puSurfaceMoreData, IN OUT DD_CREATESURFACEDATA* puCreateSurfaceData, IN OUT HANDLE* puhSurface) { return (CALL_DXFUNC(DdCreateD3DBuffer)(hDirectDraw,hSurface,puSurfaceDescription, puSurfaceGlobalData,puSurfaceLocalData,puSurfaceMoreData, puCreateSurfaceData,puhSurface)); }
DWORD APIENTRY NtGdiDdCanCreateD3DBuffer( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATESURFACEDATA puCanCreateSurfaceData) { return (CALL_DXFUNC(DdCanCreateD3DBuffer)(hDirectDraw,puCanCreateSurfaceData)); }
DWORD APIENTRY NtGdiDdDestroyD3DBuffer( IN HANDLE hSurface) { return (CALL_DXFUNC(DdDestroyD3DBuffer)(hSurface)); }
DWORD APIENTRY NtGdiD3dContextCreate( IN HANDLE hDirectDrawLocal, IN HANDLE hSurfColor, IN HANDLE hSurfZ, IN OUT D3DNTHAL_CONTEXTCREATEI *pdcci) { return (CALL_DXFUNC(D3dContextCreate)(hDirectDrawLocal,hSurfColor,hSurfZ,pdcci)); }
DWORD APIENTRY NtGdiD3dContextDestroy( IN LPD3DNTHAL_CONTEXTDESTROYDATA pdcdad) { return (CALL_DXFUNC(D3dContextDestroy)(pdcdad)); }
DWORD APIENTRY NtGdiD3dContextDestroyAll( OUT LPD3DNTHAL_CONTEXTDESTROYALLDATA pdcdad) { return (CALL_DXFUNC(D3dContextDestroyAll)(pdcdad)); }
DWORD APIENTRY NtGdiD3dValidateTextureStageState( IN OUT LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA pData) { return (CALL_DXFUNC(D3dValidateTextureStageState)(pData)); }
DWORD APIENTRY NtGdiD3dDrawPrimitives2( IN HANDLE hCmdBuf, IN HANDLE hVBuf, IN OUT LPD3DNTHAL_DRAWPRIMITIVES2DATA pded, IN OUT FLATPTR* pfpVidMemCmd, IN OUT DWORD* pdwSizeCmd, IN OUT FLATPTR* pfpVidMemVtx, IN OUT DWORD* pdwSizeVtx) { return (CALL_DXFUNC(D3dDrawPrimitives2)(hCmdBuf,hVBuf,pded,pfpVidMemCmd, pdwSizeCmd,pfpVidMemVtx,pdwSizeVtx)); }
DWORD APIENTRY NtGdiDdGetDriverState( IN OUT PDD_GETDRIVERSTATEDATA pdata) { return(CALL_DXFUNC(DdGetDriverState)(pdata)); }
DWORD APIENTRY NtGdiDdCreateSurfaceEx( IN HANDLE hDirectDraw, IN HANDLE hSurface, IN DWORD dwSurfaceHandle) { return (CALL_DXFUNC(DdCreateSurfaceEx)(hDirectDraw,hSurface,dwSurfaceHandle)); }
DWORD APIENTRY NtGdiDdGetMoCompGuids( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPGUIDSDATA puGetMoCompGuidsData) { return (CALL_DXFUNC(DdGetMoCompGuids)(hDirectDraw,puGetMoCompGuidsData)); }
DWORD APIENTRY NtGdiDdGetMoCompFormats( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPFORMATSDATA puGetMoCompFormatsData) { return (CALL_DXFUNC(DdGetMoCompFormats)(hDirectDraw,puGetMoCompFormatsData)); }
DWORD APIENTRY NtGdiDdGetMoCompBuffInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPCOMPBUFFDATA puGetBuffData) { return (CALL_DXFUNC(DdGetMoCompBuffInfo)(hDirectDraw,puGetBuffData)); }
DWORD APIENTRY NtGdiDdGetInternalMoCompInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETINTERNALMOCOMPDATA puGetInternalData) { return (CALL_DXFUNC(DdGetInternalMoCompInfo)(hDirectDraw,puGetInternalData)); }
HANDLE APIENTRY NtGdiDdCreateMoComp( IN HANDLE hDirectDraw, IN OUT PDD_CREATEMOCOMPDATA puCreateMoCompData) { return (CALL_DXFUNC(DdCreateMoComp)(hDirectDraw,puCreateMoCompData)); }
DWORD APIENTRY NtGdiDdDestroyMoComp( IN HANDLE hMoComp, IN OUT PDD_DESTROYMOCOMPDATA puDestroyMoCompData) { return (CALL_DXFUNC(DdDestroyMoComp)(hMoComp,puDestroyMoCompData)); }
DWORD APIENTRY NtGdiDdBeginMoCompFrame( IN HANDLE hMoComp, IN OUT PDD_BEGINMOCOMPFRAMEDATA puBeginFrameData) { return (CALL_DXFUNC(DdBeginMoCompFrame)(hMoComp,puBeginFrameData)); }
DWORD APIENTRY NtGdiDdEndMoCompFrame( IN HANDLE hMoComp, IN OUT PDD_ENDMOCOMPFRAMEDATA puEndFrameData) { return (CALL_DXFUNC(DdEndMoCompFrame)(hMoComp,puEndFrameData)); }
DWORD APIENTRY NtGdiDdRenderMoComp( IN HANDLE hMoComp, IN OUT PDD_RENDERMOCOMPDATA puRenderMoCompData) { return (CALL_DXFUNC(DdRenderMoComp)(hMoComp,puRenderMoCompData)); }
DWORD APIENTRY NtGdiDdQueryMoCompStatus( IN OUT HANDLE hMoComp, IN OUT PDD_QUERYMOCOMPSTATUSDATA puQueryMoCompStatusData) { return (CALL_DXFUNC(DdQueryMoCompStatus)(hMoComp,puQueryMoCompStatusData)); }
DWORD APIENTRY NtGdiDdAlphaBlt( IN HANDLE hSurfaceDest, IN HANDLE hSurfaceSrc, IN OUT PDD_BLTDATA puBltData) { return (CALL_DXFUNC(DdAlphaBlt)(hSurfaceDest,hSurfaceSrc,puBltData)); }
DWORD APIENTRY NtGdiDvpCanCreateVideoPort( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATEVPORTDATA puCanCreateVPortData) { return (CALL_DXFUNC(DvpCanCreateVideoPort)(hDirectDraw,puCanCreateVPortData)); }
DWORD APIENTRY NtGdiDvpColorControl( IN HANDLE hVideoPort, IN OUT PDD_VPORTCOLORDATA puVPortColorData) { return (CALL_DXFUNC(DvpColorControl)(hVideoPort,puVPortColorData)); }
HANDLE APIENTRY NtGdiDvpCreateVideoPort( IN HANDLE hDirectDraw, IN OUT PDD_CREATEVPORTDATA puCreateVPortData) { return (CALL_DXFUNC(DvpCreateVideoPort)(hDirectDraw,puCreateVPortData)); }
DWORD APIENTRY NtGdiDvpDestroyVideoPort( IN HANDLE hVideoPort, IN OUT PDD_DESTROYVPORTDATA puDestroyVPortData) { return (CALL_DXFUNC(DvpDestroyVideoPort)(hVideoPort,puDestroyVPortData)); }
DWORD APIENTRY NtGdiDvpFlipVideoPort( IN HANDLE hVideoPort, IN HANDLE hDDSurfaceCurrent, IN HANDLE hDDSurfaceTarget, IN OUT PDD_FLIPVPORTDATA puFlipVPortData) { return (CALL_DXFUNC(DvpFlipVideoPort)(hVideoPort,hDDSurfaceCurrent, hDDSurfaceTarget,puFlipVPortData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortBandwidth( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTBANDWIDTHDATA puGetVPortBandwidthData) { return (CALL_DXFUNC(DvpGetVideoPortBandwidth)(hVideoPort,puGetVPortBandwidthData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortField( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTFIELDDATA puGetVPortFieldData) { return (CALL_DXFUNC(DvpGetVideoPortField)(hVideoPort,puGetVPortFieldData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortFlipStatus( IN HANDLE hDirectDraw, IN OUT PDD_GETVPORTFLIPSTATUSDATA puGetVPortFlipStatusData) { return (CALL_DXFUNC(DvpGetVideoPortFlipStatus)(hDirectDraw,puGetVPortFlipStatusData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortInputFormats( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTINPUTFORMATDATA puGetVPortInputFormatData) { return (CALL_DXFUNC(DvpGetVideoPortInputFormats)(hVideoPort,puGetVPortInputFormatData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortLine( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTLINEDATA puGetVPortLineData) { return (CALL_DXFUNC(DvpGetVideoPortLine)(hVideoPort,puGetVPortLineData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortOutputFormats( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTOUTPUTFORMATDATA puGetVPortOutputFormatData) { return (CALL_DXFUNC(DvpGetVideoPortOutputFormats)(hVideoPort,puGetVPortOutputFormatData)); }
DWORD APIENTRY NtGdiDvpGetVideoPortConnectInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETVPORTCONNECTDATA puGetVPortConnectData) { return (CALL_DXFUNC(DvpGetVideoPortConnectInfo)(hDirectDraw,puGetVPortConnectData)); }
DWORD APIENTRY NtGdiDvpGetVideoSignalStatus( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTSIGNALDATA puGetVPortSignalData) { return (CALL_DXFUNC(DvpGetVideoSignalStatus)(hVideoPort,puGetVPortSignalData)); }
DWORD APIENTRY NtGdiDvpUpdateVideoPort( IN HANDLE hVideoPort, IN HANDLE* phSurfaceVideo, IN HANDLE* phSurfaceVbi, IN OUT PDD_UPDATEVPORTDATA puUpdateVPortData) { return (CALL_DXFUNC(DvpUpdateVideoPort)(hVideoPort,phSurfaceVideo,phSurfaceVbi,puUpdateVPortData)); }
DWORD APIENTRY NtGdiDvpWaitForVideoPortSync( IN HANDLE hVideoPort, IN OUT PDD_WAITFORVPORTSYNCDATA puWaitForVPortSyncData) { return (CALL_DXFUNC(DvpWaitForVideoPortSync)(hVideoPort,puWaitForVPortSyncData)); }
DWORD APIENTRY NtGdiDvpAcquireNotification( IN HANDLE hVideoPort, IN OUT HANDLE* phEvent, IN LPDDVIDEOPORTNOTIFY pNotify) { return (CALL_DXFUNC(DvpAcquireNotification)(hVideoPort,phEvent,pNotify)); }
DWORD APIENTRY NtGdiDvpReleaseNotification( IN HANDLE hVideoPort, IN HANDLE hEvent) { return (CALL_DXFUNC(DvpReleaseNotification)(hVideoPort,hEvent)); }
FLATPTR WINAPI HeapVidMemAllocAligned( LPVIDMEM lpVidMem, DWORD dwWidth, DWORD dwHeight, LPSURFACEALIGNMENT lpAlignment , LPLONG lpNewPitch ) { return (CALL_DXFUNC(DdHeapVidMemAllocAligned)(lpVidMem,dwWidth,dwHeight,lpAlignment,lpNewPitch)); }
VOID WINAPI VidMemFree( LPVMEMHEAP pvmh, FLATPTR ptr ) { CALL_DXFUNC(DdHeapVidMemFree)(pvmh,ptr); }
PVOID APIENTRY EngAllocPrivateUserMem( PDD_SURFACE_LOCAL pSurfaceLocal, SIZE_T cj, ULONG tag ) { return (CALL_DXFUNC(DdAllocPrivateUserMem)(pSurfaceLocal,cj,tag)); }
VOID APIENTRY EngFreePrivateUserMem( PDD_SURFACE_LOCAL pSurfaceLocal, PVOID pv ) { CALL_DXFUNC(DdFreePrivateUserMem)(pSurfaceLocal,pv); }
HRESULT APIENTRY EngDxIoctl( ULONG ulIoctl, PVOID pBuffer, ULONG ulBufferSize ) { return (CALL_DXFUNC(DdIoctl)(ulIoctl,pBuffer,ulBufferSize)); }
PDD_SURFACE_LOCAL APIENTRY EngLockDirectDrawSurface(HANDLE hSurface) { return (CALL_DXFUNC(DdLockDirectDrawSurface)(hSurface)); }
BOOL APIENTRY EngUnlockDirectDrawSurface(PDD_SURFACE_LOCAL pSurface) { return (CALL_DXFUNC(DdUnlockDirectDrawSurface)(pSurface)); }
VOID APIENTRY GreSuspendDirectDraw( HDEV hdev, BOOL bChildren ) { CALL_DXFUNC(DdSuspendDirectDraw)(hdev,(bChildren ? DXG_SR_DDRAW_CHILDREN : 0)); }
VOID APIENTRY GreSuspendDirectDrawEx( HDEV hdev, ULONG fl ) { CALL_DXFUNC(DdSuspendDirectDraw)(hdev,fl); }
VOID APIENTRY GreResumeDirectDraw( HDEV hdev, BOOL bChildren ) { CALL_DXFUNC(DdResumeDirectDraw)(hdev,(bChildren ? DXG_SR_DDRAW_CHILDREN : 0)); }
VOID APIENTRY GreResumeDirectDrawEx( HDEV hdev, ULONG fl ) { CALL_DXFUNC(DdResumeDirectDraw)(hdev,fl); }
BOOL APIENTRY GreGetDirectDrawBounds( HDEV hdev, RECT* prcBounds ) { return (CALL_DXFUNC(DdGetDirectDrawBounds)(hdev,prcBounds)); }
BOOL APIENTRY GreEnableDirectDrawRedirection( HDEV hdev, BOOL bEnable ) { return (CALL_DXFUNC(DdEnableDirectDrawRedirection)(hdev,bEnable)); }
BOOL DxDdEnableDirectDraw( HDEV hdev, BOOL bEnableDriver ) { return (CALL_DXFUNC(DdEnableDirectDraw)(hdev,bEnableDriver)); }
VOID DxDdDisableDirectDraw( HDEV hdev, BOOL bDisableDriver ) { CALL_DXFUNC(DdDisableDirectDraw)(hdev,bDisableDriver); }
VOID DxDdDynamicModeChange( HDEV hdevOld, HDEV hdevNew, ULONG fl ) { CALL_DXFUNC(DdDynamicModeChange)(hdevOld,hdevNew,fl); }
VOID DxDdCloseProcess(W32PID W32Pid) { //
// This function can be called at clean up even
// if dxg.sys hasn't been initialized. so before
// call dxg.sys, make sure it has been initialized
// or not.
//
if (ghDxGraphics && gpDxFuncs) { CALL_DXFUNC(DdCloseProcess)(W32Pid); } }
VOID DxDdSetAccelLevel(HDEV hdev, DWORD dwAccelLevel, DWORD dwOverride) { CALL_DXFUNC(DdSetAccelLevel)(hdev,dwAccelLevel,dwOverride); }
DWORD DxDdGetSurfaceLock(HDEV hdev) { return (CALL_DXFUNC(DdGetSurfaceLock)(hdev)); }
PVOID DxDdEnumLockedSurfaceRect(HDEV hdev, PVOID pvSurf, RECTL *prcl) { return (CALL_DXFUNC(DdEnumLockedSurfaceRect)(hdev,pvSurf,prcl)); }
|