2 * ReactOS W32 Subsystem
3 * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 /* $Id: print.c,v 1.23 2004/07/17 17:37:41 blight Exp $ */
24 NtGdiAbortDoc(HDC hDC
)
85 BITMAPOBJ
*BitmapObj
= BITMAPOBJ_LockBitmap(dc
->w
.hBitmap
);
88 if ( NULL
== dc
->DriverFunctions
.Escape
)
90 Result
= IntEngExtEscape(
100 Result
= dc
->DriverFunctions
.Escape(
108 BITMAPOBJ_UnlockBitmap(dc
->w
.hBitmap
);
123 PDC pDC
= DC_LockDc(hDC
);
124 LPVOID SafeInData
= NULL
;
125 LPVOID SafeOutData
= NULL
;
131 SetLastWin32Error(ERROR_INVALID_HANDLE
);
135 if ( InSize
&& UnsafeInData
)
137 SafeInData
= ExAllocatePoolWithTag ( PagedPool
, InSize
, TAG_PRINT
);
141 SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY
);
144 Status
= MmCopyFromCaller ( SafeInData
, UnsafeInData
, InSize
);
145 if ( !NT_SUCCESS(Status
) )
147 ExFreePool ( SafeInData
);
149 SetLastNtError(Status
);
154 if ( OutSize
&& UnsafeOutData
)
156 SafeOutData
= ExAllocatePoolWithTag ( PagedPool
, OutSize
, TAG_PRINT
);
160 ExFreePool ( SafeInData
);
162 SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY
);
167 Result
= IntGdiExtEscape ( pDC
, Escape
, InSize
, SafeInData
, OutSize
, SafeOutData
);
172 ExFreePool ( SafeInData
);
176 Status
= MmCopyToCaller ( UnsafeOutData
, SafeOutData
, OutSize
);
177 ExFreePool ( SafeOutData
);
178 if ( !NT_SUCCESS(Status
) )
180 SetLastNtError(Status
);
190 NtGdiSetAbortProc(HDC hDC
,
199 NtGdiStartDoc(HDC hDC
,
208 NtGdiStartPage(HDC hDC
)