summaryrefslogtreecommitdiffstats
path: root/private/os2/inc/conrqust.h
blob: 4f304483494e52a4cb855d328690beede00d5640 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

#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