Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

140 lines
4.6 KiB

/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
whwin32p.h
Abstract:
Private header for whwin32.
Author:
Revision History:
--*/
#define _WOW64DLLAPI_
#include "nt32.h"
#include "cgenhdr.h"
#include <stdio.h>
#include <stdlib.h>
#include <windef.h>
#include "wow64thk.h"
#include "cscall.h"
// Make the compiler more strict.
#pragma warning(1:4033) // function must return a value
#pragma warning(1:4035) // no return value
#pragma warning(1:4702) // Unreachable code
#pragma warning(1:4705) // Statement has no effect
typedef struct _NTUSERMESSAGECALL_PARMS {
HWND hwnd;
UINT msg;
// WPARAM wParam;
// LPARAM lParam;
ULONG_PTR xParam;
DWORD xpfnProc;
BOOL bAnsi;
} NTUSERMESSAGECALL_PARMS, *PNTUSERMESSAGECALL_PARMS;
#define ALIGN4(X) (((X) + 3) & ~3)
// Redefine WOW64_ISPTR to be the USER32 IS_PTR
#undef WOW64_ISPTR
#define WOW64_ISPTR IS_PTR
typedef LONG_PTR (*PMSG_THUNKCB_FUNC)(WPARAM wParam, LPARAM lParam, PVOID pContext);
typedef LONG_PTR (*PMSG_THUNK_FUNC)(PMSG_THUNKCB_FUNC wrapfunc, WPARAM wParam, LPARAM lParam, PVOID pContext);
LONG_PTR Wow64DoMessageThunk(PMSG_THUNKCB_FUNC func, UINT msg, WPARAM wParam, LPARAM lParam, PVOID pContext);
// WM_SYSTIMER messages have a kernel mode proc address
// stuffed in the lParam. Forunately the address will
// allways be in win32k.sys so the hi bits will be the same
// for all kprocs. On the first WM_SYSTIMER message
// we save the hi bits here, and restore them when we go
// back to the kernel.
extern DWORD gdwWM_SYSTIMERProcHiBits;
#if DBG
extern CHAR* apszSimpleCallNames[];
#endif
extern CONST ULONG ulMaxSimpleCall;
#if defined(WOW64DOPROFILE)
extern WOW64SERVICE_PROFILE_TABLE_ELEMENT SimpleCallProfileElements[];
extern WOW64SERVICE_PROFILE_TABLE NtUserCallNoParamProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallOneParamProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallHwndProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallHwndOptProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallHwndParamProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallHwndLockProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallHwndParamLockProfileTable;
extern WOW64SERVICE_PROFILE_TABLE NtUserCallTwoParamProfileTable;
#endif
PMSG Wow64ShallowThunkMSG32TO64(PMSG pMsg64, NT32MSG *pMsg32);
NT32MSG *Wow64ShallowThunkMSG64TO32(NT32MSG *pMsg32, PMSG pMsg64);
PEVENTMSG Wow64ShallowThunkEVENTMSG32TO64(PEVENTMSG pMsg64, NT32EVENTMSG *pMsg32);
NT32EVENTMSG *Wow64ShallowThunkEVENTMSG64TO32(NT32EVENTMSG *pMsg32, PEVENTMSG pMsg64);
LPHELPINFO Wow64ShallowAllocThunkHELPINFO32TO64(NT32HELPINFO *pHelp32);
NT32HELPINFO *Wow64ShallowAllocThunkHELPINFO64TO32(LPHELPINFO pHelp64);
LPHLP Wow64ShallowAllocThunkHLP32TO64(NT32HLP *pHlp32);
NT32HLP *Wow64ShallowAllocThunkHLP64TO32(LPHLP pHlp64);
PWND Wow64ValidateHwnd(HWND h);
// prototypes for DX thunk helpers
VOID Wow64GdiDdThunkSurfaceHandlesPreCall(
IN OUT HANDLE **pSurface,
IN NT32HANDLE *pSurfaceHost,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkSurfaceLocalPreCall(
IN OUT PDD_SURFACE_LOCAL * pDdSurfaceLocal,
IN struct NT32_DD_SURFACE_LOCAL * pDdSurfaceLocal32,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkSurfaceLocalPostCall(
IN OUT PDD_SURFACE_LOCAL pDdSurfaceLocal,
IN struct NT32_DD_SURFACE_LOCAL * pDdSurfaceLocal32,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkSurfaceGlobalPreCall(
IN OUT PDD_SURFACE_GLOBAL * pDdSurfaceGlobal,
IN struct NT32_DD_SURFACE_GLOBAL * pDdSurfaceGlobal32,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkSurfaceGlobalPostCall(
IN PDD_SURFACE_GLOBAL pDdSurfaceGlobal,
IN OUT struct NT32_DD_SURFACE_GLOBAL * pDdSurfaceGlobal32,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkSurfaceMorePreCall(
IN OUT PDD_SURFACE_MORE * pDdSurfaceMore,
IN struct NT32_DD_SURFACE_MORE * pDdSurfaceMore32,
IN DWORD dwCount
);
VOID Wow64GdiDdThunkBltDataPreCall(
IN OUT PDD_BLTDATA * pDdBltData,
IN struct NT32_DD_BLTDATA * pDdBltData32
);
VOID Wow64GdiDdThunkSurfaceDescriptionPreCall(
IN OUT DDSURFACEDESC ** pDdSurfaceDesc,
IN struct NT32_DDSURFACEDESC * pDdSurfaceDesc32,
IN DWORD bThunkAsSurfaceDesc2,
IN DWORD dwCount
);