mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 18:00:41 +00:00
fixed NtGdiCreateDC() to use UNICODE_STRINGs
svn path=/trunk/; revision=6996
This commit is contained in:
parent
619a2c32d9
commit
b0848526af
8 changed files with 168 additions and 40 deletions
|
@ -86,7 +86,7 @@ typedef struct _DC
|
||||||
HSURF Surface;
|
HSURF Surface;
|
||||||
|
|
||||||
DRIVER_FUNCTIONS DriverFunctions;
|
DRIVER_FUNCTIONS DriverFunctions;
|
||||||
PWSTR DriverName;
|
UNICODE_STRING DriverName;
|
||||||
HANDLE DeviceDriver;
|
HANDLE DeviceDriver;
|
||||||
|
|
||||||
INT wndOrgX; /* Window origin */
|
INT wndOrgX; /* Window origin */
|
||||||
|
@ -125,9 +125,9 @@ typedef struct
|
||||||
GDIOBJ_UnlockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC)
|
GDIOBJ_UnlockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC)
|
||||||
|
|
||||||
HDC FASTCALL RetrieveDisplayHDC(VOID);
|
HDC FASTCALL RetrieveDisplayHDC(VOID);
|
||||||
HDC FASTCALL DC_AllocDC(LPCWSTR Driver);
|
HDC FASTCALL DC_AllocDC(PUNICODE_STRING Driver);
|
||||||
VOID FASTCALL DC_InitDC(HDC DCToInit);
|
VOID FASTCALL DC_InitDC(HDC DCToInit);
|
||||||
HDC FASTCALL DC_FindOpenDC(LPCWSTR Driver);
|
HDC FASTCALL DC_FindOpenDC(PUNICODE_STRING Driver);
|
||||||
VOID FASTCALL DC_FreeDC(HDC DCToFree);
|
VOID FASTCALL DC_FreeDC(HDC DCToFree);
|
||||||
HDC FASTCALL DC_GetNextDC (PDC pDC);
|
HDC FASTCALL DC_GetNextDC (PDC pDC);
|
||||||
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
|
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
|
||||||
|
@ -141,9 +141,9 @@ BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
|
||||||
|
|
||||||
BOOL STDCALL NtGdiCancelDC(HDC hDC);
|
BOOL STDCALL NtGdiCancelDC(HDC hDC);
|
||||||
HDC STDCALL NtGdiCreateCompatableDC(HDC hDC);
|
HDC STDCALL NtGdiCreateCompatableDC(HDC hDC);
|
||||||
HDC STDCALL NtGdiCreateDC(LPCWSTR Driver,
|
HDC STDCALL NtGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
LPCWSTR Device,
|
PUNICODE_STRING Device,
|
||||||
LPCWSTR Output,
|
PUNICODE_STRING Output,
|
||||||
CONST PDEVMODEW InitData);
|
CONST PDEVMODEW InitData);
|
||||||
HDC STDCALL NtGdiCreateIC(LPCWSTR Driver,
|
HDC STDCALL NtGdiCreateIC(LPCWSTR Driver,
|
||||||
LPCWSTR Device,
|
LPCWSTR Device,
|
||||||
|
|
|
@ -435,12 +435,19 @@ CreateDCW (
|
||||||
CONST DEVMODEW * lpInitData
|
CONST DEVMODEW * lpInitData
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return NtGdiCreateDC (
|
UNICODE_STRING Driver, Device, Output;
|
||||||
lpwszDriver,
|
|
||||||
lpwszDevice,
|
if(lpwszDriver)
|
||||||
lpwszOutput,
|
RtlInitUnicodeString(&Driver, lpwszDriver);
|
||||||
(PDEVMODEW)lpInitData
|
if(lpwszDevice)
|
||||||
);
|
RtlInitUnicodeString(&Driver, lpwszDevice);
|
||||||
|
if(lpwszOutput)
|
||||||
|
RtlInitUnicodeString(&Driver, lpwszOutput);
|
||||||
|
|
||||||
|
return NtGdiCreateDC((lpwszDriver ? &Driver : NULL),
|
||||||
|
(lpwszDevice ? &Device : NULL),
|
||||||
|
(lpwszOutput ? &Output : NULL),
|
||||||
|
(PDEVMODEW)lpInitData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,4 +3,8 @@
|
||||||
|
|
||||||
NTSTATUS FASTCALL InitCleanupImpl(VOID);
|
NTSTATUS FASTCALL InitCleanupImpl(VOID);
|
||||||
|
|
||||||
|
NTSTATUS FASTCALL
|
||||||
|
IntSafeCopyUnicodeString(PUNICODE_STRING Dest,
|
||||||
|
PUNICODE_STRING Source);
|
||||||
|
|
||||||
#endif /* ndef _SUBSYS_WIN32K_INCLUDE_CLEANUP_H */
|
#endif /* ndef _SUBSYS_WIN32K_INCLUDE_CLEANUP_H */
|
||||||
|
|
|
@ -108,5 +108,11 @@ IntGdiGetDCOrgEx(DC *dc, LPPOINT Point);
|
||||||
INT FASTCALL
|
INT FASTCALL
|
||||||
IntGdiGetObject(HANDLE handle, INT count, LPVOID buffer);
|
IntGdiGetObject(HANDLE handle, INT count, LPVOID buffer);
|
||||||
|
|
||||||
|
HDC FASTCALL
|
||||||
|
IntGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
|
PUNICODE_STRING Device,
|
||||||
|
PUNICODE_STRING Output,
|
||||||
|
CONST PDEVMODEW InitData);
|
||||||
|
|
||||||
#endif /* _WIN32K_INTGDI_H */
|
#endif /* _WIN32K_INTGDI_H */
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: misc.c,v 1.32 2003/11/30 20:03:47 navaraf Exp $
|
/* $Id: misc.c,v 1.33 2003/12/13 15:49:32 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -670,3 +670,40 @@ NtUserGetGuiResources(
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS FASTCALL
|
||||||
|
IntSafeCopyUnicodeString(PUNICODE_STRING Dest,
|
||||||
|
PUNICODE_STRING Source)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
PWSTR Src;
|
||||||
|
|
||||||
|
Status = MmCopyFromCaller(Dest, Source, sizeof(UNICODE_STRING));
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Dest->MaximumLength > 0)
|
||||||
|
{
|
||||||
|
Src = Dest->Buffer;
|
||||||
|
|
||||||
|
Dest->Buffer = ExAllocatePool(NonPagedPool, Dest->MaximumLength);
|
||||||
|
if(!Dest->Buffer)
|
||||||
|
{
|
||||||
|
return STATUS_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = MmCopyFromCaller(Dest->Buffer, Src, Dest->MaximumLength);
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ExFreePool(Dest->Buffer);
|
||||||
|
Dest->Buffer = NULL;
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: windc.c,v 1.44 2003/12/12 18:18:21 weiden Exp $
|
/* $Id: windc.c,v 1.45 2003/12/13 15:49:32 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -42,6 +42,7 @@
|
||||||
#include <include/dce.h>
|
#include <include/dce.h>
|
||||||
#include <include/vis.h>
|
#include <include/vis.h>
|
||||||
#include <include/object.h>
|
#include <include/object.h>
|
||||||
|
#include <include/intgdi.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
@ -127,14 +128,17 @@ DceAllocDCE(HWND hWnd, DCE_TYPE Type)
|
||||||
{
|
{
|
||||||
HDCE DceHandle;
|
HDCE DceHandle;
|
||||||
DCE* Dce;
|
DCE* Dce;
|
||||||
|
UNICODE_STRING DriverName;
|
||||||
|
|
||||||
DceHandle = DCEOBJ_AllocDCE();
|
DceHandle = DCEOBJ_AllocDCE();
|
||||||
if(!DceHandle)
|
if(!DceHandle)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&DriverName, L"DISPLAY");
|
||||||
|
|
||||||
Dce = DCEOBJ_LockDCE(DceHandle);
|
Dce = DCEOBJ_LockDCE(DceHandle);
|
||||||
Dce->Self = DceHandle;
|
Dce->Self = DceHandle;
|
||||||
Dce->hDC = NtGdiCreateDC(L"DISPLAY", NULL, NULL, NULL);
|
Dce->hDC = IntGdiCreateDC(&DriverName, NULL, NULL, NULL);
|
||||||
if (NULL == defaultDCstate)
|
if (NULL == defaultDCstate)
|
||||||
{
|
{
|
||||||
defaultDCstate = NtGdiGetDCState(Dce->hDC);
|
defaultDCstate = NtGdiGetDCState(Dce->hDC);
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* $Id: winsta.c,v 1.52 2003/12/13 11:34:53 navaraf Exp $
|
* $Id: winsta.c,v 1.53 2003/12/13 15:49:32 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -51,6 +51,7 @@
|
||||||
#include <include/mouse.h>
|
#include <include/mouse.h>
|
||||||
#include <include/callback.h>
|
#include <include/callback.h>
|
||||||
#include <include/guicheck.h>
|
#include <include/guicheck.h>
|
||||||
|
#include <include/intgdi.h>
|
||||||
/* Needed for DIRECTORY_OBJECT */
|
/* Needed for DIRECTORY_OBJECT */
|
||||||
#include <internal/ob.h>
|
#include <internal/ob.h>
|
||||||
|
|
||||||
|
@ -200,11 +201,13 @@ IntGetWindowStationObject(PWINSTATION_OBJECT Object)
|
||||||
BOOL FASTCALL
|
BOOL FASTCALL
|
||||||
IntInitializeDesktopGraphics(VOID)
|
IntInitializeDesktopGraphics(VOID)
|
||||||
{
|
{
|
||||||
|
UNICODE_STRING DriverName;
|
||||||
if (! IntCreatePrimarySurface())
|
if (! IntCreatePrimarySurface())
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
ScreenDeviceContext = NtGdiCreateDC(L"DISPLAY", NULL, NULL, NULL);
|
RtlInitUnicodeString(&DriverName, L"DISPLAY");
|
||||||
|
ScreenDeviceContext = IntGdiCreateDC(&DriverName, NULL, NULL, NULL);
|
||||||
if (NULL == ScreenDeviceContext)
|
if (NULL == ScreenDeviceContext)
|
||||||
{
|
{
|
||||||
IntDestroyPrimarySurface();
|
IntDestroyPrimarySurface();
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: dc.c,v 1.110 2003/12/13 13:45:18 weiden Exp $
|
/* $Id: dc.c,v 1.111 2003/12/13 15:49:32 weiden Exp $
|
||||||
*
|
*
|
||||||
* DC.C - Device context functions
|
* DC.C - Device context functions
|
||||||
*
|
*
|
||||||
|
@ -50,6 +50,8 @@
|
||||||
#include <include/palette.h>
|
#include <include/palette.h>
|
||||||
#include <include/guicheck.h>
|
#include <include/guicheck.h>
|
||||||
#include <include/desktop.h>
|
#include <include/desktop.h>
|
||||||
|
#include <include/intgdi.h>
|
||||||
|
#include <include/cleanup.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
@ -136,6 +138,7 @@ NtGdiCreateCompatableDC(HDC hDC)
|
||||||
HDC hNewDC, DisplayDC;
|
HDC hNewDC, DisplayDC;
|
||||||
HRGN hVisRgn;
|
HRGN hVisRgn;
|
||||||
BITMAPOBJ *pb;
|
BITMAPOBJ *pb;
|
||||||
|
UNICODE_STRING DriverName;
|
||||||
|
|
||||||
DisplayDC = NULL;
|
DisplayDC = NULL;
|
||||||
if (hDC == NULL)
|
if (hDC == NULL)
|
||||||
|
@ -143,7 +146,8 @@ NtGdiCreateCompatableDC(HDC hDC)
|
||||||
hDC = IntGetScreenDC();
|
hDC = IntGetScreenDC();
|
||||||
if (NULL == hDC)
|
if (NULL == hDC)
|
||||||
{
|
{
|
||||||
DisplayDC = NtGdiCreateDC(L"DISPLAY", NULL, NULL, NULL);
|
RtlInitUnicodeString(&DriverName, L"DISPLAY");
|
||||||
|
DisplayDC = IntGdiCreateDC(&DriverName, NULL, NULL, NULL);
|
||||||
if (NULL == DisplayDC)
|
if (NULL == DisplayDC)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -162,7 +166,7 @@ NtGdiCreateCompatableDC(HDC hDC)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
hNewDC = DC_AllocDC(OrigDC->DriverName);
|
hNewDC = DC_AllocDC(&OrigDC->DriverName);
|
||||||
|
|
||||||
if (NULL == hNewDC)
|
if (NULL == hNewDC)
|
||||||
{
|
{
|
||||||
|
@ -660,10 +664,10 @@ IntDestroyPrimarySurface()
|
||||||
ObDereferenceObject(PrimarySurface.VideoFileObject);
|
ObDereferenceObject(PrimarySurface.VideoFileObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
HDC STDCALL
|
HDC FASTCALL
|
||||||
NtGdiCreateDC(LPCWSTR Driver,
|
IntGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
LPCWSTR Device,
|
PUNICODE_STRING Device,
|
||||||
LPCWSTR Output,
|
PUNICODE_STRING Output,
|
||||||
CONST PDEVMODEW InitData)
|
CONST PDEVMODEW InitData)
|
||||||
{
|
{
|
||||||
HDC hNewDC;
|
HDC hNewDC;
|
||||||
|
@ -671,8 +675,11 @@ NtGdiCreateDC(LPCWSTR Driver,
|
||||||
HDC hDC = NULL;
|
HDC hDC = NULL;
|
||||||
PSURFGDI SurfGDI;
|
PSURFGDI SurfGDI;
|
||||||
HRGN hVisRgn;
|
HRGN hVisRgn;
|
||||||
|
UNICODE_STRING StdDriver;
|
||||||
|
|
||||||
if (NULL == Driver || 0 == _wcsicmp(Driver, L"DISPLAY"))
|
RtlInitUnicodeString(&StdDriver, L"DISPLAY");
|
||||||
|
|
||||||
|
if (NULL == Driver || 0 == RtlCompareUnicodeString(Driver, &StdDriver, TRUE))
|
||||||
{
|
{
|
||||||
if (! IntGraphicsCheck(TRUE))
|
if (! IntGraphicsCheck(TRUE))
|
||||||
{
|
{
|
||||||
|
@ -744,6 +751,54 @@ NtGdiCreateDC(LPCWSTR Driver,
|
||||||
return hNewDC;
|
return hNewDC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HDC STDCALL
|
||||||
|
NtGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
|
PUNICODE_STRING Device,
|
||||||
|
PUNICODE_STRING Output,
|
||||||
|
CONST PDEVMODEW InitData)
|
||||||
|
{
|
||||||
|
UNICODE_STRING SafeDriver, SafeDevice;
|
||||||
|
DEVMODEW SafeInitData;
|
||||||
|
HDC Ret;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
if(InitData)
|
||||||
|
{
|
||||||
|
Status = MmCopyFromCaller(&SafeInitData, InitData, sizeof(DEVMODEW));
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastNtError(Status);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* FIXME - InitData can have some more bytes! */
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Driver)
|
||||||
|
{
|
||||||
|
Status = IntSafeCopyUnicodeString(&SafeDriver, Driver);
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastNtError(Status);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Device)
|
||||||
|
{
|
||||||
|
Status = IntSafeCopyUnicodeString(&SafeDevice, Device);
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
RtlFreeUnicodeString(&SafeDriver);
|
||||||
|
SetLastNtError(Status);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ret = IntGdiCreateDC(&SafeDriver, &SafeDevice, NULL, &SafeInitData);
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
HDC STDCALL
|
HDC STDCALL
|
||||||
NtGdiCreateIC(LPCWSTR Driver,
|
NtGdiCreateIC(LPCWSTR Driver,
|
||||||
LPCWSTR Device,
|
LPCWSTR Device,
|
||||||
|
@ -751,7 +806,8 @@ NtGdiCreateIC(LPCWSTR Driver,
|
||||||
CONST PDEVMODEW DevMode)
|
CONST PDEVMODEW DevMode)
|
||||||
{
|
{
|
||||||
/* FIXME: this should probably do something else... */
|
/* FIXME: this should probably do something else... */
|
||||||
return NtGdiCreateDC(Driver, Device, Output, DevMode);
|
//return NtGdiCreateDC(Driver, Device, Output, DevMode);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
|
@ -1837,14 +1893,29 @@ DC_SET_MODE( NtGdiSetStretchBltMode, w.stretchBltMode, BLACKONWHITE, HALFTONE )
|
||||||
// ---------------------------------------------------- Private Interface
|
// ---------------------------------------------------- Private Interface
|
||||||
|
|
||||||
HDC FASTCALL
|
HDC FASTCALL
|
||||||
DC_AllocDC(LPCWSTR Driver)
|
DC_AllocDC(PUNICODE_STRING Driver)
|
||||||
{
|
{
|
||||||
PDC NewDC;
|
PDC NewDC;
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
|
PWSTR Buf = NULL;
|
||||||
|
|
||||||
|
if (Driver != NULL)
|
||||||
|
{
|
||||||
|
Buf = ExAllocatePoolWithTag(PagedPool, Driver->MaximumLength, TAG_DC);
|
||||||
|
if(!Buf)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
RtlCopyMemory(Buf, Driver->Buffer, Driver->MaximumLength);
|
||||||
|
}
|
||||||
|
|
||||||
hDC = (HDC) GDIOBJ_AllocObj(sizeof(DC), GDI_OBJECT_TYPE_DC, (GDICLEANUPPROC) DC_InternalDeleteDC);
|
hDC = (HDC) GDIOBJ_AllocObj(sizeof(DC), GDI_OBJECT_TYPE_DC, (GDICLEANUPPROC) DC_InternalDeleteDC);
|
||||||
if (hDC == NULL)
|
if (hDC == NULL)
|
||||||
{
|
{
|
||||||
|
if(Buf)
|
||||||
|
{
|
||||||
|
ExFreePool(Buf);
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1852,8 +1923,8 @@ DC_AllocDC(LPCWSTR Driver)
|
||||||
|
|
||||||
if (Driver != NULL)
|
if (Driver != NULL)
|
||||||
{
|
{
|
||||||
NewDC->DriverName = ExAllocatePoolWithTag(PagedPool, (wcslen(Driver) + 1) * sizeof(WCHAR), TAG_DC);
|
RtlCopyMemory(&NewDC->DriverName, Driver, sizeof(UNICODE_STRING));
|
||||||
wcscpy(NewDC->DriverName, Driver);
|
NewDC->DriverName.Buffer = Buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
NewDC->w.xformWorld2Wnd.eM11 = 1.0f;
|
NewDC->w.xformWorld2Wnd.eM11 = 1.0f;
|
||||||
|
@ -1875,7 +1946,7 @@ DC_AllocDC(LPCWSTR Driver)
|
||||||
}
|
}
|
||||||
|
|
||||||
HDC FASTCALL
|
HDC FASTCALL
|
||||||
DC_FindOpenDC(LPCWSTR Driver)
|
DC_FindOpenDC(PUNICODE_STRING Driver)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1909,11 +1980,7 @@ BOOL FASTCALL
|
||||||
DC_InternalDeleteDC( PDC DCToDelete )
|
DC_InternalDeleteDC( PDC DCToDelete )
|
||||||
{
|
{
|
||||||
|
|
||||||
if (NULL != DCToDelete->DriverName)
|
RtlFreeUnicodeString(&DCToDelete->DriverName);
|
||||||
{
|
|
||||||
ExFreePool(DCToDelete->DriverName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue