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.
 
 
 
 
 
 

125 lines
3.2 KiB

#ifndef __UMPDHXX__
#define __UMPDHXX__
typedef struct ProxyPort
{
HANDLE PortHandle;
HANDLE SectionHandle;
RTL_CRITICAL_SECTION semPort;
KPBYTE ClientMemoryBase;
SIZE_T ClientMemorySize;
KPBYTE ServerMemoryBase;
KERNEL_INT_PTR ServerMemoryDelta;
ULONG ClientMemoryAllocSize;
} ProxyPort, *PProxyPort;
class PROXYPORT
{
private:
ProxyPort *pp;
public:
PROXYPORT(ULONGLONG inMaxSize);
PROXYPORT(ProxyPort *ppIn) {pp = ppIn; AcquirePortAccess();}
~PROXYPORT() {ReleasePortAccess();}
BOOL bValid() { return (pp != NULL); }
ProxyPort *GetPort() { return pp; }
void Close();
void Shutdown() { DELETECRITICALSECTION(&pp->semPort); }
void AcquirePortAccess()
{
ASSERTGDI(pp, "PROXYPORT:GetPortAccess() NULL psemPort\n");
if (pp)
{
ENTERCRITICALSECTION(&pp->semPort);
}
}
void ReleasePortAccess()
{
if (pp)
{
LEAVECRITICALSECTION(&pp->semPort);
}
}
void HeapInit()
{
pp->ClientMemoryAllocSize = 0;
}
SERVERPTR HeapAlloc(ULONG inSize);
CLIENTPTR ServerToClientPtr(SERVERPTR ptr)
{
return (ptr ? (CLIENTPTR)((PBYTE) ptr - pp->ServerMemoryDelta) : NULL);
}
BOOL ThunkMemBlock(KPBYTE * ptr, ULONG size);
BOOL ThunkStr(LPWSTR * ioLpstr);
PPORT_MESSAGE
InitMsg(PPROXYMSG Msg, SERVERPTR pvIn, ULONG cjIn, SERVERPTR pvOut, ULONG cjOut);
BOOL
CheckMsg(NTSTATUS Status, PPROXYMSG Msg, SERVERPTR pvOut, ULONG cjOut);
NTSTATUS
SendRequest(SERVERPTR pvIn, ULONG cjIn, SERVERPTR pvOut, ULONG cjOut);
KERNEL_PVOID
LoadDriver(PDRIVER_INFO_5W pDriverInfo, LPWSTR pwstrPrinterName, PRINTER_DEFAULTSW *pdefaults, HANDLE hPrinter32);
void
UnloadDriver(KERNEL_PVOID umpdCookie, HANDLE hPrinter32, BOOL bNotifySpooler);
int
DocumentEvent(KERNEL_PVOID umpdCookie,
HANDLE hPrinter32,
HDC hdc,
INT iEsc,
ULONG cjIn,
PVOID pulIn,
ULONG cjOut,
PVOID pulOut);
DWORD
StartDocPrinterW(KERNEL_PVOID umpdCookie,
HANDLE hPrinter32,
DWORD level,
LPBYTE pDocInfo);
BOOL
StartPagePrinter(KERNEL_PVOID umpdCookie, HANDLE hPrinter32);
BOOL
EndPagePrinter(KERNEL_PVOID umpdCookie, HANDLE hPrinter32);
BOOL
EndDocPrinter(KERNEL_PVOID umpdCookie, HANDLE hPrinter32);
BOOL
AbortPrinter(KERNEL_PVOID umpdCookie, HANDLE hPrinter32);
BOOL
ResetPrinterW(KERNEL_PVOID umpdCookie,HANDLE hPrinter32,PRINTER_DEFAULTSW *pPtrDef);
BOOL
QueryColorProfile(KERNEL_PVOID umpdCookie,
HANDLE hPrinter32,
PDEVMODEW pDevMode,
ULONG ulQueryMode,
PVOID pvProfileData,
ULONG* pcjProfileSize,
FLONG* pflProfileFlag);
};
extern "C" void vUMPDWow64Shutdown();
#endif