#define NTOS2_ONLY
#include "sesport.h"
#include "os2err.h"
/*
* Routines defined in conrqust.c to send requests to OS2.EXE
*/
APIRET
SendCtrlConsoleRequest(
IN OUT PSCREQUESTMSG Request,
IN PCH OutBuffer,
OUT PCH InBuffer,
IN HANDLE hSem
);
APIRET
Od2CallRootProcessThruLPC(
IN OUT PSCREQUESTMSG Request,
IN PCH OutBuffer,
OUT PCH InBuffer,
IN HANDLE hSem,
IN ULONG ArgLength
);
APIRET
Od2LockCtrlRequestDataBuffer();
VOID
Od2UnlockCtrlRequestDataBuffer();
APIRET
Od2RemoveConsoleThread();
APIRET
Od2RestartConsoleThread();
APIRET
Od2AddWin32ChildProcess();
APIRET
Od2RemoveWin32ChildProcess();
/*
* Routines in "VIO" (vio/kbd/mou) that are called from dllremot.c or
* dllmisc.c(DosDevIOCtl)
*/
APIRET KbdOpenLogHandle(PHANDLE);
APIRET RemoteCloseHandle(HANDLE Handle);
NTSTATUS CtrlCloseHandle(IN HANDLE hFile);
APIRET KbdRead(IN PFILE_HANDLE hFileRecord, OUT PCH Buffer, IN ULONG Length,
OUT PULONG BytesRead, IN KBDREQUESTNUMBER RequestType);
APIRET VioWrite(IN PFILE_HANDLE hFileRecord, IN PCH Buffer, IN ULONG Length,
OUT PULONG BytesWritten, IN VIOREQUESTNUMBER RequestType);
APIRET DevMouOpen(OUT PHANDLE FileHandle);
APIRET DevMouClose();
APIRET KbdDupLogHandle( IN HANDLE hKbd);
APIRET OpenLVBsection(VOID);
APIRET Od2WaitForSingleObject(IN HANDLE Handle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL);
APIRET DosMonReg( IN ULONG hMon, IN PBYTE pInBuffer, IN PBYTE pOutBuffer,
IN ULONG fPosition, IN ULONG usIndex);
APIRET KbdCharIn(OUT PKBDKEYINFO Info, IN ULONG Wait, IN ULONG hKbd);
APIRET KbdPeek(OUT PKBDKEYINFO Info, IN ULONG hKbd);
APIRET KbdGetFocus( IN ULONG Wait, IN ULONG hKbd);
APIRET MouDrawPtr(IN ULONG hMou);
APIRET MouGetDevStatus(OUT PUSHORT DevStatus, IN ULONG hMou);
APIRET MouGetEventMask(OUT PUSHORT EventMask, IN ULONG hMou);
APIRET MouGetNumButtons(OUT PUSHORT NumButtons, IN ULONG hMou);
APIRET MouGetNumMickeys(OUT PUSHORT NumMickeys, IN ULONG hMou);
APIRET MouGetNumQueEl(OUT PMOUQUEINFO NumQueEl, IN ULONG hMou);
APIRET MouGetPtrPos(OUT PPTRLOC PtrPos, IN ULONG hMou);
APIRET MouGetPtrShape(OUT PBYTE PtrMask, OUT PPTRSHAPE PtrShape, IN ULONG hMou);
APIRET MouGetScaleFact(OUT PSCALEFACT ScaleFact, IN ULONG hMou);
APIRET MouReadEventQue(OUT PMOUEVENTINFO MouEvent, IN PUSHORT Wait, IN ULONG hMou);
APIRET MouRemovePtr(IN PNOPTRRECT Rect, IN ULONG hMou);
APIRET MouSetDevStatus(IN PUSHORT DevStatus, IN ULONG hMou);
APIRET MouSetEventMask(IN PUSHORT EventMask, IN ULONG hMou);
APIRET MouSetPtrPos(IN PPTRLOC PtrPos, IN ULONG hMou);
APIRET MouSetPtrShape(IN PBYTE PtrMask, IN PPTRSHAPE PtrShape, IN ULONG hMou);
APIRET MouSetScaleFact(IN PSCALEFACT ScaleFact, IN ULONG hMou);
APIRET KbdGetCpId(OUT PUSHORT pIdCodePage, IN ULONG hKbd);
APIRET KbdGetInputMode(OUT PBYTE pInputMode, IN ULONG hKbd);
APIRET KbdGetInterimFlag(OUT PBYTE pInterimFlag, IN ULONG hKbd);
APIRET KbdGetKbdType(OUT PUSHORT pKbdType, IN ULONG hKbd);
APIRET KbdGetHotKey(IN PUSHORT pParm, OUT PBYTE pHotKey, IN ULONG hKbd);
APIRET KbdGetShiftState(OUT PBYTE pvData, IN ULONG hDev);
APIRET KbdSetInputMode(IN BYTE InputMode, IN ULONG hDev);
APIRET KbdSetInterimFlag(IN BYTE InterimFlag, IN ULONG hDev);
APIRET KbdSetShiftState(OUT PBYTE pvData, IN ULONG hDev);
APIRET KbdSetTypamaticRate(IN PBYTE pRateDelay, IN ULONG hDev);
APIRET MouAllowPtrDraw(IN ULONG hMou);
APIRET MouScreenSwitch(IN PBYTE pScreenGroup, IN ULONG hMou);
/*
* pointer to section of all-session-group parm
*/
POS2_SES_GROUP_PARMS SesGrp;
ULONG SesGrpId;
/*
* parameters from os2.exe ports for Vio/Kbd/Mou/Mon/Net APIs
*/
HANDLE CtrlPortHandle;
PVOID VioBuff; // LVB buffer for VIO (after got selector)
extern HANDLE FocusSemaphore;
extern HANDLE CtrlDataSemaphore;
extern HANDLE KbdDataSemaphore;
extern HANDLE MouDataSemaphore;
extern HANDLE PopUpSemaphore;
extern HANDLE ScreenLockSemaphore;
extern HANDLE PauseEvent;
extern HANDLE Od2VioWriteSemHandle;
USHORT MoniorOpenedForThisProcess;
#if DBG
//
// conrqust.c
//
VOID
AcquireStdHandleLock(
IN PSZ CallingRoutine
);
VOID
ReleaseStdHandleLock(
IN PSZ CallingRoutine
);
#else
VOID
AcquireStdHandleLock(
);
VOID
ReleaseStdHandleLock(
);
#endif
#if DBG
#define UNSUPPORTED_API() \
DbgPrint("%s Not Implemented Yet\n", FuncName); \
/* DbgUserBreakPoint(); */ \
return NO_ERROR;
#else
#define UNSUPPORTED_API() \
/* DbgUserBreakPoint(); */ \
return NO_ERROR;
#endif