drivers\bus\isapnp\isapnp.sys 2
drivers\bus\pci\pci.sys 2
++\drivers\directx\dxapi\dxapi.sys 2
++drivers\directx\dxeng\dxeng.sys 2
++drivers\directx\dxg\dxg.sys 2
++
drivers\filesystems\fs_rec\fs_rec.sys 2
drivers\filesystems\msfs\msfs.sys 2
drivers\filesystems\mup\mup.sys 2
--- /dev/null
-
-
+
+
+
+ /* DDK/NDK/SDK Headers */
+ /* DDK/NDK/SDK Headers */
+ #include <ddk/ntddk.h>
+ #include <ddk/ntddmou.h>
+ #include <ddk/ntifs.h>
+ #include <ddk/tvout.h>
+ #include <ndk/ntndk.h>
+
+ #include <stdarg.h>
+ #include <windef.h>
+ #include <winerror.h>
+ #include <wingdi.h>
+ #include <winddi.h>
+ #include <winuser.h>
+ #include <prntfont.h>
+ #include <dde.h>
+ #include <wincon.h>
+
+ #include <ddk/ddkmapi.h>
+
+ /* Prototypes */
+ VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer);
+ VOID DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+ VOID DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer);
+
+ /* Internal driver table being use as looking up table for correct size of structs */
+ DWORD tblCheckInBuffer [] =
+ {
+ /* DD_DXAPI_GETVERSIONNUMBER */
+ 0,
+ /* DD_DXAPI_CLOSEHANDLE */
+ sizeof(DDCLOSEHANDLE),
+ 0, // DD_DXAPI_OPENDIRECTDRAW
+ 0, // DD_DXAPI_OPENSURFACE
+ 0, // DD_DXAPI_OPENVIDEOPORT
+ /* DD_DXAPI_GETKERNELCAPS */
+ sizeof(HANDLE),
+ /* DD_DXAPI_GET_VP_FIELD_NUMBER */
+ sizeof(DDGETFIELDNUMIN),
+ 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
+ 0, // DD_DXAPI_SET_VP_SKIP_FIELD
+ 0, // DD_DXAPI_GET_SURFACE_STATE
+ 0, // DD_DXAPI_SET_SURFACE_STATE
+ 0, // DD_DXAPI_LOCK
+ /* DD_DXAPI_FLIP_OVERLAY */
+ sizeof(DDFLIPOVERLAY),
+ /* DD_DXAPI_FLIP_VP */
+ sizeof(DDFLIPVIDEOPORT),
+ /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
+ sizeof(DDGETAUTOFLIPIN),
+ /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
+ sizeof(DDGETAUTOFLIPIN),
+ /* DD_DXAPI_REGISTER_CALLBACK */
+ sizeof(DDREGISTERCALLBACK),
+ /* DD_DXAPI_UNREGISTER_CALLBACK */
+ sizeof(DDREGISTERCALLBACK),
+ /* DD_DXAPI_GET_POLARITY */
+ sizeof(DDGETPOLARITYIN),
+ /* DD_DXAPI_OPENVPCAPTUREDEVICE */
+ sizeof(DDOPENVPCAPTUREDEVICEIN),
+ /* DD_DXAPI_ADDVPCAPTUREBUFFER */
+ sizeof(DDADDVPCAPTUREBUFF),
+ /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
+ sizeof(HANDLE)
+ };
+
+ DWORD tblCheckOutBuffer [] =
+ {
+ /* DD_DXAPI_GETVERSIONNUMBER */
+ sizeof(DDGETVERSIONNUMBER),
+ /* DD_DXAPI_CLOSEHANDLE */
+ sizeof(DWORD),
+ 0, // DD_DXAPI_OPENDIRECTDRAW
+ 0, // DD_DXAPI_OPENSURFACE
+ 0, // DD_DXAPI_OPENVIDEOPORT
+ /* DD_DXAPI_GETKERNELCAPS */
+ sizeof(DDGETKERNELCAPSOUT),
+ /* DD_DXAPI_GET_VP_FIELD_NUMBER */
+ sizeof(DDGETFIELDNUMOUT),
+ 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
+ 0, // DD_DXAPI_SET_VP_SKIP_FIELD
+ 0, // DD_DXAPI_GET_SURFACE_STATE
+ 0, // DD_DXAPI_SET_SURFACE_STATE
+ 0, // DD_DXAPI_LOCK
+ /* DD_DXAPI_FLIP_OVERLAY */
+ sizeof(DWORD),
+ /* DD_DXAPI_FLIP_VP */
+ sizeof(DWORD),
+ /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
+ sizeof(DDGETAUTOFLIPOUT),
+ /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
+ sizeof(DDGETAUTOFLIPOUT),
+ /* DD_DXAPI_REGISTER_CALLBACK */
+ sizeof(DWORD),
+ /* DD_DXAPI_UNREGISTER_CALLBACK */
+ sizeof(DWORD),
+ /* DD_DXAPI_GET_POLARITY */
+ sizeof(DDGETPOLARITYOUT),
+ /* DD_DXAPI_OPENVPCAPTUREDEVICE */
+ sizeof(DDOPENVPCAPTUREDEVICEOUT),
+ /* DD_DXAPI_ADDVPCAPTUREBUFFER */
+ sizeof(DWORD),
+ /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
+ sizeof(DWORD)
+ };
+
+
+ /* Internal driver function */
+ DRVFN gDxApiEntryPoint [] =
+ {
+ {DD_DXAPI_GETVERSIONNUMBER - DD_FIRST_DXAPI, (PFN) DxGetVersionNumber},
+ {DD_DXAPI_CLOSEHANDLE - DD_FIRST_DXAPI, (PFN) DxCloseHandle},
+ {DD_DXAPI_OPENDIRECTDRAW - DD_FIRST_DXAPI, (PFN) DxOpenDirectDraw},
+ {DD_DXAPI_OPENSURFACE - DD_FIRST_DXAPI, (PFN) DxOpenSurface},
+ {DD_DXAPI_OPENVIDEOPORT - DD_FIRST_DXAPI, (PFN) DxOpenVideoPort},
+ {DD_DXAPI_GETKERNELCAPS - DD_FIRST_DXAPI, (PFN) DxGetKernelCaps},
+ {DD_DXAPI_GET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxGetFieldNumber},
+ {DD_DXAPI_SET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxSetFieldNumber},
+ {DD_DXAPI_SET_VP_SKIP_FIELD - DD_FIRST_DXAPI, (PFN) DxSetSkipPattern},
+ {DD_DXAPI_GET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxGetSurfaceState},
+ {DD_DXAPI_SET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxSetSurfaceState},
+ {DD_DXAPI_LOCK - DD_FIRST_DXAPI, (PFN) DxLock},
+ {DD_DXAPI_FLIP_OVERLAY - DD_FIRST_DXAPI, (PFN) DxFlipOverlay},
+ {DD_DXAPI_FLIP_VP - DD_FIRST_DXAPI, (PFN) DxFlipVideoPort},
+ {DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetCurrentAutoflip},
+ {DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetPreviousAutoflip},
+ {DD_DXAPI_REGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxRegisterEvent},
+ {DD_DXAPI_UNREGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxUnregisterEvent},
+ {DD_DXAPI_GET_POLARITY - DD_FIRST_DXAPI, (PFN) DxGetPolarity},
+ {DD_DXAPI_OPENVPCAPTUREDEVICE - DD_FIRST_DXAPI, (PFN) DxOpenVpCatureDevice},
+ {DD_DXAPI_ADDVPCAPTUREBUFFER - DD_FIRST_DXAPI, (PFN) DxAddVpCaptureBuffer},
+ {DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI, (PFN) DxFlushVpCaptureBuffs}
+ };
+
+
+
--- /dev/null
-DxApi(ULONG dwFunctionNum,
- PVOID lpvInBuffer,
- ULONG cbInBuffer,
- PVOID lpvOutBuffer,
- ULONG cbOutBuffer)
+
+ /*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS kernel
+ * PURPOSE: Native driver for dxg implementation
+ * FILE: drivers/directx/dxg/main.c
+ * PROGRAMER: Magnus olsen (magnus@greatlord.com)
+ * REVISION HISTORY:
+ * 15/10-2007 Magnus Olsen
+ */
+
+
+ #include "dxapi_driver.h"
+
+ NTSTATUS
+ DriverEntry(IN PVOID Context1,
+ IN PVOID Context2)
+ {
+ /*
+ * NOTE this driver will never be load, it only contain export list
+ * to win32k eng functions
+ */
+ return STATUS_SUCCESS;
+ }
+
+ NTSTATUS
+ GsDriverEntry(IN PVOID Context1,
+ IN PVOID Context2)
+ {
+ return DriverEntry(Context1, Context2);
+ }
+
+
+
+ /*++
+ * @name DxApiGetVersion
+ * @implemented
+ *
+ * The function DxApiGetVersion return the dsound version, and it always return 4.02
+ *
+ * @return
+ * Always return 4.02
+ *
+ * @remarks.
+ * none
+ *
+ *--*/
+ ULONG
+ DxApiGetVersion()
+ {
+ /* MSDN say this always return Direct Sound version 4.02 */
+ return 0x402;
+ }
+
+
+
+ /*++
+ * @name DxApi
+ * @implemented
+ *
+ * The function DxApi calls to diffent functions, follow functions
+ * are supported
+ * DxGetVersionNumber, DxCloseHandle, DxOpenDirectDraw, DxOpenSurface,
+ * DxOpenVideoPort, DxGetKernelCaps, DxGetFieldNumber, DxSetFieldNumber,
+ * DxSetSkipPattern, DxGetSurfaceState, DxSetSurfaceState, DxLock,
+ * DxFlipOverlay, DxFlipVideoPort, DxGetCurrentAutoflip, DxGetPreviousAutoflip,
+ * DxRegisterEvent, DxUnregisterEvent, DxGetPolarity, DxOpenVpCatureDevice,
+ * DxAddVpCaptureBuffer, DxFlushVpCaptureBuffs
+ *
+ * See ddkmapi.h as well
+
+ *
+ * @param ULONG dwFunctionNum
+ * The function id we want call on in the dxapi.sys see ddkmapi.h for the id
+ *
+ * @param PVOID lpvInBuffer
+ * Our input buffer to the functions we call to, This param can be NULL
+ *
+ * @param ULONG cbInBuffer
+ * Our size in bytes of the input buffer, rember wrong size will result in the function
+ * does not being call.
+ *
+ * @param PVOID lpvOutBuffer
+ * Our Output buffer, there the function fill in the info, this param can not
+ * be null. if it null the functions we trying call on will not be call
+ *
+ * @param ULONG cbOutBuffer
+ * Our size in bytes of the output buffer, rember wrong size will result in the function
+ * does not being call.
+ *
+ * @return
+ * Return Always 0.
+ *
+ * @remarks.
+ * before call to any of this functions, do not forget set lpvOutBuffer->ddRVal = DDERR_GEN*,
+ * if that member exists in the outbuffer ;
+ *
+ *--*/
++
++DXAPI
+ DWORD
++DxApi(IN DWORD dwFunctionNum,
++ IN LPVOID lpvInBuffer,
++ IN DWORD cbInBuffer,
++ OUT LPVOID lpvOutBuffer,
++ OUT DWORD cbOutBuffer)
+ {
+
+ dwFunctionNum -= DD_FIRST_DXAPI;
+
+ if ((lpvOutBuffer == NULL) ||
+ (dwFunctionNum < (DD_FIRST_DXAPI - DD_FIRST_DXAPI)) ||
+ (dwFunctionNum > (DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI)) ||
+ (gDxApiEntryPoint[dwFunctionNum].pfn == NULL) ||
+ (cbInBuffer != tblCheckInBuffer[dwFunctionNum]) ||
+ (cbOutBuffer != tblCheckOutBuffer[dwFunctionNum]))
+
+ {
+ return 0;
+ }
+
+ gDxApiEntryPoint[dwFunctionNum].pfn(lpvInBuffer, lpvOutBuffer);
+ return 0;
+ }
+
+ /*++
+ * @name DxGetVersionNumber
+ * @implemented
+ *
+ * The function DxGetVersionNumber return dxapi interface version, that is 1.0
+ *
+ * @return
+ * Always return 1.0
+ *
+ * @remarks.
+ * none
+ *
+ *--*/
+ VOID
+ DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer)
+ {
+ lpvOutBuffer->ddRVal = DD_OK;
+ lpvOutBuffer->dwMajorVersion = 1;
+ lpvOutBuffer->dwMinorVersion = 0;
+ }
+
+ VOID
+ DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+ VOID
+ DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer)
+ {
+ /* FIXME Unimplement */
+ }
+
+
+
--- /dev/null
- (drv_func->pfn == 0))
+
+ /*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS kernel
+ * PURPOSE: Native driver for dxg implementation
+ * FILE: drivers/directx/dxg/main.c
+ * PROGRAMER: Magnus olsen (magnus@greatlord.com)
+ * REVISION HISTORY:
+ * 15/10-2007 Magnus Olsen
+ */
+
+
+ #include <dxg_int.h>
+ #include "dxg_driver.h"
+
+ ULONG gcMaxDdHmgr = 0;
+ ULONG gcSizeDdHmgr = 0;
+ LONG gcDummyPageRefCnt = 0;
+ HSEMAPHORE ghsemHmgr = NULL;
+ HSEMAPHORE ghsemDummyPage = NULL;
+ VOID *gpDummyPage = NULL;
+ PEPROCESS gpepSession = NULL;
+ PLARGE_INTEGER gpLockShortDelay = NULL;
+ HANDLE ghFreeDdHmgr = 0;
+ VOID *gpentDdHmgr = NULL;
+ VOID *gpentDdHmgrLast = NULL;
+
+
+ PDRVFN gpEngFuncs;
+ const ULONG gcDxgFuncs = DXG_INDEX_DxDdIoctl + 1;
+
+
+
+ NTSTATUS
+ DriverEntry(IN PVOID Context1,
+ IN PVOID Context2)
+ {
+ return 0;
+ }
+
+ NTSTATUS
+ APIENTRY
+ DxDdStartupDxGraphics (ULONG SizeEngDrv,
+ PDRVENABLEDATA pDxEngDrv,
+ ULONG SizeDxgDrv,
+ PDRVENABLEDATA pDxgDrv,
+ PULONG DirectDrawContext,
+ PEPROCESS Proc )
+ {
+
+ PDRVFN drv_func;
+ INT i;
+
+ /* Test see if the data is vaild we got from win32k.sys */
+ if ((SizeEngDrv != sizeof(DRVENABLEDATA)) ||
+ (SizeDxgDrv != sizeof(DRVENABLEDATA)))
+ {
+ return STATUS_BUFFER_TOO_SMALL;
+ }
+
+ /* rest static value */
+ gpDummyPage = NULL;
+ gcDummyPageRefCnt = 0;
+ ghsemDummyPage = NULL;
+
+ /*
+ * Setup internal driver functions list we got from dxg driver functions list
+ */
+ pDxgDrv->iDriverVersion = 0x80000; /* Note 12/1-2004 : DirectX 8 ? */
+ pDxgDrv->c = gcDxgFuncs;
+ pDxgDrv->pdrvfn = gaDxgFuncs;
+
+ /* check how many driver functions and fail if the value does not match */
+ if (pDxEngDrv->c != DXENG_INDEX_DxEngLoadImage + 1)
+ {
+ return STATUS_INTERNAL_ERROR;
+ }
+
+ /*
+ * Check if all drv functions are sorted right
+ * and if it really are exported
+ */
+
+ for (i=1 ; i < DXENG_INDEX_DxEngLoadImage + 1; i++)
+ {
+ drv_func = &pDxEngDrv->pdrvfn[i];
+
+ if ((drv_func->iFunc != i) ||
++ (drv_func->pfn == NULL))
+ {
+ return STATUS_INTERNAL_ERROR;
+ }
+ }
+
+ gpEngFuncs = pDxEngDrv->pdrvfn;
+
+ /* Note 12/1-2004 : Why is this set to 0x618 */
+ *DirectDrawContext = 0x618;
+
+ if (DdHmgCreate())
+ {
+ ghsemDummyPage = EngCreateSemaphore();
+
+ if (ghsemDummyPage)
+ {
+ gpepSession = Proc;
+ return STATUS_SUCCESS;
+ }
+ }
+
+ DdHmgDestroy();
+
+ if (ghsemDummyPage)
+ {
+ EngDeleteSemaphore(ghsemDummyPage);
+ ghsemDummyPage = 0;
+ }
+
+ return STATUS_NO_MEMORY;
+ }
+
+ NTSTATUS
+ DxDdCleanupDxGraphics()
+ {
+ DdHmgDestroy();
+
+ if (!ghsemDummyPage)
+ {
+ if (!gpDummyPage)
+ {
+ ExFreePoolWithTag(gpDummyPage,0);
+ gpDummyPage = NULL;
+ gcDummyPageRefCnt = 0;
+ }
+ EngDeleteSemaphore(ghsemDummyPage);
+ }
+
+ return 0;
+ }
+
+ BOOL
+ DdHmgDestroy()
+ {
+ gcMaxDdHmgr = 0;
+ gcSizeDdHmgr = 0;
+ ghFreeDdHmgr = 0;
+ gpentDdHmgrLast = NULL;
+
+ if (gpentDdHmgr)
+ {
+ EngFreeMem(gpentDdHmgr);
+ gpentDdHmgr = NULL;
+ }
+
+ if (ghsemHmgr)
+ {
+ EngDeleteSemaphore(ghsemHmgr);
+ ghsemHmgr = NULL;
+ }
+
+ return TRUE;
+ }
+
+
+ BOOL
+ DdHmgCreate()
+ {
+ gpentDdHmgr = EngAllocMem(FL_ZERO_MEMORY, gcSizeDdHmgr, TAG_THDD);
+ ghFreeDdHmgr = 0;
+ gcMaxDdHmgr = 1;
+
+ if (gpentDdHmgr)
+ {
+ ghsemHmgr = EngCreateSemaphore();
+
+ if (ghsemHmgr)
+ {
+ gpLockShortDelay = EngAllocMem(FL_ZERO_MEMORY | FL_NONPAGED_MEMORY, sizeof(LARGE_INTEGER), TAG_GINI);
+
+ if (gpLockShortDelay)
+ {
+ gpLockShortDelay->QuadPart = ((LONGLONG)-100000);
+ return TRUE;
+ }
+
+ EngDeleteSemaphore(ghsemHmgr);
+ ghsemHmgr = NULL;
+ }
+
+ EngFreeMem(gpentDdHmgr);
+ gpentDdHmgr = NULL;
+ }
+
+ return FALSE;
+ }
*
* DirectDraw support for DxApi function
*
-- * This file is part of the w32api package.
-- *
* Contributors:
-- * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
++ * Created by Magnus Olsen
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
--- /dev/null
-
-
+
+ /************************************************************************/
+ /* This driver interface are exported from win32k.sys to dxg.sys */
+ /************************************************************************/
+ #define DXENG_INDEX_Resverd0 0x00
+ #define DXENG_INDEX_DxEngNUIsTermSrv 0x01
+ #define DXENG_INDEX_DxEngScreenAccessCheck 0x02
+ #define DXENG_INDEX_DxEngRedrawDesktop 0x03
+ #define DXENG_INDEX_DxEngDispUniq 0x04
+ #define DXENG_INDEX_DxEngIncDispUniq 0x05
+ #define DXENG_INDEX_DxEngVisRgnUniq 0x06
+ #define DXENG_INDEX_DxEngLockShareSem 0x07
+ #define DXENG_INDEX_DxEngUnlockShareSem 0x08
+ #define DXENG_INDEX_DxEngEnumerateHdev 0x09
+ #define DXENG_INDEX_DxEngLockHdev 0x0A
+ #define DXENG_INDEX_DxEngUnlockHdev 0x0B
+ #define DXENG_INDEX_DxEngIsHdevLockedByCurrentThread 0x0C
+ #define DXENG_INDEX_DxEngReferenceHdev 0x0D
+ #define DXENG_INDEX_DxEngUnreferenceHdev 0x0E
+ #define DXENG_INDEX_DxEngGetDeviceGammaRamp 0x0F
+ #define DXENG_INDEX_DxEngSetDeviceGammaRamp 0x10
+ #define DXENG_INDEX_DxEngSpTearDownSprites 0x11
+ #define DXENG_INDEX_DxEngSpUnTearDownSprites 0x12
+ #define DXENG_INDEX_DxEngSpSpritesVisible 0x13
+ #define DXENG_INDEX_DxEngGetHdevData 0x14
+ #define DXENG_INDEX_DxEngSetHdevData 0x15
+ #define DXENG_INDEX_DxEngCreateMemoryDC 0x16
+ #define DXENG_INDEX_DxEngGetDesktopDC 0x17
+ #define DXENG_INDEX_DxEngDeleteDC 0x18
+ #define DXENG_INDEX_DxEngCleanDC 0x19
+ #define DXENG_INDEX_DxEngSetDCOwner 0x1A
+ #define DXENG_INDEX_DxEngLockDC 0x1B
+ #define DXENG_INDEX_DxEngUnlockDC 0x1C
+ #define DXENG_INDEX_DxEngSetDCState 0x1D
+ #define DXENG_INDEX_DxEngGetDCState 0x1E
+ #define DXENG_INDEX_DxEngSelectBitmap 0x1F
+ #define DXENG_INDEX_DxEngSetBitmapOwner 0x20
+ #define DXENG_INDEX_DxEngDeleteSurface 0x21
+ #define DXENG_INDEX_DxEngGetSurfaceData 0x22
+ #define DXENG_INDEX_DxEngAltLockSurface 0x23
+ #define DXENG_INDEX_DxEngUploadPaletteEntryToSurface 0x24
+ #define DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw 0x25
+ #define DXENG_INDEX_DxEngSelectPaletteToSurface 0x26
+ #define DXENG_INDEX_DxEngSyncPaletteTableWithDevice 0x27
+ #define DXENG_INDEX_DxEngSetPaletteState 0x28
+ #define DXENG_INDEX_DxEngGetRedirectionBitmap 0x29
+ #define DXENG_INDEX_DxEngLoadImage 0x2A
+
+ /************************************************************************/
+ /* win32k.sys internal protypes for the driver functions it export */
+ /************************************************************************/
+
+ /* Notes : Check see if termal server got a connections or not */
+ BOOL DxEngNUIsTermSrv();
+
+ /* Notes : it always return TRUE, and it update whole the screen (redaw current desktop) */
+ BOOL DxEngRedrawDesktop();
+
+ /* Notes : return the DisplayUniqVisrgn counter from gdishare memory */
+ ULONG DxEngDispUniq();
+
+ /* Notes : return the VisRgnUniq counter for win32k */
+ ULONG DxEngVisRgnUniq();
+
+ /* Notes : Enumate all drivers in win32k */
+ HDEV *DxEngEnumerateHdev(HDEV *hdev);
+
+ /* Notes : same protypes NtGdiEngGetDeviceGammaRamp, diffent is we skipp the user mode checks and seh */
+ BOOL
+ DxEngGetDeviceGammaRamp(HDC hDC, LPVOID lpRamp);
+
+ /* Notes : Lock the hDC */
+ PDC DxEngLockDC(HDC hDC);
+
+ /* Notes : Unlock the hDC */
+ BOOL DxEngUnlockDC(PDC pDC);
+
+
+
+ /* prototypes are not done yet, I need gather all my notes
+ * to make them correct
+ */
-
-/******************************************************/
-/* DxEngGetHdevData define value for the Index param */
-/* This value are not document in msdn or ddk, they */
-/* optain with blackbox win32k and reading the BOOK */
-/* "Windows Graphics Programming Win32 Gdi And */
-/* Directdraw of Feng Yuan" and use you head */
-/******************************************************/
-
-/* Unknown */
-#define HDEVGETDATA_UNK_54C_8 0
-
-/* resverd in msdn for internal use in win32k */
-#define HDEVGETDATA_DWRESERVED19 1
-
-#define HDEVGETDATA_PALETTECALLBACKS_DWFLAGS 2
-
-/* resverd in msdn for internal use in win32k */
-#define HDEVGETDATA_DWRESERVED24 3
-
-/* Unknown */
-#define HDEVGETDATA_UNK_54C_20 4
-
-#define DEVGETDATA_PALETTECALLBACKS_DWSIZE 5
-
-/* Unknown */
-#define HDEVGETDATA_UNK_70C 6
-
-/* Get the DD_SURFACECALLBACKS dwFlag member value */
-#define HDEVGETDATA_SURFACECALLBACK_DWFLAGS 7
-
-/* Unknown */
-#define HDEVGETDATA_UNK_588 8
-
-/* Unknown */
-#define HDEVGETDATA_UNK_01C_F400 9
-
-/* Unknown */
-#define HDEVGETDATA_UNK_01C_F20000 10
-
-/* Get if the driver is refens or not */
-#define HDEVGETDATA_CDRIVERREF 16
-
-/* Get the Set palette functions */
-#define HDEVGETDATA_PFN_SETPALETTE 18
-
-
-
-
-
-
-
-
-
-
-
+ DWORD DxEngCreateMemoryDC(DWORD x1);
+ DWORD DxEngScreenAccessCheck();
+ DWORD DxEngLockShareSem();
+ DWORD DxEngUnlockShareSem();
+ DWORD DxEngLockHdev(DWORD x1);
+ DWORD DxEngUnlockHdev(DWORD x1);
+ DWORD DxEngReferenceHdev(DWORD x1);
+ DWORD DxEngIsHdevLockedByCurrentThread(DWORD x1);
+ DWORD DxEngUnreferenceHdev(DWORD x1);
+ DWORD DxEngSetDeviceGammaRamp(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngSpTearDownSprites(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngSpUnTearDownSprites(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngSpSpritesVisible(DWORD x1);
+ DWORD DxEngGetHdevData(PEDD_DIRECTDRAW_GLOBAL pEDDgpl, DWORD Index);
+ DWORD DxEngSetHdevData(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngGetDesktopDC(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngDeleteDC(DWORD x1, DWORD x2);
+ DWORD DxEngCleanDC(DWORD x1);
+ DWORD DxEngSetDCOwner(DWORD x1, DWORD x2);
+ DWORD DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngGetDCState(HDC hDC, DWORD type);
+ DWORD DxEngSelectBitmap(DWORD x1, DWORD x2);
+ DWORD DxEngSetBitmapOwner(DWORD x1, DWORD x2);
+ DWORD DxEngDeleteSurface(DWORD x1);
+ DWORD DxEngGetSurfaceData(DWORD x1, DWORD x2);
+ DWORD DxEngAltLockSurface(DWORD x1);
+ DWORD DxEngUploadPaletteEntryToSurface(DWORD x1, DWORD x2,DWORD x3, DWORD x4);
+ DWORD DxEngMarkSurfaceAsDirectDraw(DWORD x1, DWORD x2);
+ DWORD DxEngSelectPaletteToSurface(DWORD x1, DWORD x2);
+ DWORD DxEngSyncPaletteTableWithDevice(DWORD x1, DWORD x2);
+ DWORD DxEngSetPaletteState(DWORD x1, DWORD x2, DWORD x3);
+ DWORD DxEngGetRedirectionBitmap(DWORD x1);
+ DWORD DxEngLoadImage(DWORD x1,DWORD x2);
+ DWORD DxEngIncDispUniq();
+
RGNATTR VisRectRegion;\r
} DC_ATTR, *PDC_ATTR;\r
\r
- HGDIOBJ hHmgr;\r
+typedef struct _BRUSH_ATTR\r
+{\r
+ LOGBRUSH logbrush;\r
+ DWORD dwUnused[3];\r
+} BRUSH_ATTR, *PBRUSH_ATTR;\r
+\r
++\r
+typedef struct _REGION_ATTR\r
+{\r
+ DWORD dwUnknown1; \r
+ DWORD dwUnknown2; \r
+ LONG right; \r
+ LONG bottom;\r
+ LONG left; \r
+ LONG top; \r
+} REGION_ATTR, *PREGION_ATTR;\r
+\r
+typedef struct _FONT_ATTR\r
+{\r
+ DWORD dwUnknown;\r
+ void *pCharWidthData;\r
+} FONT_ATTR, *PFONT_ATTR;\r
+\r
++\r
+ typedef enum tagGdiPathState\r
+ {\r
+ PATH_Null,\r
+ PATH_Open,\r
+ PATH_Closed\r
+ } GdiPathState;\r
+ \r
+ typedef struct tagGdiPath\r
+ {\r
+ GdiPathState state;\r
+ POINT *pPoints;\r
+ BYTE *pFlags;\r
+ int numEntriesUsed, numEntriesAllocated;\r
+ BOOL newStroke;\r
+ } GdiPath;\r
+ \r
+ typedef struct _WIN_DC_INFO\r
+ {\r
+ int flags;\r
+ HRGN hClipRgn; /* Clip region (may be 0) */\r
+ HRGN hVisRgn; /* Visible region (must never be 0) */\r
+ HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */\r
+ HBITMAP hBitmap;\r
+ HBITMAP hFirstBitmap; /* Bitmap selected at creation of the DC */\r
+ \r
+ /* #if 0 */\r
+ HANDLE hDevice;\r
+ HPALETTE hPalette;\r
+ \r
+ GdiPath path;\r
+ /* #endif */\r
+ \r
+ RECT totalExtent;\r
+ BYTE bitsPerPixel;\r
+ \r
+ INT DCOrgX; /* DC origin */\r
+ INT DCOrgY;\r
+ INT ArcDirection;\r
+ \r
+ XFORM xformWorld2Wnd; /* World-to-window transformation */\r
+ XFORM xformWorld2Vport; /* World-to-viewport transformation */\r
+ XFORM xformVport2World; /* Inverse of the above transformation */\r
+ BOOL vport2WorldValid; /* Is xformVport2World valid? */\r
+ } WIN_DC_INFO;\r
+ \r
++\r
+ typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);\r
+ typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, LPWSTR, LPWSTR, HANDLE);\r
+ typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);\r
+ typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV); \r
+ typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);\r
+ typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);\r
+ typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);\r
+ typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);\r
+ typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);\r
+ typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);\r
+ typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG); \r
+ typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF); \r
+ typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);\r
+ typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, ULONG); \r
+ typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG); \r
+ typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, POINTL*, PLINEATTRS, MIX); \r
+ typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX, ULONG); \r
+ typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, PLINEATTRS, BRUSHOBJ*, POINTL*, MIX, ULONG); \r
+ typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX); \r
+ typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*, POINTL*, ROP4); \r
+ typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG);\r
+ typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*); \r
+ typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG);\r
+ typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG, BRUSHOBJ*, DWORD);\r
+ typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG); \r
+ typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*, RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX); \r
+ typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *); \r
+ typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, PVOID *); \r
+ typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG); \r
+ typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG); \r
+ typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*, PVOID, ULONG); \r
+ typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, LONG, LONG, LONG, LONG, RECTL*, ULONG); \r
+ typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*); \r
+ typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG, LONG, RECTL*, MIX);\r
+ typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);\r
+ typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);\r
+ typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);\r
+ typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);\r
+ typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);\r
+ typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);\r
+ typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);\r
+ typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);\r
+ typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);\r
+ typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);\r
+ typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);\r
+ typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);\r
+ typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);\r
+ typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID, ULONG, PVOID);\r
+ typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG, PBYTE);\r
+ typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL, GLYPHDATA*, ULONG, TTPOLYGONHEADER*);\r
+ typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);\r
+ typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);\r
+ typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *, PVOID *, ULONG);\r
+ typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);\r
+ typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG, PPIXELFORMATDESCRIPTOR);\r
+ typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);\r
+ typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);\r
+ typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);\r
+ typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);\r
+ typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);\r
+ typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);\r
+ typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);\r
+ typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);\r
+ typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);\r
+ \r
+ typedef struct _DRIVER_FUNCTIONS\r
+ {\r
+ PGD_ENABLEDRIVER EnableDriver;\r
+ PGD_ENABLEPDEV EnablePDEV;\r
+ PGD_COMPLETEPDEV CompletePDEV;\r
+ PGD_DISABLEPDEV DisablePDEV;\r
+ PGD_ENABLESURFACE EnableSurface;\r
+ PGD_DISABLESURFACE DisableSurface;\r
+ PGD_ASSERTMODE AssertMode;\r
+ PGD_OFFSET Offset;\r
+ PGD_RESETPDEV ResetPDEV;\r
+ PGD_DISABLEDRIVER DisableDriver;\r
+ PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;\r
+ PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;\r
+ PGD_REALIZEBRUSH RealizeBrush;\r
+ PGD_DITHERCOLOR DitherColor;\r
+ PGD_STROKEPATH StrokePath;\r
+ PGD_FILLPATH FillPath;\r
+ PGD_STROKEANDFILLPATH StrokeAndFillPath;\r
+ PGD_PAINT Paint;\r
+ PGD_BITBLT BitBlt;\r
+ PGD_TRANSPARENTBLT TransparentBlt;\r
+ PGD_COPYBITS CopyBits;\r
+ PGD_STRETCHBLT StretchBlt;\r
+ PGD_STRETCHBLTROP StretchBltROP;\r
+ PGD_SETPALETTE SetPalette;\r
+ PGD_TEXTOUT TextOut;\r
+ PGD_ESCAPE Escape;\r
+ PGD_DRAWESCAPE DrawEscape;\r
+ PGD_QUERYFONT QueryFont;\r
+ PGD_QUERYFONTTREE QueryFontTree;\r
+ PGD_QUERYFONTDATA QueryFontData;\r
+ PGD_SETPOINTERSHAPE SetPointerShape;\r
+ PGD_MOVEPOINTER MovePointer;\r
+ PGD_LINETO LineTo;\r
+ PGD_SENDPAGE SendPage;\r
+ PGD_STARTPAGE StartPage;\r
+ PGD_ENDDOC EndDoc;\r
+ PGD_STARTDOC StartDoc;\r
+ PGD_GETGLYPHMODE GetGlyphMode;\r
+ PGD_SYNCHRONIZE Synchronize;\r
+ PGD_SAVESCREENBITS SaveScreenBits;\r
+ PGD_GETMODES GetModes;\r
+ PGD_FREE Free;\r
+ PGD_DESTROYFONT DestroyFont;\r
+ PGD_QUERYFONTCAPS QueryFontCaps;\r
+ PGD_LOADFONTFILE LoadFontFile;\r
+ PGD_UNLOADFONTFILE UnloadFontFile;\r
+ PGD_FONTMANAGEMENT FontManagement;\r
+ PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;\r
+ PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;\r
+ PGD_GETTRUETYPEFILE GetTrueTypeFile;\r
+ PGD_QUERYFONTFILE QueryFontFile;\r
+ PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;\r
+ PGD_SETPIXELFORMAT SetPixelFormat;\r
+ PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;\r
+ PGD_SWAPBUFFERS SwapBuffers;\r
+ PGD_STARTBANDING StartBanding;\r
+ PGD_NEXTBAND NextBand;\r
+ PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;\r
+ PGD_ENABLEDIRECTDRAW EnableDirectDraw;\r
+ PGD_DISABLEDIRECTDRAW DisableDirectDraw;\r
+ PGD_QUERYSPOOLTYPE QuerySpoolType;\r
+ PGD_GRADIENTFILL GradientFill;\r
+ PGD_SYNCHRONIZESURFACE SynchronizeSurface;\r
+ PGD_ALPHABLEND AlphaBlend;\r
+ } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;\r
+ \r
+ typedef struct _DC\r
+ {\r
-\r
- struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl;\r
-\r
++ HGDIOBJ hHmgr; // Handle for this DC object.\r
+ PVOID pvEntry;\r
+ ULONG lucExcLock;\r
+ ULONG Tid;\r
+ \r
+ DHPDEV PDev;\r
+ INT DC_Type;\r
+ INT DC_Flags;\r
- HDC hSelf;\r
+ PDC_ATTR pDc_Attr;\r
+ DC_ATTR Dc_Attr;\r
+ \r
- \r
- HANDLE hFile; \r
++ struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl;\r
++\r
++ HDC hSelf; // Used only for MemoryDC & SaveDC.\r
+ HDC hNext;\r
+ HSURF FillPatternSurfaces[HS_DDI_MAX];\r
+ PGDIINFO GDIInfo;\r
+ PDEVINFO DevInfo;\r
+ HDEV GDIDevice;\r
+ \r
+ DRIVER_FUNCTIONS DriverFunctions;\r
+ UNICODE_STRING DriverName;\r
+ HANDLE DeviceDriver;\r
+ \r
+ CLIPOBJ *CombinedClip;\r
+ \r
+ XLATEOBJ *XlateBrush;\r
+ XLATEOBJ *XlatePen;\r
+ \r
+ INT saveLevel;\r
+ BOOL IsIC;\r
+ \r
+ HPALETTE PalIndexed;\r
+ \r
+ WIN_DC_INFO w;\r
++\r
++ HANDLE hFile;\r
+ LPENHMETAHEADER emh;\r
+ } DC, *PDC;\r
++\r
#endif\r
--- /dev/null
- switch (Index)
- {
- case HDEVGETDATA_UNK_54C_8:
- return (DWORD)pEDDgpl->unk_54c[8];
-
- case HDEVGETDATA_DWRESERVED19:
- return (DWORD)pEDDgpl->d3dNtHalCallbacks.dwReserved19;
-
- case HDEVGETDATA_PALETTECALLBACKS_DWFLAGS:
- return (DWORD)pEDDgpl->ddPaletteCallbacks.dwFlags;
-
- case HDEVGETDATA_DWRESERVED24:
- return (DWORD)pEDDgpl->d3dNtHalCallbacks.dwReserved24;
-
- case HDEVGETDATA_UNK_54C_20:
- return (DWORD)pEDDgpl->unk_54c[20];
-
- case DEVGETDATA_PALETTECALLBACKS_DWSIZE:
- return (DWORD)pEDDgpl->ddPaletteCallbacks.dwSize;
-
- case HDEVGETDATA_UNK_70C:
- return (DWORD)pEDDgpl->unk_70C;
-
- case HDEVGETDATA_SURFACECALLBACK_DWFLAGS:
- return (DWORD)pEDDgpl->ddSurfaceCallbacks.dwFlags;
-
- case HDEVGETDATA_UNK_588:
- return (DWORD)pEDDgpl->unk_54c[15];
-
- case HDEVGETDATA_UNK_01C_F400:
- return (DWORD)pEDDgpl->unk_01c[1] & 0x400;
-
- case HDEVGETDATA_UNK_01C_F20000:
- return (DWORD)pEDDgpl->unk_01c[1] & 0x20000;
-
- case 0x0B:
- return (DWORD)pEDDgpl->unk_01c[1] & 0x1;
-
- case 0x0C:
- return (DWORD)pEDDgpl->unk_01c[0];
-
- case HDEVGETDATA_CDRIVERREF:
- return (DWORD) (pEDDgpl->cDriverReferences) ? TRUE : FALSE ;
-
- case 0x11:
- return (DWORD)pEDDgpl->d3dNtHalCallbacks.dwReserved8 & 0x100;
-
- case HDEVGETDATA_PFN_SETPALETTE:
- return (DWORD)pEDDgpl->ddSurfaceCallbacks.SetPalette;
-
- case 0x13:
- return (DWORD)pEDDgpl->unk_54c[0x0A];
-
- case 0x14:
- return (DWORD)pEDDgpl->unk_01c[1] & 0x80000;
-
- default:
- break;
- }
+ /*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS kernel
+ * PURPOSE: Native driver enumate of dxeng implementation
+ * FILE: subsys/win32k/ntddraw/dxeng.c
+ * PROGRAMER: Magnus olsen (magnus@greatlord.com)
+ * REVISION HISTORY:
+ * 15/10-2007 Magnus Olsen
+ */
+
+ #include <w32k.h>
+ #include <debug.h>
+
+
+
+ ULONG gcEngFuncs = DXENG_INDEX_DxEngLoadImage + 1;
+ DRVFN gaEngFuncs [] =
+ {
+ {0, (PFN) NULL},
+ {DXENG_INDEX_DxEngNUIsTermSrv, (PFN)DxEngNUIsTermSrv},
+ {DXENG_INDEX_DxEngScreenAccessCheck, (PFN)DxEngScreenAccessCheck},
+ {DXENG_INDEX_DxEngRedrawDesktop, (PFN)DxEngRedrawDesktop},
+ {DXENG_INDEX_DxEngDispUniq, (PFN)DxEngDispUniq},
+ {DXENG_INDEX_DxEngIncDispUniq, (PFN)DxEngIncDispUniq},
+ {DXENG_INDEX_DxEngVisRgnUniq, (PFN)DxEngVisRgnUniq},
+ {DXENG_INDEX_DxEngLockShareSem, (PFN)DxEngLockShareSem},
+ {DXENG_INDEX_DxEngUnlockShareSem, (PFN)DxEngUnlockShareSem},
+ {DXENG_INDEX_DxEngEnumerateHdev, (PFN)DxEngEnumerateHdev},
+ {DXENG_INDEX_DxEngLockHdev, (PFN)DxEngLockHdev},
+ {DXENG_INDEX_DxEngUnlockHdev, (PFN)DxEngUnlockHdev},
+ {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread, (PFN)DxEngIsHdevLockedByCurrentThread},
+ {DXENG_INDEX_DxEngReferenceHdev, (PFN)DxEngReferenceHdev},
+ {DXENG_INDEX_DxEngUnreferenceHdev, (PFN)DxEngUnreferenceHdev},
+ {DXENG_INDEX_DxEngGetDeviceGammaRamp, (PFN)DxEngGetDeviceGammaRamp},
+ {DXENG_INDEX_DxEngSetDeviceGammaRamp, (PFN)DxEngSetDeviceGammaRamp},
+ {DXENG_INDEX_DxEngSpTearDownSprites, (PFN)DxEngSpTearDownSprites},
+ {DXENG_INDEX_DxEngSpUnTearDownSprites, (PFN)DxEngSpUnTearDownSprites},
+ {DXENG_INDEX_DxEngSpSpritesVisible, (PFN)DxEngSpSpritesVisible},
+ {DXENG_INDEX_DxEngGetHdevData, (PFN)DxEngGetHdevData},
+ {DXENG_INDEX_DxEngSetHdevData, (PFN)DxEngSetHdevData},
+ {DXENG_INDEX_DxEngCreateMemoryDC, (PFN)DxEngCreateMemoryDC},
+ {DXENG_INDEX_DxEngGetDesktopDC, (PFN)DxEngGetDesktopDC},
+ {DXENG_INDEX_DxEngDeleteDC, (PFN)DxEngDeleteDC},
+ {DXENG_INDEX_DxEngCleanDC, (PFN)DxEngCleanDC},
+ {DXENG_INDEX_DxEngSetDCOwner, (PFN)DxEngSetDCOwner},
+ {DXENG_INDEX_DxEngLockDC, (PFN)DxEngLockDC},
+ {DXENG_INDEX_DxEngUnlockDC, (PFN)DxEngUnlockDC},
+ {DXENG_INDEX_DxEngSetDCState, (PFN)DxEngGetDCState},
+ {DXENG_INDEX_DxEngGetDCState, (PFN)DxEngGetDCState},
+ {DXENG_INDEX_DxEngSelectBitmap, (PFN)DxEngSelectBitmap},
+ {DXENG_INDEX_DxEngSetBitmapOwner, (PFN)DxEngSetBitmapOwner},
+ {DXENG_INDEX_DxEngDeleteSurface, (PFN)DxEngDeleteSurface},
+ {DXENG_INDEX_DxEngGetSurfaceData, (PFN)DxEngGetSurfaceData},
+ {DXENG_INDEX_DxEngAltLockSurface, (PFN)DxEngAltLockSurface},
+ {DXENG_INDEX_DxEngUploadPaletteEntryToSurface, (PFN)DxEngUploadPaletteEntryToSurface},
+ {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw, (PFN)DxEngMarkSurfaceAsDirectDraw},
+ {DXENG_INDEX_DxEngSelectPaletteToSurface, (PFN)DxEngSelectPaletteToSurface},
+ {DXENG_INDEX_DxEngSyncPaletteTableWithDevice, (PFN)DxEngSyncPaletteTableWithDevice},
+ {DXENG_INDEX_DxEngSetPaletteState, (PFN)DxEngSetPaletteState},
+ {DXENG_INDEX_DxEngGetRedirectionBitmap, (PFN)DxEngGetRedirectionBitmap},
+ {DXENG_INDEX_DxEngLoadImage, (PFN)DxEngLoadImage}
+ };
+
+ /************************************************************************/
+ /* DxEngNUIsTermSrv */
+ /************************************************************************/
+
+ /* Notes : Check see if termal server got a connections or not */
+ BOOL
+ DxEngNUIsTermSrv()
+ {
+ /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngRedrawDesktop */
+ /************************************************************************/
+
+ /* Notes : it always return TRUE, and it update whole the screen (redaw current desktop) */
+ BOOL
+ DxEngRedrawDesktop()
+ {
+ /* FIXME add redraw code */
+ UNIMPLEMENTED;
+ return TRUE;
+ }
+
+
+ /************************************************************************/
+ /* DxEngDispUniq */
+ /************************************************************************/
+
+ /* Notes : return the DisplayUniqVisrgn counter from gdishare memory */
+ ULONG
+ DxEngDispUniq()
+ {
+ /* FIXME DisplayUniqVisrgn from gdishare memory */
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngVisRgnUniq */
+ /************************************************************************/
+ /* Notes : return the VisRgnUniq counter for win32k */
+ ULONG
+ DxEngVisRgnUniq()
+ {
+ /* FIXME DisplayUniqVisrgn from gdishare memory */
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngEnumerateHdev */
+ /************************************************************************/
+ /* Enumate all drivers in win32k */
+ HDEV *
+ DxEngEnumerateHdev(HDEV *hdev)
+ {
+ /* FIXME Enumate all drivers in win32k */
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetDeviceGammaRamp */
+ /************************************************************************/
+ /* same protypes NtGdiEngGetDeviceGammaRamp, diffent is we skipp the user mode checks and seh */
+ BOOL
+ DxEngGetDeviceGammaRamp(HDC hDC, LPVOID lpRamp)
+ {
+ /* FIXME redirect it to NtGdiEngGetDeviceGammaRamp internal call */
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+
+ /*++
+ * @name DxEngLockDC
+ * @implemented
+ *
+ * The function DxEngLockDC lock a hdc from dxg.sys
+ *
+ * @param HDC hDC
+ * The handle we need want lock
+ *
+ * @return
+ * This api return PDC or NULL depns if it sussess lock the hdc or not
+ *
+ * @remarks.
+ * none
+ *
+ *--*/
+ PDC
+ DxEngLockDC(HDC hDC)
+ {
+ return DC_LockDc(hDC);
+ }
+
+
+ /*++
+ * @name DxEngUnlockDC
+ * @implemented
+ *
+ * The function DxEngUnlockDC Unlock a pDC (hdc) from dxg.sys
+
+ * @param PDC pDC
+ * The handle we need unlock
+ *
+ * @return
+ * This api always return TRUE if it sussess or not
+ *
+ * @remarks.
+ * none
+ *
+ *--*/
+ BOOL
+ DxEngUnlockDC(PDC pDC)
+ {
+ DC_UnlockDc(pDC);
+ return TRUE;
+ }
+
+
+ /************************************************************************/
+ /* DxEngCreateMemoryDC */
+ /************************************************************************/
+ DWORD DxEngCreateMemoryDC(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngScreenAccessCheck */
+ /************************************************************************/
+ DWORD DxEngScreenAccessCheck()
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngLockShareSem */
+ /************************************************************************/
+ DWORD DxEngLockShareSem()
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngUnlockShareSem */
+ /************************************************************************/
+ DWORD DxEngUnlockShareSem()
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngLockHdev */
+ /************************************************************************/
+ DWORD DxEngLockHdev(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngUnlockHdev */
+ /************************************************************************/
+ DWORD DxEngUnlockHdev(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngReferenceHdev */
+ /************************************************************************/
+ DWORD DxEngReferenceHdev(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngIsHdevLockedByCurrentThread */
+ /************************************************************************/
+ DWORD DxEngIsHdevLockedByCurrentThread(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+
+ /************************************************************************/
+ /* DxEngUnreferenceHdev */
+ /************************************************************************/
+ DWORD DxEngUnreferenceHdev(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSetDeviceGammaRamp */
+ /************************************************************************/
+ DWORD DxEngSetDeviceGammaRamp(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSpTearDownSprites */
+ /************************************************************************/
+ DWORD DxEngSpTearDownSprites(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSpUnTearDownSprites */
+ /************************************************************************/
+ DWORD DxEngSpUnTearDownSprites(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSpSpritesVisible */
+ /************************************************************************/
+ DWORD DxEngSpSpritesVisible(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetHdevData */
+ /************************************************************************/
+ DWORD
+ DxEngGetHdevData(PEDD_DIRECTDRAW_GLOBAL pEDDgpl,
+ DWORD Index)
+ {
++ UNIMPLEMENTED;
+ return 0;
+ }
+
+ /************************************************************************/
+ /* DxEngSetHdevData */
+ /************************************************************************/
+ DWORD DxEngSetHdevData(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetDesktopDC */
+ /************************************************************************/
+ DWORD DxEngGetDesktopDC(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngDeleteDC */
+ /************************************************************************/
+ DWORD DxEngDeleteDC(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngCleanDC */
+ /************************************************************************/
+ DWORD DxEngCleanDC(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSetDCOwner */
+ /************************************************************************/
+ DWORD DxEngSetDCOwner(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSetDCState */
+ /************************************************************************/
+ DWORD DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetDCState */
+ /************************************************************************/
+ DWORD
+ DxEngGetDCState(HDC hDC,
+ DWORD type)
+ {
+ PEDD_DIRECTDRAW_GLOBAL pEDDgpl = NULL;
+ PDC pDC = DC_LockDc(hDC);
+ if (pDC)
+ {
+ switch (type)
+ {
+ case 1:
+ UNIMPLEMENTED;
+ return 0;
+ case 2:
+ UNIMPLEMENTED;
+ return 0;
+ case 3:
+ pEDDgpl = pDC->pEDDgpl;
+ DC_UnlockDc(pDC);
+ return (DWORD)pEDDgpl;
+
+ default:
+ UNIMPLEMENTED;
+ break;
+ }
+ }
+
+ return 0;
+ }
+
+ /************************************************************************/
+ /* DxEngSelectBitmap */
+ /************************************************************************/
+ DWORD DxEngSelectBitmap(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSetBitmapOwner */
+ /************************************************************************/
+ DWORD DxEngSetBitmapOwner(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngDeleteSurface */
+ /************************************************************************/
+ DWORD DxEngDeleteSurface(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetSurfaceData */
+ /************************************************************************/
+ DWORD DxEngGetSurfaceData(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngAltLockSurface */
+ /************************************************************************/
+ DWORD DxEngAltLockSurface(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngUploadPaletteEntryToSurface */
+ /************************************************************************/
+ DWORD DxEngUploadPaletteEntryToSurface(DWORD x1, DWORD x2,DWORD x3, DWORD x4)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngMarkSurfaceAsDirectDraw */
+ /************************************************************************/
+ DWORD DxEngMarkSurfaceAsDirectDraw(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSelectPaletteToSurface */
+ /************************************************************************/
+ DWORD DxEngSelectPaletteToSurface(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSyncPaletteTableWithDevice */
+ /************************************************************************/
+ DWORD DxEngSyncPaletteTableWithDevice(DWORD x1, DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngSetPaletteState */
+ /************************************************************************/
+ DWORD DxEngSetPaletteState(DWORD x1, DWORD x2, DWORD x3)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngGetRedirectionBitmap */
+ /************************************************************************/
+ DWORD DxEngGetRedirectionBitmap(DWORD x1)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngLoadImage */
+ /************************************************************************/
+ DWORD DxEngLoadImage(DWORD x1,DWORD x2)
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+ /************************************************************************/
+ /* DxEngIncDispUniq */
+ /************************************************************************/
+ DWORD DxEngIncDispUniq()
+ {
+ UNIMPLEMENTED;
+ return FALSE;
+ }
+
+
{
{0, 0, 0, NULL}, /* 00 reserved entry */
{1, sizeof(DC), GDI_OBJECT_TAG_DC, DC_Cleanup}, /* 01 DC */
- {1, sizeof(DD_DIRECTDRAW), GDI_OBJECT_TAG_DDRAW, DD_Cleanup}, /* 02 DD_DDRAW, should be moved away from gdi objects */
- {1, sizeof(DD_SURFACE), GDI_OBJECT_TAG_DDSURF, DDSURF_Cleanup}, /* 03 DD_SURFACE, should be moved away from gdi objects */
- {0, 0, 0, NULL}, /* 02 DD_DDRAW, unused, should it be here ? */
- {0, 0, 0, NULL}, /* 03 DD_SURFACE, unused, should it be here ? */
++ {1, 0, 0, 0}, /* 02 DD_DDRAW, should be moved away from gdi objects */
++ {1, 0, 0, 0}, /* 03 DD_SURFACE, should be moved away from gdi objects */
{1, sizeof(ROSRGNDATA), GDI_OBJECT_TAG_REGION, RGNDATA_Cleanup}, /* 04 REGION */
{1, sizeof(BITMAPOBJ), GDI_OBJECT_TAG_BITMAP, BITMAP_Cleanup}, /* 05 BITMAP */
{0, sizeof(DC), GDI_OBJECT_TAG_CLIOBJ, GDI_CleanupDummy}, /* 06 CLIOBJ: METADC,... FIXME: don't use DC struct */
return FALSE;
}
- /*
- * @unimplemented
- */
- FLATPTR STDCALL
- HeapVidMemAllocAligned(
- IN LPVIDMEM lpVidMem,
- IN DWORD dwWidth,
- IN DWORD dwHeight,
- IN LPSURFACEALIGNMENT lpAlignment,
- OUT LPLONG lpNewPitch)
- {
- UNIMPLEMENTED;
- return 0;
- }
-
- /*
- * @unimplemented
- */
- VOID STDCALL
- VidMemFree(
- IN LPVMEMHEAP pvmh,
- IN FLATPTR ptr)
- {
- UNIMPLEMENTED;
- }
-
-
-
-
/*
* @unimplemented
*/
return NULL;
}
- /*
- * @unimplemented
- */
- PVOID STDCALL
- EngAllocPrivateUserMem(
- IN PDD_SURFACE_LOCAL psl,
- IN SIZE_T cj,
- IN ULONG tag)
- {
- UNIMPLEMENTED;
- return NULL;
- }
-
--
/*
* @unimplemented
*/
return FALSE;
}
- /*
- * @unimplemented
- */
- VOID STDCALL
- EngFreePrivateUserMem(
- IN PDD_SURFACE_LOCAL psl,
- IN PVOID pv)
- {
- UNIMPLEMENTED;
- }
++
+
/*
* @unimplemented
*/
return EHN_ERROR;
}
- /*
- * @unimplemented
- */
- PDD_SURFACE_LOCAL STDCALL
- EngLockDirectDrawSurface(
- IN HANDLE Surface)
- {
- UNIMPLEMENTED;
- return NULL;
- }
++
+
/*
* @unimplemented
*/
return FALSE;
}
- /*
- * @unimplemented
- */
- BOOL STDCALL
- EngUnlockDirectDrawSurface(
- IN PDD_SURFACE_LOCAL Surface)
- {
- UNIMPLEMENTED;
- return FALSE;
- }
+
/*
* @unimplemented
*/
return 0;
}
- /*
- * @unimplemented
- */
- DWORD
- STDCALL
- NtGdiDvpGetVideoPortField(
- IN HANDLE hVideoPort,
- IN OUT PDD_GETVPORTFIELDDATA puGetVPortFieldData)
- {
- UNIMPLEMENTED;
- return 0;
- }
-
-
/*
* @unimplemented
*/