* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* $Id$ */
-#include <w32k.h>
+#include <win32k.h>
#define NDEBUG
#include <debug.h>
INT
-STDCALL
+APIENTRY
NtGdiAbortDoc(HDC hDC)
{
UNIMPLEMENTED;
}
INT
-STDCALL
+APIENTRY
NtGdiEndDoc(HDC hDC)
{
UNIMPLEMENTED;
}
INT
-STDCALL
+APIENTRY
NtGdiEndPage(HDC hDC)
{
UNIMPLEMENTED;
}
INT
-STDCALL
+APIENTRY
NtGdiEscape(HDC hDC,
INT Escape,
INT InSize,
}
INT
-STDCALL
-IntEngExtEscape(
- SURFOBJ *Surface,
- INT Escape,
- INT InSize,
- LPVOID InData,
- INT OutSize,
- LPVOID OutData)
-{
- if (Escape == QUERYESCSUPPORT)
- return FALSE;
-
- DPRINT1("IntEngExtEscape is unimplemented. - Keep going and have a nice day\n");
- return -1;
-}
-
-INT
-STDCALL
+APIENTRY
IntGdiExtEscape(
PDC dc,
INT Escape,
INT OutSize,
LPSTR OutData)
{
- BITMAPOBJ *BitmapObj = BITMAPOBJ_LockBitmap(dc->w.hBitmap);
+ SURFACE *psurf = dc->dclevel.pSurface;
INT Result;
- /* FIXME - Handle BitmapObj == NULL !!!!!! */
-
- if ( NULL == dc->DriverFunctions.Escape )
+ if (!dc->ppdev->DriverFunctions.Escape)
{
- Result = IntEngExtEscape(
- &BitmapObj->SurfObj,
- Escape,
- InSize,
- (PVOID)((ULONG_PTR)InData),
- OutSize,
- (PVOID)OutData);
+ Result = 0;
}
else
{
- Result = dc->DriverFunctions.Escape(
- &BitmapObj->SurfObj,
+ Result = dc->ppdev->DriverFunctions.Escape(
+ psurf ? &psurf->SurfObj : NULL,
Escape,
InSize,
(PVOID)InData,
OutSize,
(PVOID)OutData );
}
- BITMAPOBJ_UnlockBitmap(BitmapObj);
return Result;
}
INT
-STDCALL
+APIENTRY
NtGdiExtEscape(
HDC hDC,
IN OPTIONAL PWCHAR pDriver,
INT OutSize,
OPTIONAL LPSTR UnsafeOutData)
{
- PDC pDC = DC_LockDc(hDC);
+ PDC pDC;
LPVOID SafeInData = NULL;
LPVOID SafeOutData = NULL;
NTSTATUS Status = STATUS_SUCCESS;
INT Result;
+ if (hDC == 0)
+ {
+ hDC = UserGetWindowDC(NULL);
+ }
+
+ pDC = DC_LockDc(hDC);
if ( pDC == NULL )
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
return -1;
}
- if ( pDC->IsIC )
+ if ( pDC->dctype == DC_TYPE_INFO)
{
DC_UnlockDc(pDC);
return 0;
if ( InSize && UnsafeInData )
{
- _SEH_TRY
+ _SEH2_TRY
{
ProbeForRead(UnsafeInData,
InSize,
1);
}
- _SEH_HANDLE
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- Status = _SEH_GetExceptionCode();
+ Status = _SEH2_GetExceptionCode();
}
- _SEH_END;
-
+ _SEH2_END;
+
if (!NT_SUCCESS(Status))
{
DC_UnlockDc(pDC);
SetLastNtError(Status);
return -1;
}
-
+
SafeInData = ExAllocatePoolWithTag ( PagedPool, InSize, TAG_PRINT );
if ( !SafeInData )
{
SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
return -1;
}
-
- _SEH_TRY
+
+ _SEH2_TRY
{
/* pointers were already probed! */
RtlCopyMemory(SafeInData,
UnsafeInData,
InSize);
}
- _SEH_HANDLE
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- Status = _SEH_GetExceptionCode();
+ Status = _SEH2_GetExceptionCode();
}
- _SEH_END;
+ _SEH2_END;
if ( !NT_SUCCESS(Status) )
{
- ExFreePool ( SafeInData );
+ ExFreePoolWithTag ( SafeInData, TAG_PRINT );
DC_UnlockDc(pDC);
SetLastNtError(Status);
return -1;
if ( OutSize && UnsafeOutData )
{
- _SEH_TRY
+ _SEH2_TRY
{
ProbeForWrite(UnsafeOutData,
OutSize,
1);
}
- _SEH_HANDLE
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- Status = _SEH_GetExceptionCode();
+ Status = _SEH2_GetExceptionCode();
}
- _SEH_END;
+ _SEH2_END;
if (!NT_SUCCESS(Status))
{
SetLastNtError(Status);
goto freeout;
}
-
+
SafeOutData = ExAllocatePoolWithTag ( PagedPool, OutSize, TAG_PRINT );
if ( !SafeOutData )
{
SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
freeout:
if ( SafeInData )
- ExFreePool ( SafeInData );
+ ExFreePoolWithTag ( SafeInData, TAG_PRINT );
DC_UnlockDc(pDC);
return -1;
}
DC_UnlockDc(pDC);
if ( SafeInData )
- ExFreePool ( SafeInData );
+ ExFreePoolWithTag ( SafeInData ,TAG_PRINT );
if ( SafeOutData )
{
- _SEH_TRY
+ _SEH2_TRY
{
/* pointers were already probed! */
RtlCopyMemory(UnsafeOutData,
SafeOutData,
OutSize);
}
- _SEH_HANDLE
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- Status = _SEH_GetExceptionCode();
+ Status = _SEH2_GetExceptionCode();
}
- _SEH_END;
+ _SEH2_END;
- ExFreePool ( SafeOutData );
+ ExFreePoolWithTag ( SafeOutData, TAG_PRINT );
if ( !NT_SUCCESS(Status) )
{
SetLastNtError(Status);
return Result;
}
-INT
-STDCALL
-NtGdiSetAbortProc(HDC hDC,
- ABORTPROC AbortProc)
-{
- UNIMPLEMENTED;
- return 0;
-}
-
INT
APIENTRY
NtGdiStartDoc(
}
INT
-STDCALL
+APIENTRY
NtGdiStartPage(HDC hDC)
{
UNIMPLEMENTED;