//TODO: from gre\pdevobj.hxx #ifndef DRIVER_NOT_CAPABLE_DDRAW #define DRIVER_NOT_CAPABLE_DDRAW 2 #endif #ifndef DRIVER_NOT_CAPABLE_D3D #define DRIVER_NOT_CAPABLE_D3D 4 #endif #ifndef W32PID #define W32PID ULONG #endif // // The functions index which dxg.sys exports to win32k.sys // NTSTATUS DxDdStartupDxGraphics( ULONG cjEng, DRVENABLEDATA *pdedEng, ULONG cjDxg, DRVENABLEDATA *pdedDxg, DWORD *pdwDirectContext, PEPROCESS pepSession ); NTSTATUS DxDdCleanupDxGraphics( VOID ); typedef NTSTATUS (*PFN_StartupDxGraphics)(ULONG,DRVENABLEDATA*,ULONG,DRVENABLEDATA*,DWORD*,PEPROCESS); typedef NTSTATUS (*PFN_CleanupDxGraphics)(VOID); #define INDEX_DxDxgGenericThunk 0 #define INDEX_DxD3dContextCreate 1 #define INDEX_DxD3dContextDestroy 2 #define INDEX_DxD3dContextDestroyAll 3 #define INDEX_DxD3dValidateTextureStageState 4 #define INDEX_DxD3dDrawPrimitives2 5 #define INDEX_DxDdGetDriverState 6 #define INDEX_DxDdAddAttachedSurface 7 #define INDEX_DxDdAlphaBlt 8 #define INDEX_DxDdAttachSurface 9 #define INDEX_DxDdBeginMoCompFrame 10 #define INDEX_DxDdBlt 11 #define INDEX_DxDdCanCreateSurface 12 #define INDEX_DxDdCanCreateD3DBuffer 13 #define INDEX_DxDdColorControl 14 #define INDEX_DxDdCreateDirectDrawObject 15 #define INDEX_DxDdCreateSurface 16 #define INDEX_DxDdCreateD3DBuffer 17 #define INDEX_DxDdCreateMoComp 18 #define INDEX_DxDdCreateSurfaceObject 19 #define INDEX_DxDdDeleteDirectDrawObject 20 #define INDEX_DxDdDeleteSurfaceObject 21 #define INDEX_DxDdDestroyMoComp 22 #define INDEX_DxDdDestroySurface 23 #define INDEX_DxDdDestroyD3DBuffer 24 #define INDEX_DxDdEndMoCompFrame 25 #define INDEX_DxDdFlip 26 #define INDEX_DxDdFlipToGDISurface 27 #define INDEX_DxDdGetAvailDriverMemory 28 #define INDEX_DxDdGetBltStatus 29 #define INDEX_DxDdGetDC 30 #define INDEX_DxDdGetDriverInfo 31 #define INDEX_DxDdGetDxHandle 32 #define INDEX_DxDdGetFlipStatus 33 #define INDEX_DxDdGetInternalMoCompInfo 34 #define INDEX_DxDdGetMoCompBuffInfo 35 #define INDEX_DxDdGetMoCompGuids 36 #define INDEX_DxDdGetMoCompFormats 37 #define INDEX_DxDdGetScanLine 38 #define INDEX_DxDdLock 39 #define INDEX_DxDdLockD3D 40 #define INDEX_DxDdQueryDirectDrawObject 41 #define INDEX_DxDdQueryMoCompStatus 42 #define INDEX_DxDdReenableDirectDrawObject 43 #define INDEX_DxDdReleaseDC 44 #define INDEX_DxDdRenderMoComp 45 #define INDEX_DxDdResetVisrgn 46 #define INDEX_DxDdSetColorKey 47 #define INDEX_DxDdSetExclusiveMode 48 #define INDEX_DxDdSetGammaRamp 49 #define INDEX_DxDdCreateSurfaceEx 50 #define INDEX_DxDdSetOverlayPosition 51 #define INDEX_DxDdUnattachSurface 52 #define INDEX_DxDdUnlock 53 #define INDEX_DxDdUnlockD3D 54 #define INDEX_DxDdUpdateOverlay 55 #define INDEX_DxDdWaitForVerticalBlank 56 #define INDEX_DxDvpCanCreateVideoPort 57 #define INDEX_DxDvpColorControl 58 #define INDEX_DxDvpCreateVideoPort 59 #define INDEX_DxDvpDestroyVideoPort 60 #define INDEX_DxDvpFlipVideoPort 61 #define INDEX_DxDvpGetVideoPortBandwidth 62 #define INDEX_DxDvpGetVideoPortField 63 #define INDEX_DxDvpGetVideoPortFlipStatus 64 #define INDEX_DxDvpGetVideoPortInputFormats 65 #define INDEX_DxDvpGetVideoPortLine 66 #define INDEX_DxDvpGetVideoPortOutputFormats 67 #define INDEX_DxDvpGetVideoPortConnectInfo 68 #define INDEX_DxDvpGetVideoSignalStatus 69 #define INDEX_DxDvpUpdateVideoPort 70 #define INDEX_DxDvpWaitForVideoPortSync 71 #define INDEX_DxDvpAcquireNotification 72 #define INDEX_DxDvpReleaseNotification 73 #define INDEX_DxDdHeapVidMemAllocAligned 74 #define INDEX_DxDdHeapVidMemFree 75 #define INDEX_DxDdEnableDirectDraw 76 #define INDEX_DxDdDisableDirectDraw 77 #define INDEX_DxDdSuspendDirectDraw 78 #define INDEX_DxDdResumeDirectDraw 79 #define INDEX_DxDdDynamicModeChange 80 #define INDEX_DxDdCloseProcess 81 #define INDEX_DxDdGetDirectDrawBounds 82 #define INDEX_DxDdEnableDirectDrawRedirection 83 #define INDEX_DxDdAllocPrivateUserMem 84 #define INDEX_DxDdFreePrivateUserMem 85 #define INDEX_DxDdLockDirectDrawSurface 86 #define INDEX_DxDdUnlockDirectDrawSurface 87 #define INDEX_DxDdSetAccelLevel 88 #define INDEX_DxDdGetSurfaceLock 89 #define INDEX_DxDdEnumLockedSurfaceRect 90 #define INDEX_DxDdIoctl 91 // // Prototype definition // DWORD APIENTRY DxDxgGenericThunk( 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); DWORD APIENTRY DxDdAddAttachedSurface( IN HANDLE hSurface, IN HANDLE hSurfaceAttached, IN OUT PDD_ADDATTACHEDSURFACEDATA puAddAttachedSurfaceData); BOOL APIENTRY DxDdAttachSurface( IN HANDLE hSurfaceFrom, IN HANDLE hSurfaceTo); DWORD APIENTRY DxDdBlt( IN HANDLE hSurfaceDest, IN HANDLE hSurfaceSrc, IN OUT PDD_BLTDATA puBltData); DWORD APIENTRY DxDdCanCreateSurface( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATESURFACEDATA puCanCreateSurfaceData); DWORD APIENTRY DxDdColorControl( IN HANDLE hSurface, IN OUT PDD_COLORCONTROLDATA puColorControlData); HANDLE APIENTRY DxDdCreateDirectDrawObject( IN HDC hdc); DWORD APIENTRY DxDdCreateSurface( 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); HANDLE APIENTRY DxDdCreateSurfaceObject( IN HANDLE hDirectDrawLocal, IN HANDLE hSurface, IN PDD_SURFACE_LOCAL puSurfaceLocal, IN PDD_SURFACE_MORE puSurfaceMore, IN PDD_SURFACE_GLOBAL puSurfaceGlobal, IN BOOL bComplete); BOOL APIENTRY DxDdDeleteSurfaceObject( IN HANDLE hSurface); BOOL APIENTRY DxDdDeleteDirectDrawObject( IN HANDLE hDirectDrawLocal); DWORD APIENTRY DxDdDestroySurface( IN HANDLE hSurface, IN BOOL bRealDestroy); DWORD APIENTRY DxDdFlip( IN HANDLE hSurfaceCurrent, IN HANDLE hSurfaceTarget, IN HANDLE hSurfaceCurrentLeft, IN HANDLE hSurfaceTargetLeft, IN OUT PDD_FLIPDATA puFlipData); DWORD APIENTRY DxDdGetAvailDriverMemory( IN HANDLE hDirectDraw, IN OUT PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData); DWORD APIENTRY DxDdGetBltStatus( IN HANDLE hSurface, IN OUT PDD_GETBLTSTATUSDATA puGetBltStatusData); HDC APIENTRY DxDdGetDC( IN HANDLE hSurface, IN PALETTEENTRY* puColorTable); DWORD APIENTRY DxDdGetDriverInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETDRIVERINFODATA puGetDriverInfoData); DWORD APIENTRY DxDdGetFlipStatus( IN HANDLE hSurface, IN OUT PDD_GETFLIPSTATUSDATA puGetFlipStatusData); DWORD APIENTRY DxDdGetScanLine( IN HANDLE hDirectDraw, IN OUT PDD_GETSCANLINEDATA puGetScanLineData); DWORD APIENTRY DxDdSetExclusiveMode( IN HANDLE hDirectDraw, IN OUT PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData); DWORD APIENTRY DxDdFlipToGDISurface( IN HANDLE hDirectDraw, IN OUT PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData); DWORD APIENTRY DxDdLock( IN HANDLE hSurface, IN OUT PDD_LOCKDATA puLockData, IN HDC hdcClip); BOOL APIENTRY DxDdQueryDirectDrawObject( IN HANDLE, IN OUT PDD_HALINFO, IN OUT DWORD*, IN OUT LPD3DNTHAL_CALLBACKS, IN OUT LPD3DNTHAL_GLOBALDRIVERDATA, IN OUT PDD_D3DBUFCALLBACKS, IN OUT LPDDSURFACEDESC, IN OUT DWORD*, IN OUT VIDEOMEMORY*, IN OUT DWORD*, IN OUT DWORD*); BOOL APIENTRY DxDdReenableDirectDrawObject( IN HANDLE hDirectDrawLocal, IN OUT BOOL* pubNewMode); BOOL APIENTRY DxDdReleaseDC( IN HANDLE hSurface); BOOL APIENTRY DxDdResetVisrgn( IN HANDLE hSurface, IN HWND hwnd); DWORD APIENTRY DxDdSetColorKey( IN HANDLE hSurface, IN OUT PDD_SETCOLORKEYDATA puSetColorKeyData); DWORD APIENTRY DxDdSetOverlayPosition( IN HANDLE hSurfaceSource, IN HANDLE hSurfaceDestination, IN OUT PDD_SETOVERLAYPOSITIONDATA puSetOverlayPositionData); VOID APIENTRY DxDdUnattachSurface( IN HANDLE hSurface, IN HANDLE hSurfaceAttached); DWORD APIENTRY DxDdUnlock( IN HANDLE hSurface, IN OUT PDD_UNLOCKDATA puUnlockData); DWORD APIENTRY DxDdUpdateOverlay( IN HANDLE hSurfaceDestination, IN HANDLE hSurfaceSource, IN OUT PDD_UPDATEOVERLAYDATA puUpdateOverlayData); DWORD APIENTRY DxDdWaitForVerticalBlank( IN HANDLE hDirectDraw, IN OUT PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData); HANDLE APIENTRY DxDdGetDxHandle( IN HANDLE hDirectDraw, IN HANDLE hSurface, IN BOOL bRelease); BOOL APIENTRY DxDdSetGammaRamp( IN HANDLE hDirectDraw, IN HDC hdc, IN LPVOID lpGammaRamp); DWORD APIENTRY DxDdLockD3D( IN HANDLE hSurface, IN OUT PDD_LOCKDATA puLockData); DWORD APIENTRY DxDdUnlockD3D( IN HANDLE hSurface, IN OUT PDD_UNLOCKDATA puUnlockData); DWORD APIENTRY DxDdCreateD3DBuffer( 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); DWORD APIENTRY DxDdCanCreateD3DBuffer( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATESURFACEDATA puCanCreateSurfaceData); DWORD APIENTRY DxDdDestroyD3DBuffer( IN HANDLE hSurface); DWORD APIENTRY DxD3dContextCreate( IN HANDLE hDirectDrawLocal, IN HANDLE hSurfColor, IN HANDLE hSurfZ, IN OUT D3DNTHAL_CONTEXTCREATEI *pdcci); DWORD APIENTRY DxD3dContextDestroy( IN LPD3DNTHAL_CONTEXTDESTROYDATA); DWORD APIENTRY DxD3dContextDestroyAll( OUT LPD3DNTHAL_CONTEXTDESTROYALLDATA pdcdad); DWORD APIENTRY DxD3dValidateTextureStageState( IN OUT LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA pData); DWORD APIENTRY DxD3dDrawPrimitives2( 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); DWORD APIENTRY DxDdGetDriverState( IN OUT PDD_GETDRIVERSTATEDATA pdata); DWORD APIENTRY DxDdCreateSurfaceEx( IN HANDLE hDirectDraw, IN HANDLE hSurface, IN DWORD dwSurfaceHandle); DWORD APIENTRY DxDdGetMoCompGuids( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPGUIDSDATA puGetMoCompGuidsData); DWORD APIENTRY DxDdGetMoCompFormats( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPFORMATSDATA puGetMoCompFormatsData); DWORD APIENTRY DxDdGetMoCompBuffInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETMOCOMPCOMPBUFFDATA puGetBuffData); DWORD APIENTRY DxDdGetInternalMoCompInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETINTERNALMOCOMPDATA puGetInternalData); HANDLE APIENTRY DxDdCreateMoComp( IN HANDLE hDirectDraw, IN OUT PDD_CREATEMOCOMPDATA puCreateMoCompData); DWORD APIENTRY DxDdDestroyMoComp( IN HANDLE hMoComp, IN OUT PDD_DESTROYMOCOMPDATA puDestroyMoCompData); DWORD APIENTRY DxDdBeginMoCompFrame( IN HANDLE hMoComp, IN OUT PDD_BEGINMOCOMPFRAMEDATA puBeginFrameData); DWORD APIENTRY DxDdEndMoCompFrame( IN HANDLE hMoComp, IN OUT PDD_ENDMOCOMPFRAMEDATA puEndFrameData); DWORD APIENTRY DxDdRenderMoComp( IN HANDLE hMoComp, IN OUT PDD_RENDERMOCOMPDATA puRenderMoCompData); DWORD APIENTRY DxDdQueryMoCompStatus( IN OUT HANDLE hMoComp, IN OUT PDD_QUERYMOCOMPSTATUSDATA puQueryMoCompStatusData); DWORD APIENTRY DxDdAlphaBlt( IN HANDLE hSurfaceDest, IN HANDLE hSurfaceSrc, IN OUT PDD_BLTDATA puBltData); DWORD APIENTRY DxDvpCanCreateVideoPort( IN HANDLE hDirectDraw, IN OUT PDD_CANCREATEVPORTDATA puCanCreateVPortData); DWORD APIENTRY DxDvpColorControl( IN HANDLE hVideoPort, IN OUT PDD_VPORTCOLORDATA puVPortColorData); HANDLE APIENTRY DxDvpCreateVideoPort( IN HANDLE hDirectDraw, IN OUT PDD_CREATEVPORTDATA puCreateVPortData); DWORD APIENTRY DxDvpDestroyVideoPort( IN HANDLE hVideoPort, IN OUT PDD_DESTROYVPORTDATA puDestroyVPortData); DWORD APIENTRY DxDvpFlipVideoPort( IN HANDLE hVideoPort, IN HANDLE hDDSurfaceCurrent, IN HANDLE hDDSurfaceTarget, IN OUT PDD_FLIPVPORTDATA puFlipVPortData); DWORD APIENTRY DxDvpGetVideoPortBandwidth( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTBANDWIDTHDATA puGetVPortBandwidthData); DWORD APIENTRY DxDvpGetVideoPortField( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTFIELDDATA puGetVPortFieldData); DWORD APIENTRY DxDvpGetVideoPortFlipStatus( IN HANDLE hDirectDraw, IN OUT PDD_GETVPORTFLIPSTATUSDATA puGetVPortFlipStatusData); DWORD APIENTRY DxDvpGetVideoPortInputFormats( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTINPUTFORMATDATA puGetVPortInputFormatData); DWORD APIENTRY DxDvpGetVideoPortLine( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTLINEDATA puGetVPortLineData); DWORD APIENTRY DxDvpGetVideoPortOutputFormats( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTOUTPUTFORMATDATA puGetVPortOutputFormatData); DWORD APIENTRY DxDvpGetVideoPortConnectInfo( IN HANDLE hDirectDraw, IN OUT PDD_GETVPORTCONNECTDATA puGetVPortConnectData); DWORD APIENTRY DxDvpGetVideoSignalStatus( IN HANDLE hVideoPort, IN OUT PDD_GETVPORTSIGNALDATA puGetVPortSignalData); DWORD APIENTRY DxDvpUpdateVideoPort( IN HANDLE hVideoPort, IN HANDLE* phSurfaceVideo, IN HANDLE* phSurfaceVbi, IN OUT PDD_UPDATEVPORTDATA puUpdateVPortData); DWORD APIENTRY DxDvpWaitForVideoPortSync( IN HANDLE hVideoPort, IN OUT PDD_WAITFORVPORTSYNCDATA puWaitForVPortSyncData); DWORD APIENTRY DxDvpAcquireNotification( IN HANDLE hVideoPort, IN OUT HANDLE* phEvent, IN LPDDVIDEOPORTNOTIFY pNotify); DWORD APIENTRY DxDvpReleaseNotification( IN HANDLE hVideoPort, IN HANDLE hEvent); FLATPTR WINAPI DxDdHeapVidMemAllocAligned( LPVIDMEM lpVidMem, DWORD dwWidth, DWORD dwHeight, LPSURFACEALIGNMENT lpAlignment , LPLONG lpNewPitch ); VOID WINAPI DxDdHeapVidMemFree( LPVMEMHEAP pvmh, FLATPTR ptr ); // // Private for win32k.sys // BOOL DxDdEnableDirectDraw( HDEV hdev, BOOL bEnableDriver ); VOID DxDdDisableDirectDraw( HDEV hdev, BOOL bDisableDriver ); VOID DxDdSuspendDirectDraw( HDEV hdev, ULONG fl ); VOID DxDdResumeDirectDraw( HDEV hdev, ULONG fl ); #define DXG_SR_DDRAW_CHILDREN 0x0001 #define DXG_SR_DDRAW_MODECHANGE 0x0002 VOID DxDdDynamicModeChange( HDEV hdevOld, HDEV hdevNew, ULONG fl ); #define DXG_MODECHANGE_TRANSFER 0x0001 VOID DxDdCloseProcess( W32PID W32Pid ); BOOL DxDdGetDirectDrawBounds( HDEV hdev, RECT* prcBounds ); BOOL DxDdEnableDirectDrawRedirection( HDEV hdev, BOOL bEnable ); PVOID DxDdAllocPrivateUserMem( PDD_SURFACE_LOCAL pSurfaceLocal, SIZE_T cj, ULONG tag ); VOID DxDdFreePrivateUserMem( PDD_SURFACE_LOCAL pSurfaceLocal, PVOID pv ); HRESULT DxDdIoctl( ULONG ulIoctl, PVOID pBuffer, ULONG ulBufferSize ); PDD_SURFACE_LOCAL DxDdLockDirectDrawSurface( HANDLE hSurface ); BOOL DxDdUnlockDirectDrawSurface( PDD_SURFACE_LOCAL pSurface ); VOID DxDdSetAccelLevel( HDEV hdev, DWORD dwAccelLevel, DWORD dwOverride ); DWORD DxDdGetSurfaceLock( HDEV hdev ); PVOID DxDdEnumLockedSurfaceRect( HDEV hdev, PVOID pvSurface, RECTL *pLockedRect ); typedef DWORD (APIENTRY *PFN_DxDxgGenericThunk)(IN ULONG_PTR,IN ULONG_PTR, IN OUT SIZE_T *,IN OUT PVOID, IN OUT SIZE_T *,IN OUT PVOID); typedef DWORD (APIENTRY *PFN_DxDdAddAttachedSurface)(IN HANDLE,IN HANDLE,IN OUT PDD_ADDATTACHEDSURFACEDATA); typedef BOOL (APIENTRY *PFN_DxDdAttachSurface)(IN HANDLE,IN HANDLE); typedef DWORD (APIENTRY *PFN_DxDdBlt)(IN HANDLE,IN HANDLE,IN OUT PDD_BLTDATA); typedef DWORD (APIENTRY *PFN_DxDdCanCreateSurface)(IN HANDLE,IN OUT PDD_CANCREATESURFACEDATA); typedef DWORD (APIENTRY *PFN_DxDdColorControl)(IN HANDLE,IN OUT PDD_COLORCONTROLDATA); typedef HANDLE (APIENTRY *PFN_DxDdCreateDirectDrawObject)(IN HDC); typedef DWORD (APIENTRY *PFN_DxDdCreateSurface)(IN HANDLE,IN HANDLE*,IN OUT DDSURFACEDESC*, IN OUT DD_SURFACE_GLOBAL*,IN OUT DD_SURFACE_LOCAL*, IN OUT DD_SURFACE_MORE*,IN OUT DD_CREATESURFACEDATA*, OUT HANDLE*); typedef HANDLE (APIENTRY *PFN_DxDdCreateSurfaceObject)(IN HANDLE,IN HANDLE,IN PDD_SURFACE_LOCAL, IN PDD_SURFACE_MORE,IN PDD_SURFACE_GLOBAL, IN BOOL); typedef BOOL (APIENTRY *PFN_DxDdDeleteSurfaceObject)(IN HANDLE); typedef BOOL (APIENTRY *PFN_DxDdDeleteDirectDrawObject)(IN HANDLE); typedef DWORD (APIENTRY *PFN_DxDdDestroySurface)(IN HANDLE,IN BOOL); typedef DWORD (APIENTRY *PFN_DxDdFlip)(IN HANDLE,IN HANDLE,IN HANDLE,IN HANDLE,IN OUT PDD_FLIPDATA); typedef DWORD (APIENTRY *PFN_DxDdGetAvailDriverMemory)(IN HANDLE,IN OUT PDD_GETAVAILDRIVERMEMORYDATA); typedef DWORD (APIENTRY *PFN_DxDdGetBltStatus)(IN HANDLE,IN OUT PDD_GETBLTSTATUSDATA); typedef HDC (APIENTRY *PFN_DxDdGetDC)(IN HANDLE,IN PALETTEENTRY*); typedef DWORD (APIENTRY *PFN_DxDdGetDriverInfo)(IN HANDLE,IN OUT PDD_GETDRIVERINFODATA); typedef DWORD (APIENTRY *PFN_DxDdGetFlipStatus)(IN HANDLE,IN OUT PDD_GETFLIPSTATUSDATA); typedef DWORD (APIENTRY *PFN_DxDdGetScanLine)(IN HANDLE,IN OUT PDD_GETSCANLINEDATA); typedef DWORD (APIENTRY *PFN_DxDdSetExclusiveMode)(IN HANDLE,IN OUT PDD_SETEXCLUSIVEMODEDATA); typedef DWORD (APIENTRY *PFN_DxDdFlipToGDISurface)(IN HANDLE,IN OUT PDD_FLIPTOGDISURFACEDATA); typedef DWORD (APIENTRY *PFN_DxDdLock)(IN HANDLE,IN OUT PDD_LOCKDATA,IN HDC); typedef BOOL (APIENTRY *PFN_DxDdQueryDirectDrawObject)(IN HANDLE,IN OUT PDD_HALINFO,IN OUT DWORD*, IN OUT LPD3DNTHAL_CALLBACKS, IN OUT LPD3DNTHAL_GLOBALDRIVERDATA, IN OUT PDD_D3DBUFCALLBACKS, IN OUT LPDDSURFACEDESC, IN OUT DWORD*, IN OUT VIDEOMEMORY*, IN OUT DWORD*, IN OUT DWORD*); typedef BOOL (APIENTRY *PFN_DxDdReenableDirectDrawObject)(IN HANDLE,IN OUT BOOL*); typedef BOOL (APIENTRY *PFN_DxDdReleaseDC)(IN HANDLE); typedef BOOL (APIENTRY *PFN_DxDdResetVisrgn)(IN HANDLE,IN HWND); typedef DWORD (APIENTRY *PFN_DxDdSetColorKey)(IN HANDLE,IN OUT PDD_SETCOLORKEYDATA); typedef DWORD (APIENTRY *PFN_DxDdSetOverlayPosition)(IN HANDLE,IN HANDLE,IN OUT PDD_SETOVERLAYPOSITIONDATA); typedef VOID (APIENTRY *PFN_DxDdUnattachSurface)(IN HANDLE,IN HANDLE); typedef DWORD (APIENTRY *PFN_DxDdUnlock)(IN HANDLE,IN OUT PDD_UNLOCKDATA); typedef DWORD (APIENTRY *PFN_DxDdUpdateOverlay)(IN HANDLE,IN HANDLE,IN OUT PDD_UPDATEOVERLAYDATA); typedef DWORD (APIENTRY *PFN_DxDdWaitForVerticalBlank)(IN HANDLE,IN OUT PDD_WAITFORVERTICALBLANKDATA); typedef HANDLE (APIENTRY *PFN_DxDdGetDxHandle)(IN HANDLE,IN HANDLE,IN BOOL); typedef BOOL (APIENTRY *PFN_DxDdSetGammaRamp)(IN HANDLE,IN HDC,IN LPVOID); typedef DWORD (APIENTRY *PFN_DxDdLockD3D)(IN HANDLE,IN OUT PDD_LOCKDATA); typedef DWORD (APIENTRY *PFN_DxDdUnlockD3D)(IN HANDLE,IN OUT PDD_UNLOCKDATA); typedef DWORD (APIENTRY *PFN_DxDdCreateD3DBuffer)(IN HANDLE,IN OUT HANDLE*, IN OUT DDSURFACEDESC*,IN OUT DD_SURFACE_GLOBAL*, IN OUT DD_SURFACE_LOCAL*,IN OUT DD_SURFACE_MORE*, IN OUT DD_CREATESURFACEDATA*,IN OUT HANDLE*); typedef DWORD (APIENTRY *PFN_DxDdCanCreateD3DBuffer)(IN HANDLE,IN OUT PDD_CANCREATESURFACEDATA); typedef DWORD (APIENTRY *PFN_DxDdDestroyD3DBuffer)(IN HANDLE); typedef DWORD (APIENTRY *PFN_DxD3dContextCreate)(IN HANDLE,IN HANDLE,IN HANDLE,IN OUT D3DNTHAL_CONTEXTCREATEI*); typedef DWORD (APIENTRY *PFN_DxD3dContextDestroy)(IN LPD3DNTHAL_CONTEXTDESTROYDATA); typedef DWORD (APIENTRY *PFN_DxD3dContextDestroyAll)(OUT LPD3DNTHAL_CONTEXTDESTROYALLDATA); typedef DWORD (APIENTRY *PFN_DxD3dValidateTextureStageState)(IN OUT LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA); typedef DWORD (APIENTRY *PFN_DxD3dDrawPrimitives2)(IN HANDLE,IN HANDLE,IN OUT LPD3DNTHAL_DRAWPRIMITIVES2DATA pded, IN OUT FLATPTR*,IN OUT DWORD*,IN OUT FLATPTR*,IN OUT DWORD*); typedef DWORD (APIENTRY *PFN_DxDdGetDriverState)(IN OUT PDD_GETDRIVERSTATEDATA); typedef DWORD (APIENTRY *PFN_DxDdCreateSurfaceEx)(IN HANDLE,IN HANDLE,IN DWORD); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompGuids)(IN HANDLE,IN OUT PDD_GETMOCOMPGUIDSDATA); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompFormats)(IN HANDLE,IN OUT PDD_GETMOCOMPFORMATSDATA); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompBuffInfo)(IN HANDLE,IN OUT PDD_GETMOCOMPCOMPBUFFDATA); typedef DWORD (APIENTRY *PFN_DxDdGetInternalMoCompInfo)(IN HANDLE,IN OUT PDD_GETINTERNALMOCOMPDATA); typedef HANDLE (APIENTRY *PFN_DxDdCreateMoComp)(IN HANDLE,IN OUT PDD_CREATEMOCOMPDATA); typedef DWORD (APIENTRY *PFN_DxDdDestroyMoComp)(IN HANDLE,IN OUT PDD_DESTROYMOCOMPDATA); typedef DWORD (APIENTRY *PFN_DxDdBeginMoCompFrame)(IN HANDLE,IN OUT PDD_BEGINMOCOMPFRAMEDATA); typedef DWORD (APIENTRY *PFN_DxDdEndMoCompFrame)(IN HANDLE,IN OUT PDD_ENDMOCOMPFRAMEDATA); typedef DWORD (APIENTRY *PFN_DxDdRenderMoComp)(IN HANDLE,IN OUT PDD_RENDERMOCOMPDATA); typedef DWORD (APIENTRY *PFN_DxDdQueryMoCompStatus)(IN OUT HANDLE,IN OUT PDD_QUERYMOCOMPSTATUSDATA); typedef DWORD (APIENTRY *PFN_DxDdAlphaBlt)(IN HANDLE,IN HANDLE,IN OUT PDD_BLTDATA); typedef DWORD (APIENTRY *PFN_DxDvpCanCreateVideoPort)(IN HANDLE,IN OUT PDD_CANCREATEVPORTDATA); typedef DWORD (APIENTRY *PFN_DxDvpColorControl)(IN HANDLE,IN OUT PDD_VPORTCOLORDATA); typedef HANDLE (APIENTRY *PFN_DxDvpCreateVideoPort)(IN HANDLE,IN OUT PDD_CREATEVPORTDATA); typedef DWORD (APIENTRY *PFN_DxDvpDestroyVideoPort)(IN HANDLE,IN OUT PDD_DESTROYVPORTDATA); typedef DWORD (APIENTRY *PFN_DxDvpFlipVideoPort)(IN HANDLE,IN HANDLE,IN HANDLE,IN OUT PDD_FLIPVPORTDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortBandwidth)(IN HANDLE,IN OUT PDD_GETVPORTBANDWIDTHDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortField)(IN HANDLE,IN OUT PDD_GETVPORTFIELDDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortFlipStatus)(IN HANDLE,IN OUT PDD_GETVPORTFLIPSTATUSDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortInputFormats)(IN HANDLE,IN OUT PDD_GETVPORTINPUTFORMATDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortLine)(IN HANDLE,IN OUT PDD_GETVPORTLINEDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortOutputFormats)(IN HANDLE,IN OUT PDD_GETVPORTOUTPUTFORMATDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoPortConnectInfo)(IN HANDLE,IN OUT PDD_GETVPORTCONNECTDATA); typedef DWORD (APIENTRY *PFN_DxDvpGetVideoSignalStatus)(IN HANDLE,IN OUT PDD_GETVPORTSIGNALDATA); typedef DWORD (APIENTRY *PFN_DxDvpUpdateVideoPort)(IN HANDLE,IN HANDLE*,IN HANDLE*,IN OUT PDD_UPDATEVPORTDATA); typedef DWORD (APIENTRY *PFN_DxDvpWaitForVideoPortSync)(IN HANDLE,IN OUT PDD_WAITFORVPORTSYNCDATA); typedef DWORD (APIENTRY *PFN_DxDvpAcquireNotification)(IN HANDLE,IN OUT HANDLE*,IN OUT LPDDVIDEOPORTNOTIFY pNotify); typedef DWORD (APIENTRY *PFN_DxDvpReleaseNotification)(IN HANDLE,IN HANDLE); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompGuids)(IN HANDLE,IN OUT PDD_GETMOCOMPGUIDSDATA); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompFormats)(IN HANDLE,IN OUT PDD_GETMOCOMPFORMATSDATA); typedef DWORD (APIENTRY *PFN_DxDdGetMoCompBuffInfo)(IN HANDLE,IN OUT PDD_GETMOCOMPCOMPBUFFDATA); typedef FLATPTR (WINAPI *PFN_DxDdHeapVidMemAllocAligned)(LPVIDMEM,DWORD,DWORD,LPSURFACEALIGNMENT,LPLONG); typedef VOID (WINAPI *PFN_DxDdHeapVidMemFree)(LPVMEMHEAP,FLATPTR); typedef BOOL (*PFN_DxDdEnableDirectDraw)(HDEV,BOOL); typedef VOID (*PFN_DxDdDisableDirectDraw)(HDEV,BOOL); typedef VOID (*PFN_DxDdSuspendDirectDraw)(HDEV,ULONG); typedef VOID (*PFN_DxDdResumeDirectDraw)(HDEV,ULONG); typedef VOID (*PFN_DxDdDynamicModeChange)(HDEV,HDEV,ULONG); typedef VOID (*PFN_DxDdCloseProcess)(W32PID); typedef BOOL (*PFN_DxDdGetDirectDrawBounds)(HDEV,RECT*); typedef BOOL (*PFN_DxDdEnableDirectDrawRedirection)(HDEV,BOOL); typedef PVOID (*PFN_DxDdAllocPrivateUserMem)(PDD_SURFACE_LOCAL,SIZE_T,ULONG); typedef VOID (*PFN_DxDdFreePrivateUserMem)(PDD_SURFACE_LOCAL,PVOID); typedef PDD_SURFACE_LOCAL (*PFN_DxDdLockDirectDrawSurface)(HANDLE); typedef BOOL (*PFN_DxDdUnlockDirectDrawSurface)(PDD_SURFACE_LOCAL); typedef VOID (*PFN_DxDdSetAccelLevel)(HDEV,DWORD,DWORD); typedef DWORD (*PFN_DxDdGetSurfaceLock)(HDEV); typedef PVOID (*PFN_DxDdEnumLockedSurfaceRect)(HDEV,PVOID,RECTL*); typedef HRESULT (*PFN_DxDdIoctl)(ULONG,PVOID,ULONG); // // The functions definiton which import from win32k.sys // // Functions for global win32k.sys status. // #define INDEX_DxEngUnused 0 #define INDEX_DxEngIsTermSrv 1 #define INDEX_DxEngScreenAccessCheck 2 #define INDEX_DxEngRedrawDesktop 3 #define INDEX_DxEngDispUniq 4 #define INDEX_DxEngIncDispUniq 5 #define INDEX_DxEngVisRgnUniq 6 #define INDEX_DxEngLockShareSem 7 #define INDEX_DxEngUnlockShareSem 8 #define INDEX_DxEngEnumerateHdev 9 #define INDEX_DxEngLockHdev 10 #define INDEX_DxEngUnlockHdev 11 #define INDEX_DxEngIsHdevLockedByCurrentThread 12 #define INDEX_DxEngReferenceHdev 13 #define INDEX_DxEngUnreferenceHdev 14 #define INDEX_DxEngGetDeviceGammaRamp 15 #define INDEX_DxEngSetDeviceGammaRamp 16 #define INDEX_DxEngSpTearDownSprites 17 #define INDEX_DxEngSpUnTearDownSprites 18 #define INDEX_DxEngSpSpritesVisible 19 #define INDEX_DxEngGetHdevData 20 #define INDEX_DxEngSetHdevData 21 #define INDEX_DxEngCreateMemoryDC 22 #define INDEX_DxEngGetDesktopDC 23 #define INDEX_DxEngDeleteDC 24 #define INDEX_DxEngCleanDC 25 #define INDEX_DxEngSetDCOwner 26 #define INDEX_DxEngLockDC 27 #define INDEX_DxEngUnlockDC 28 #define INDEX_DxEngSetDCState 29 #define INDEX_DxEngGetDCState 30 #define INDEX_DxEngSelectBitmap 31 #define INDEX_DxEngSetBitmapOwner 32 #define INDEX_DxEngDeleteSurface 33 #define INDEX_DxEngGetSurfaceData 34 #define INDEX_DxEngAltLockSurface 35 #define INDEX_DxEngUploadPaletteEntryToSurface 36 #define INDEX_DxEngMarkSurfaceAsDirectDraw 37 #define INDEX_DxEngSelectPaletteToSurface 38 #define INDEX_DxEngSyncPaletteTableWithDevice 39 #define INDEX_DxEngSetPaletteState 40 #define INDEX_DxEngGetRedirectionBitmap 41 #define INDEX_DxEngLoadImage 42 #define INDEX_WIN32K_TABLE_SIZE 43 // DxEngSetHdevData() #define HDEV_SURFACEHANDLE 0 // Get only #define HDEV_MINIPORTHANDLE 1 // Get only #define HDEV_DITHERFORMAT 2 // Get only #define HDEV_GCAPS 3 #define HDEV_GCAPS2 4 #define HDEV_FUNCTIONTABLE 5 // Get only #define HDEV_DHPDEV 6 // Get only #define HDEV_DXDATA 7 #define HDEV_DXLOCKS 8 #define HDEV_CAPSOVERRIDE 9 // Get only #define HDEV_DISABLED 10 #define HDEV_DDML 11 // Get only #define HDEV_DISPLAY 12 // Get only #define HDEV_PARENTHDEV 13 // Get only #define HDEV_DELETED 14 // Get only #define HDEV_PALMANAGED 15 // Get only #define HDEV_LDEV 16 // Get only #define HDEV_GRAPHICSDEVICE 17 // Get only #define HDEV_CLONE 18 // Get only // DxEngGetDCState() #define DCSTATE_FULLSCREEN 1 #define DCSTATE_VISRGNCOMPLEX 2 // Get only #define DCSTATE_HDEV 3 // Get only // DxEngGetSurfaceData() #define SURF_HOOKFLAGS 1 #define SURF_IS_DIRECTDRAW_SURFACE 2 #define SURF_DD_SURFACE_HANDLE 3 // DxEngSetPaletteState() #define PALSTATE_DIBSECTION 1 #ifdef DXG_BUILD // ONLY TRUE WHEN BUILD DXG.SYS. // // Stub routines to call Win32k.sys // extern DRVFN *gpEngFuncs; typedef BOOL (*PFN_DxEngIsTermSrv)(VOID); typedef BOOL (*PFN_DxEngScreenAccessCheck)(VOID); typedef BOOL (*PFN_DxEngRedrawDesktop)(VOID); typedef ULONG (*PFN_DxEngDispUniq)(VOID); typedef BOOL (*PFN_DxEngIncDispUniq)(VOID); typedef ULONG (*PFN_DxEngVisRgnUniq)(VOID); typedef BOOL (*PFN_DxEngLockShareSem)(VOID); typedef BOOL (*PFN_DxEngUnlockShareSem)(VOID); typedef HDEV (*PFN_DxEngEnumerateHdev)(HDEV); typedef BOOL (*PFN_DxEngLockHdev)(HDEV); typedef BOOL (*PFN_DxEngUnlockHdev)(HDEV); typedef BOOL (*PFN_DxEngIsHdevLockedByCurrentThread)(HDEV); typedef BOOL (*PFN_DxEngReferenceHdev)(HDEV); typedef BOOL (*PFN_DxEngUnreferenceHdev)(HDEV); typedef BOOL (*PFN_DxEngGetDeviceGammaRamp)(HDEV,PVOID); typedef BOOL (*PFN_DxEngSetDeviceGammaRamp)(HDEV,PVOID,BOOL); typedef BOOL (*PFN_DxEngSpTearDownSprites)(HDEV,RECTL*,BOOL); typedef BOOL (*PFN_DxEngSpUnTearDownSprites)(HDEV,RECTL*,BOOL); typedef BOOL (*PFN_DxEngSpSpritesVisible)(HDEV); typedef ULONG_PTR (*PFN_DxEngGetHdevData)(HDEV,DWORD); typedef BOOL (*PFN_DxEngSetHdevData)(HDEV,DWORD,ULONG_PTR); typedef HDC (*PFN_DxEngCreateMemoryDC)(HDEV); typedef HDC (*PFN_DxEngGetDesktopDC)(ULONG,BOOL,BOOL); typedef BOOL (*PFN_DxEngDeleteDC)(HDC,BOOL); typedef BOOL (*PFN_DxEngCleanDC)(HDC); typedef BOOL (*PFN_DxEngSetDCOwner)(HDC,W32PID); typedef PVOID (*PFN_DxEngLockDC)(HDC); typedef BOOL (*PFN_DxEngUnlockDC)(PVOID); typedef BOOL (*PFN_DxEngSetDCState)(HDC,DWORD,ULONG_PTR); typedef ULONG_PTR (*PFN_DxEngGetDCState)(HDC,DWORD); typedef HBITMAP (*PFN_DxEngSelectBitmap)(HDC,HBITMAP); typedef BOOL (*PFN_DxEngSetBitmapOwner)(HBITMAP,W32PID); typedef BOOL (*PFN_DxEngDeleteSurface)(HSURF hsurf); typedef ULONG_PTR (*PFN_DxEngGetSurfaceData)(SURFOBJ*,DWORD); typedef SURFOBJ* (*PFN_DxEngAltLockSurface)(HBITMAP); typedef BOOL (*PFN_DxEngUploadPaletteEntryToSurface)(HDEV,SURFOBJ*,PALETTEENTRY*,ULONG); typedef BOOL (*PFN_DxEngMarkSurfaceAsDirectDraw)(SURFOBJ*,HANDLE); typedef HPALETTE (*PFN_DxEngSelectPaletteToSurface)(SURFOBJ*,HPALETTE); typedef BOOL (*PFN_DxEngSyncPaletteTableWithDevice)(HPALETTE,HDEV); typedef BOOL (*PFN_DxEngSetPaletteState)(HPALETTE,DWORD,ULONG_PTR); typedef HBITMAP (*PFN_DxEngGetRedirectionBitmap)(HWND); typedef HANDLE (*PFN_DxEngLoadImage)(LPWSTR,BOOL); #define PPFNGET_DXENG(name) ((PFN_DxEng##name)((gpEngFuncs[INDEX_DxEng##name]).pfn)) #define CALL_DXENG(name) (*(PPFNGET_DXENG(name))) #define DxEngIsTermSrv() ((BOOL)(CALL_DXENG(IsTermSrv)())) #define DxEngScreenAccessCheck() ((BOOL)(CALL_DXENG(ScreenAccessCheck)())) #define DxEngRedrawDesktop() ((BOOL)(CALL_DXENG(RedrawDesktop)())) #define DxEngDispUniq() ((ULONG)(CALL_DXENG(DxEngDispUniq)())) #define DxEngIncDispUniq() ((BOOL)(CALL_DXENG(IncDispUniq)())) #define DxEngVisRgnUniq() ((ULONG)(CALL_DXENG(VisRgnUniq)())) #define DxEngLockShareSem() ((BOOL)(CALL_DXENG(LockShareSem)())) #define DxEngUnlockShareSem() ((BOOL)(CALL_DXENG(UnlockShareSem)())) #define DxEngEnumerateHdev(hdev) ((HDEV)(CALL_DXENG(EnumerateHdev)(hdev))) #define DxEngLockHdev(hdev) ((BOOL)(CALL_DXENG(LockHdev)(hdev))) #define DxEngUnlockHdev(hdev) ((BOOL)(CALL_DXENG(UnlockHdev)(hdev))) #define DxEngIsHdevLockedByCurrentThread(hdev) \ ((BOOL)(CALL_DXENG(IsHdevLockedByCurrentThread)(hdev))) #define DxEngReferenceHdev(hdev) ((BOOL)(CALL_DXENG(ReferenceHdev)(hdev))) #define DxEngUnreferenceHdev(hdev) ((BOOL)(CALL_DXENG(UnreferenceHdev)(hdev))) #define DxEngGetHdevData(hdev,dwIndex) \ ((ULONG_PTR)(CALL_DXENG(GetHdevData)(hdev,dwIndex))) #define DxEngSetHdevData(hdev,dwIndex,pData) \ ((BOOL)(CALL_DXENG(SetHdevData)(hdev,dwIndex,pData))) #define DxEngCreateMemoryDC(hdev) ((HDC)(CALL_DXENG(CreateMemoryDC)(hdev))) #define DxEngGetDesktopDC(ulType,bAltType,bValidate) \ ((HDC)(CALL_DXENG(GetDesktopDC)(ulType,bAltType,bValidate))) #define DxEngDeleteDC(hdc,bForce) ((BOOL)(CALL_DXENG(DeleteDC)(hdc,bForce))) #define DxEngCleanDC(hdc) ((BOOL)(CALL_DXENG(CleanDC)(hdc))) #define DxEngSetDCOwner(hdc,pidOwner) \ ((BOOL)(CALL_DXENG(SetDCOwner)(hdc,pidOwner))) #define DxEngLockDC(hdc) ((PVOID)(CALL_DXENG(LockDC)(hdc))) #define DxEngUnlockDC(pvLockedDC) ((BOOL)(CALL_DXENG(UnlockDC)(pvLockedDC))) #define DxEngSetDCState(hdc,dwState,ulData) \ ((BOOL)(CALL_DXENG(SetDCState)(hdc,dwState,ulData))) #define DxEngGetDCState(hdc,dwState) \ ((ULONG_PTR)(CALL_DXENG(GetDCState)(hdc,dwState))) #define DxEngSelectBitmap(hdc,hbm) ((HBITMAP)(CALL_DXENG(SelectBitmap)(hdc,hbm))) #define DxEngSetBitmapOwner(hbm,pidOwner) \ ((BOOL)(CALL_DXENG(SetBitmapOwner)(hbm,pidOwner))) #define DxEngDeleteSurface(hsurf) ((BOOL)(CALL_DXENG(DeleteSurface)(hsurf))) #define DxEngGetSurfaceData(pso,dwIndex) \ ((ULONG_PTR)(CALL_DXENG(GetSurfaceData)(pso,dwIndex))) #define DxEngAltLockSurface(hsurf) ((SURFOBJ*)(CALL_DXENG(AltLockSurface)(hsurf))) #define DxEngUploadPaletteEntryToSurface(hdev,pso,puColorTable,cColors) \ ((BOOL)(CALL_DXENG(UploadPaletteEntryToSurface)(hdev,pso,puColorTable,cColors))) #define DxEngMarkSurfaceAsDirectDraw(pso,hDdSurf) \ ((BOOL)(CALL_DXENG(MarkSurfaceAsDirectDraw)(pso,hDdSurf))) #define DxEngSelectPaletteToSurface(pso,hpal) \ ((HPALETTE)(CALL_DXENG(SelectPaletteToSurface)(pso,hpal))) #define DxEngGetDeviceGammaRamp(hdev,pv) \ ((BOOL)(CALL_DXENG(GetDeviceGammaRamp)(hdev,pv))) #define DxEngSetDeviceGammaRamp(hdev,pv,b) \ ((BOOL)(CALL_DXENG(SetDeviceGammaRamp)(hdev,pv,b))) #define DxEngSpTearDownSprites(hdev,prcl,b) \ ((BOOL)(CALL_DXENG(SpTearDownSprites)(hdev,prcl,b))) #define DxEngSpUnTearDownSprites(hdev,prcl,b) \ ((BOOL)(CALL_DXENG(SpUnTearDownSprites)(hdev,prcl,b))) #define DxEngSpSpritesVisible(hdev) \ ((BOOL)(CALL_DXENG(SpSpritesVisible)(hdev))) #define DxEngSetPaletteState(hpal,dwIndex,ulData) \ ((BOOL)(CALL_DXENG(SetPaletteState)(hpal,dwIndex,ulData))) #define DxEngSyncPaletteTableWithDevice(hpal,hdev) \ ((BOOL)(CALL_DXENG(SyncPaletteTableWithDevice)(hpal,hdev))) #define DxEngGetRedirectionBitmap(hWnd) \ ((HBITMAP)(CALL_DXENG(GetRedirectionBitmap)(hWnd))) #define DxEngLoadImage(pwszDriver, bLoadInSessionSpace) \ ((HANDLE)(CALL_DXENG(LoadImage)(pwszDriver,bLoadInSessionSpace))) #else // DXG_BUILD // // Prototype definitions for function body in win32k.sys // BOOL DxEngIsTermSrv( VOID ); BOOL DxEngScreenAccessCheck( VOID ); BOOL DxEngRedrawDesktop( VOID ); ULONG DxEngDispUniq( VOID ); BOOL DxEngIncDispUniq( VOID ); ULONG DxEngVisRgnUniq( VOID ); BOOL DxEngLockShareSem( VOID ); BOOL DxEngUnlockShareSem( VOID ); HDEV DxEngEnumerateHdev( HDEV hdev ); // Functions for control HDEV status. BOOL DxEngLockHdev( HDEV hdev ); BOOL DxEngUnlockHdev( HDEV hdev ); BOOL DxEngIsHdevLockedByCurrentThread( HDEV hdev ); BOOL DxEngReferenceHdev( HDEV hdev ); BOOL DxEngUnreferenceHdev( HDEV hdev ); BOOL DxEngGetDeviceGammaRamp( HDEV hdev, PVOID pv ); BOOL DxEngSetDeviceGammaRamp( HDEV hdev, PVOID pv, BOOL b ); BOOL DxEngSpTearDownSprites( HDEV hdev, RECTL* prcl, BOOL b ); BOOL DxEngSpUnTearDownSprites( HDEV hdev, RECTL* prcl, BOOL b ); BOOL DxEngSpSpritesVisible( HDEV hdev ); ULONG_PTR DxEngGetHdevData( HDEV hdev, DWORD dwIndex ); BOOL DxEngSetHdevData( HDEV hdev, DWORD dwIndex, ULONG_PTR ulData ); // Functions for control DC HDC DxEngCreateMemoryDC( HDEV hdev ); HDC DxEngGetDesktopDC( ULONG ulType, BOOL bAltType, BOOL bValidate ); BOOL DxEngDeleteDC( HDC hdc, BOOL bForce ); BOOL DxEngCleanDC( HDC hdc ); BOOL DxEngSetDCOwner( HDC hdc, W32PID pidOwner ); PVOID DxEngLockDC( HDC hdc ); BOOL DxEngUnlockDC( PVOID pvLockedDC ); BOOL DxEngSetDCState( HDC hdc, DWORD dwState, ULONG_PTR ulData ); ULONG_PTR DxEngGetDCState( HDC hdc, DWORD dwState ); // Functions for control Bitmap/Surface HBITMAP DxEngSelectBitmap( HDC hdc, HBITMAP hbm ); BOOL DxEngSetBitmapOwner( HBITMAP hbm, W32PID pidOwner ); BOOL DxEngDeleteSurface( HSURF hsurf ); ULONG_PTR DxEngGetSurfaceData( SURFOBJ* pso, DWORD dwIndex); SURFOBJ *DxEngAltLockSurface( HBITMAP hSurf); BOOL DxEngUploadPaletteEntryToSurface( HDEV hdev, SURFOBJ* pso, PALETTEENTRY* puColorTable, ULONG cColors ); BOOL DxEngMarkSurfaceAsDirectDraw( SURFOBJ* pso, HANDLE hDdSurf ); HPALETTE DxEngSelectPaletteToSurface( SURFOBJ* pso, HPALETTE hpal ); // Functions for control palette BOOL DxEngSyncPaletteTableWithDevice( HPALETTE hpal, HDEV hdev ); BOOL DxEngSetPaletteState( HPALETTE hpal, DWORD dwIndex, ULONG_PTR ulData ); #define PALSTATE_DIBSECTION 1 // Functions for window handle HBITMAP DxEngGetRedirectionBitmap( HWND hWnd ); // Functions to load image file HANDLE DxEngLoadImage( LPWSTR pwszDriver, BOOL bLoadInSessionSpace ); #endif // DXG_BUILD