fixed stack corutions for dxeng api they do not have STDCALL set, we need figout which have STDCALL or FASTCALL. I only set STDCALL on tested functions for dxgen this will fix the stack corruptions we did have in ms dxsys.sys, now we need setup internal struct for dx. I also add some debug data output so we can see what been requested to send back from DxEngGetHdevData

svn path=/trunk/; revision=33036
This commit is contained in:
Magnus Olsen 2008-04-19 20:17:51 +00:00
parent 113bdc2756
commit 17f59814cf
2 changed files with 39 additions and 13 deletions

View file

@ -72,23 +72,24 @@ typedef enum _DXEGSHDEVDATA
/************************************************************************/ /************************************************************************/
/* win32k.sys internal protypes for the driver functions it export */ /* win32k.sys internal protypes for the driver functions it export */
/************************************************************************/ /************************************************************************/
BOOL DxEngNUIsTermSrv(); BOOLEAN STDCALL DxEngNUIsTermSrv();
BOOL DxEngRedrawDesktop(); BOOLEAN DxEngRedrawDesktop();
ULONG DxEngDispUniq(); ULONG DxEngDispUniq();
ULONG DxEngVisRgnUniq(); ULONG DxEngVisRgnUniq();
HDEV *DxEngEnumerateHdev(HDEV *hdev); HDEV *DxEngEnumerateHdev(HDEV *hdev);
BOOL DxEngGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp); BOOL DxEngGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp);
PDC DxEngLockDC(HDC hDC); PDC STDCALL DxEngLockDC(HDC hDC);
BOOL DxEngUnlockDC(PDC pDC); BOOLEAN STDCALL DxEngUnlockDC(PDC pDC);
BOOL DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Unuse); BOOLEAN DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Unuse);
BOOLEAN DxEngLockShareSem(); BOOLEAN DxEngLockShareSem();
BOOLEAN DxEngUnlockShareSem(); BOOLEAN DxEngUnlockShareSem();
BOOLEAN DxEngCleanDC(HDC hdc); BOOLEAN DxEngCleanDC(HDC hdc);
DWORD DxEngGetHdevData(HDEV, DXEGSHDEVDATA); DWORD STDCALL DxEngGetHdevData(HDEV, DXEGSHDEVDATA);
BOOLEAN DxEngSetHdevData(HDEV, DXEGSHDEVDATA, DWORD); BOOLEAN STDCALL DxEngSetHdevData(HDEV, DXEGSHDEVDATA, DWORD);
BOOLEAN DxEngIncDispUniq(); BOOLEAN DxEngIncDispUniq();
BOOLEAN DxEngLockHdev(HDEV hdev); BOOLEAN STDCALL DxEngLockHdev(HDEV hdev);
BOOLEAN DxEngUnlockHdev(HDEV hdev); BOOLEAN DxEngUnlockHdev(HDEV hdev);
DWORD STDCALL DxEngGetDCState(HDC hDC, DWORD type);
/* prototypes are not done yet, I need gather all my notes /* prototypes are not done yet, I need gather all my notes
* to make them correct * to make them correct
@ -106,7 +107,6 @@ DWORD DxEngGetDesktopDC(DWORD x1, DWORD x2, DWORD x3);
DWORD DxEngDeleteDC(DWORD x1, DWORD x2); DWORD DxEngDeleteDC(DWORD x1, DWORD x2);
DWORD DxEngSetDCOwner(DWORD x1, DWORD x2); DWORD DxEngSetDCOwner(DWORD x1, DWORD x2);
DWORD DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3); DWORD DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3);
DWORD DxEngGetDCState(HDC hDC, DWORD type);
DWORD DxEngSelectBitmap(DWORD x1, DWORD x2); DWORD DxEngSelectBitmap(DWORD x1, DWORD x2);
DWORD DxEngSetBitmapOwner(DWORD x1, DWORD x2); DWORD DxEngSetBitmapOwner(DWORD x1, DWORD x2);
DWORD DxEngDeleteSurface(DWORD x1); DWORD DxEngDeleteSurface(DWORD x1);

View file

@ -126,6 +126,7 @@ DxEngGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp)
* *
*--*/ *--*/
PDC PDC
STDCALL
DxEngLockDC(HDC hDC) DxEngLockDC(HDC hDC)
{ {
DPRINT1("ReactX Calling : DxEngLockDC\n"); DPRINT1("ReactX Calling : DxEngLockDC\n");
@ -149,7 +150,8 @@ DxEngLockDC(HDC hDC)
* none * none
* *
*--*/ *--*/
BOOL BOOLEAN
STDCALL
DxEngUnlockDC(PDC pDC) DxEngUnlockDC(PDC pDC)
{ {
DPRINT1("ReactX Calling : DxEngUnlockDC\n"); DPRINT1("ReactX Calling : DxEngUnlockDC\n");
@ -234,7 +236,7 @@ DxEngUnlockShareSem()
* None * None
* *
*--*/ *--*/
BOOL BOOLEAN
DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test) DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
{ {
DPRINT1("ReactX Calling : DxEngSetDeviceGammaRamp\n"); DPRINT1("ReactX Calling : DxEngSetDeviceGammaRamp\n");
@ -281,6 +283,7 @@ DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
* *
*--*/ *--*/
DWORD DWORD
STDCALL
DxEngGetHdevData(HDEV hDev, DxEngGetHdevData(HDEV hDev,
DXEGSHDEVDATA Type) DXEGSHDEVDATA Type)
{ {
@ -292,61 +295,80 @@ DxEngGetHdevData(HDEV hDev,
switch ( Type ) switch ( Type )
{ {
case DxEGShDevData_Surface: case DxEGShDevData_Surface:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Surface\n");
retVal = (DWORD) PDev->pSurface; // ptr to Surface handle. retVal = (DWORD) PDev->pSurface; // ptr to Surface handle.
break; break;
case DxEGShDevData_hSpooler: case DxEGShDevData_hSpooler:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_hSpooler\n");
retVal = (DWORD) PDev->hSpooler; // If the device is a spooler driver. retVal = (DWORD) PDev->hSpooler; // If the device is a spooler driver.
break; break;
case DxEGShDevData_DitherFmt: case DxEGShDevData_DitherFmt:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DitherFmt\n");
retVal = (DWORD) PDev->DevInfo.iDitherFormat; retVal = (DWORD) PDev->DevInfo.iDitherFormat;
break; break;
case DxEGShDevData_FxCaps: case DxEGShDevData_FxCaps:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps\n");
retVal = (DWORD) PDev->DevInfo.flGraphicsCaps; retVal = (DWORD) PDev->DevInfo.flGraphicsCaps;
break; break;
case DxEGShDevData_FxCaps2: case DxEGShDevData_FxCaps2:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps2\n");
retVal = (DWORD) PDev->DevInfo.flGraphicsCaps2; retVal = (DWORD) PDev->DevInfo.flGraphicsCaps2;
break; break;
case DxEGShDevData_DrvFuncs: case DxEGShDevData_DrvFuncs:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DrvFuncs\n");
retVal = (DWORD) &PDev->DriverFunctions; retVal = (DWORD) &PDev->DriverFunctions;
break; break;
case DxEGShDevData_dhpdev: case DxEGShDevData_dhpdev:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dhpdev\n");
retVal = (DWORD) PDev->hPDev; // DHPDEV retVal = (DWORD) PDev->hPDev; // DHPDEV
break; break;
case DxEGShDevData_eddg: case DxEGShDevData_eddg:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_eddg\n");
retVal = (DWORD) PDev->pEDDgpl; retVal = (DWORD) PDev->pEDDgpl;
break; break;
case DxEGShDevData_dd_nCount: case DxEGShDevData_dd_nCount:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_nCount\n");
retVal = (DWORD) PDev->DxDd_nCount; retVal = (DWORD) PDev->DxDd_nCount;
break; break;
case DxEGShDevData_dd_flags: case DxEGShDevData_dd_flags:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_flags\n");
retVal = (DWORD) PDev->DxDd_Flags; retVal = (DWORD) PDev->DxDd_Flags;
break; break;
case DxEGShDevData_disable: case DxEGShDevData_disable:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_disable\n");
retVal = (DWORD) PDev->flFlags & PDEV_DISABLED; retVal = (DWORD) PDev->flFlags & PDEV_DISABLED;
break; break;
case DxEGShDevData_metadev: case DxEGShDevData_metadev:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_metadev\n");
retVal = (DWORD) PDev->flFlags & PDEV_META_DEVICE; retVal = (DWORD) PDev->flFlags & PDEV_META_DEVICE;
break; break;
case DxEGShDevData_display: case DxEGShDevData_display:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_display\n");
retVal = (DWORD) PDev->flFlags & PDEV_DISPLAY; retVal = (DWORD) PDev->flFlags & PDEV_DISPLAY;
break; break;
case DxEGShDevData_Parent: case DxEGShDevData_Parent:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Parent\n");
retVal = (DWORD) PDev->ppdevParent; retVal = (DWORD) PDev->ppdevParent;
break; break;
case DxEGShDevData_OpenRefs: case DxEGShDevData_OpenRefs:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_OpenRefs\n");
retVal = (DWORD) PDev->cPdevOpenRefs == 0; retVal = (DWORD) PDev->cPdevOpenRefs == 0;
break; break;
case DxEGShDevData_palette: case DxEGShDevData_palette:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_palette\n");
retVal = (DWORD) PDev->GDIInfo.flRaster & RC_PALETTE; retVal = (DWORD) PDev->GDIInfo.flRaster & RC_PALETTE;
break; break;
case DxEGShDevData_ldev: case DxEGShDevData_ldev:
DPRINT1("DxEGShDevData_ldev not supported yet\n");
// ATM we do not support the Loader Device driver structure. // ATM we do not support the Loader Device driver structure.
// retVal = (DWORD) PDev->pldev; // retVal = (DWORD) PDev->pldev;
break; break;
case DxEGShDevData_GDev: case DxEGShDevData_GDev:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_GDev\n");
retVal = (DWORD) PDev->pGraphicsDev; // P"GRAPHICS_DEVICE" retVal = (DWORD) PDev->pGraphicsDev; // P"GRAPHICS_DEVICE"
break; break;
case DxEGShDevData_clonedev: case DxEGShDevData_clonedev:
DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_clonedev\n");
retVal = (DWORD) PDev->flFlags & PDEV_CLONE_DEVICE; retVal = (DWORD) PDev->flFlags & PDEV_CLONE_DEVICE;
break; break;
@ -381,6 +403,7 @@ DxEngGetHdevData(HDEV hDev,
* *
*--*/ *--*/
BOOLEAN BOOLEAN
STDCALL
DxEngSetHdevData(HDEV hDev, DxEngSetHdevData(HDEV hDev,
DXEGSHDEVDATA Type, DXEGSHDEVDATA Type,
DWORD Data) DWORD Data)
@ -423,6 +446,7 @@ DxEngSetHdevData(HDEV hDev,
* *
*--*/ *--*/
DWORD DWORD
STDCALL
DxEngGetDCState(HDC hDC, DxEngGetDCState(HDC hDC,
DWORD type) DWORD type)
{ {
@ -497,6 +521,7 @@ DxEngIncDispUniq()
* *
*--*/ *--*/
BOOLEAN BOOLEAN
STDCALL
DxEngLockHdev(HDEV hDev) DxEngLockHdev(HDEV hDev)
{ {
PGDIDEVICE pPDev = (PGDIDEVICE)hDev; PGDIDEVICE pPDev = (PGDIDEVICE)hDev;
@ -550,7 +575,8 @@ DxEngUnlockHdev(HDEV hDev)
/************************************************************************/ /************************************************************************/
/* Notes : Check see if termal server got a connections or not */ /* Notes : Check see if termal server got a connections or not */
BOOL BOOLEAN
STDCALL
DxEngNUIsTermSrv() DxEngNUIsTermSrv()
{ {
/* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */ /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
@ -563,7 +589,7 @@ DxEngNUIsTermSrv()
/************************************************************************/ /************************************************************************/
/* Notes : it always return TRUE, and it update whole the screen (redaw current desktop) */ /* Notes : it always return TRUE, and it update whole the screen (redaw current desktop) */
BOOL BOOLEAN
DxEngRedrawDesktop() DxEngRedrawDesktop()
{ {
/* FIXME add redraw code */ /* FIXME add redraw code */