mirror of https://github.com/lianthony/NT4.0
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.
306 lines
10 KiB
306 lines
10 KiB
/*++
|
|
|
|
Copyright (c) 1990 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
pmnt.h
|
|
|
|
Abstract:
|
|
|
|
This is the include file that defines all constants and types for
|
|
the PMNTDD device & the PMNT.DLL services.
|
|
Define INCL_32BIT before #include statement if and only if this file is
|
|
included by a 32-bit C module (ie OS/2 ss or PMNTDD.SYS).
|
|
|
|
Author:
|
|
|
|
Patrick Questembert (PatrickQ) 03-Aug-1992.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _PMNTINCLUDE_
|
|
#define _PMNTINCLUDE_
|
|
|
|
#ifndef INCL_32BIT
|
|
#define INCL_16BIT
|
|
#endif // INCL_32BIT
|
|
|
|
#define PMNT_DAYTONA 1 // Define this ONLY for post 570 builds (i.e. DAYTONA)
|
|
|
|
/***************************************************************************/
|
|
/* Below is the structure returned by the 32-bit code down to PM from the */
|
|
/* ReadConsoleInputA API. This */
|
|
/* duplicates the WIN32 Console structure (29 Nov 92) - it is defined here */
|
|
/* so that the 16-bit PM code is unaffected by possible changes to the */
|
|
/* WIN32 structure. */
|
|
/***************************************************************************/
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack(1)
|
|
#endif
|
|
|
|
typedef struct _PM_KEY_INPUT_RECORD {
|
|
UCHAR monflags;
|
|
UCHAR scancode;
|
|
UCHAR xlatedchar;
|
|
UCHAR xlatedscan;
|
|
USHORT shiftDBCS;
|
|
USHORT shiftstate;
|
|
ULONG time;
|
|
USHORT ddflags;
|
|
} PM_KEY_INPUT_RECORD;
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack ()
|
|
#endif
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack(4) // Because the structures below will come from NT
|
|
#endif
|
|
|
|
typedef struct _PMNT_KEY_EVENT_RECORD {
|
|
ULONG bKeyDown; // ULONG instead of BOOL
|
|
USHORT wRepeatCount; // USHORT instead of WORD
|
|
USHORT wVirtualKeyCode; // USHORT instead of WORD
|
|
USHORT wVirtualScanCode; // USHORT instead of WORD
|
|
union {
|
|
USHORT UnicodeChar; // USHORT instead of WCHAR
|
|
CHAR AsciiChar;
|
|
} uChar;
|
|
ULONG dwControlKeyState; // ULONG instead of DWORD
|
|
} PMNT_KEY_EVENT_RECORD;
|
|
|
|
typedef struct _PMNT_COORD {
|
|
SHORT X;
|
|
SHORT Y;
|
|
} PMNT_COORD;
|
|
|
|
typedef struct _PMNT_MOUSE_EVENT_RECORD {
|
|
PMNT_COORD dwMousePosition; // PMNT_COORD instead of COORD
|
|
ULONG dwButtonState; // ULONG instead of DWORD
|
|
ULONG dwControlKeyState; // ULONG instead of DWORD
|
|
ULONG dwEventFlags; // ULONG instead of DWORD
|
|
} PMNT_MOUSE_EVENT_RECORD;
|
|
|
|
typedef struct _PMNT_WINDOW_BUFFER_SIZE_RECORD {
|
|
PMNT_COORD dwSize;
|
|
} PMNT_WINDOW_BUFFER_SIZE_RECORD;
|
|
|
|
typedef struct _PMNT_MENU_EVENT_RECORD {
|
|
unsigned int dwCommandId;
|
|
} PMNT_MENU_EVENT_RECORD;
|
|
|
|
typedef struct _PMNT_FOCUS_EVENT_RECORD {
|
|
ULONG bSetFocus; // ULONG instead of BOOL
|
|
} PMNT_FOCUS_EVENT_RECORD;
|
|
|
|
typedef struct _PMNT_INPUT_RECORD {
|
|
USHORT EventType;
|
|
union {
|
|
PMNT_KEY_EVENT_RECORD KeyEvent;
|
|
PMNT_MOUSE_EVENT_RECORD MouseEvent;
|
|
PMNT_WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
|
PMNT_MENU_EVENT_RECORD MenuEvent;
|
|
PMNT_FOCUS_EVENT_RECORD FocusEvent;
|
|
} Event;
|
|
} PMNT_INPUT_RECORD;
|
|
|
|
#define PMNT_KEY_EVENT 0x0001 // Event contains key event record
|
|
#define PMNT_MOUSE_EVENT 0x0002 // Event contains mouse event record
|
|
#define PMNT_WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
|
|
#define PMNT_MENU_EVENT 0x0008 // Event contains menu event record
|
|
#define PMNT_FOCUS_EVENT 0x0010 // event contains focus change
|
|
|
|
/* Flags for the WIN32 Console mouse event mask */
|
|
#define PMNT_MOUSE_CLICK 0x0000
|
|
#define PMNT_MOUSE_MOVED 0x0001
|
|
#define PMNT_DOUBLE_CLICK 0x0002
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack(1)
|
|
#endif
|
|
|
|
typedef struct _PM_MOUSE_INPUT_RECORD {
|
|
USHORT EventMask;
|
|
ULONG Time;
|
|
USHORT absY;
|
|
USHORT absX;
|
|
} PM_MOUSE_INPUT_RECORD;
|
|
|
|
#define PMNT_SQ_KBD 1 /* See ..\h\pmwinp.h, SQ_XXX */
|
|
#define PMNT_SQ_MOU 2
|
|
|
|
typedef struct _PM_INPUT_RECORD {
|
|
USHORT EventType;
|
|
union
|
|
{
|
|
PM_KEY_INPUT_RECORD KeyEvent;
|
|
PM_MOUSE_INPUT_RECORD MouseEvent;
|
|
} Event;
|
|
} PM_INPUT_RECORD;
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack ()
|
|
#endif
|
|
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack (4) /* Because structures are aligned to DWORD in 32-bit DLL */
|
|
#endif
|
|
|
|
#ifndef INCL_16BIT
|
|
#if DBG
|
|
#define KdPrint(_x_) DbgPrint _x_
|
|
#else
|
|
#define KdPrint(_x_)
|
|
#endif // else of DBG
|
|
#endif // else of INCL_16BIT
|
|
|
|
/***************************************************************************/
|
|
/* PMNTDD.SYS definitions */
|
|
/***************************************************************************/
|
|
|
|
#define IOCTL_PMNT_IO_MAP 0L
|
|
#define IOCTL_PMNT_MEM_MAP 1L
|
|
#define IOCTL_PMNT_REGISTER_HARDWARE 2L
|
|
|
|
#ifndef INCL_16BIT
|
|
#include "devioctl.h"
|
|
|
|
#define PMNTDD_DEVICE_TYPE FILE_DEVICE_BEEP
|
|
|
|
#define PMNTDD_DEVICE_NAME "\\Device\\PMNTDD"
|
|
#define PMNTDD_DEVICE_NAME_U L"\\Device\\PMNTDD"
|
|
|
|
#define IOCTL_PMNTDD_IO_MAP CTL_CODE((unsigned long)PMNTDD_DEVICE_TYPE, IOCTL_PMNT_IO_MAP, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_PMNTDD_MEM_MAP CTL_CODE((unsigned long)PMNTDD_DEVICE_TYPE, IOCTL_PMNT_MEM_MAP, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_PMNTDD_REGISTER_HARDWARE \
|
|
CTL_CODE((unsigned long)PMNTDD_DEVICE_TYPE, IOCTL_PMNT_REGISTER_HARDWARE, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#endif // ndef INCL_16BIT
|
|
|
|
/* Data types for the PMNTRegisterDisplayHardware routine */
|
|
|
|
#define PMNT_IOPM_DATA_TYPE_PORT 0L
|
|
#define PMNT_IOPM_DATA_TYPE_MEMORY 1L
|
|
|
|
typedef struct _PMNT_IOPM_DATA_ENTRY {
|
|
ULONG Base;
|
|
ULONG Length;
|
|
} PMNT_IOPM_DATA_ENTRY, *PPMNT_IOPM_DATA_ENTRY;
|
|
|
|
typedef struct _PMNT_IOPM_DATA {
|
|
ULONG EntryType; // PMNT_IOPM_DATA_TYPE_PORT or PMNT_IOPM_DATA_TYPE_MEMORY
|
|
ULONG NumEntries;
|
|
PMNT_IOPM_DATA_ENTRY Entry[1];
|
|
} PMNT_IOPM_DATA, *PPMNT_IOPM_DATA;
|
|
|
|
typedef struct _PMNT_IOPM_IOCTL_DATA
|
|
{
|
|
ULONG ThreadHandle;
|
|
PMNT_IOPM_DATA DriverData;
|
|
} PMNT_IOPM_IOCTL_DATA, *PPMNT_IOPM_IOCTL_DATA;
|
|
|
|
/* Data types for the PMNTMemMap routine */
|
|
|
|
//BUGBUG - needed anymore ???
|
|
typedef struct _PMNT_MEM_DATA
|
|
{
|
|
ULONG PhysicalAddress;
|
|
ULONG VirtualAddress;
|
|
ULONG Length;
|
|
} PMNT_MEM_DATA, *PPMNT_MEM_DATA;
|
|
|
|
typedef struct _PMNT_MEMMAP_RESULTS
|
|
{
|
|
ULONG VirtualAddress;
|
|
ULONG Length;
|
|
} PMNT_MEMMAP_RESULTS;
|
|
|
|
/* Data structure for passing parameters to PMNTDD.SYS via PMNT.DLL */
|
|
typedef struct _PMNT_IOCTL_DD_IOCTL_PARAMS
|
|
{
|
|
ULONG Request;
|
|
ULONG InputBuffer;
|
|
ULONG InputBufferLength;
|
|
ULONG OutputBuffer;
|
|
ULONG OutputBufferLength;
|
|
} PMNT_IOCTL_DD_IOCTL_PARAMS;
|
|
|
|
/* IOCTL codes for the PMNT.DLL PMNTIOCTL service */
|
|
#define PMNT_IOCTL_DD_IOCTL 2 /* PMNTDD.SYS IOCTL services */
|
|
#define PMNT_IOCTL_DUMP_SEGMENT_TABLE 3 /* Debug service - dump segment table */
|
|
#define PMNT_IOCTL_HIDE_WIN32_WINDOW 4 /* Hide WIN32 Console window - for CBA */
|
|
|
|
#ifdef INCL_16BIT
|
|
#pragma pack () /* Restore default */
|
|
#endif
|
|
|
|
#ifdef INCL_16BIT
|
|
/***************************************************************************/
|
|
/* PMNT.DLL exported services which can be called directly without using */
|
|
/* PMNT.LIB. */
|
|
/***************************************************************************/
|
|
extern VOID APIENTRY PMNTSetFullScreen(USHORT Register);
|
|
extern USHORT APIENTRY PMNTGetWin32Hwnd(ULONG far *pWin32ShellHwnd);
|
|
extern USHORT APIENTRY PMNTSetFocus(ULONG Win32Hwnd);
|
|
extern USHORT APIENTRY PMNTCloseWindow(VOID);
|
|
extern USHORT APIENTRY PMNTGetNextEvent(PMNT_INPUT_RECORD far *ppm_input_rec);
|
|
extern USHORT APIENTRY PMNTGetPgmName(char far *Buffer, short BufferLength);
|
|
extern USHORT APIENTRY PMNTSetConsoleTitle(PSZ Buffer);
|
|
extern USHORT APIENTRY PMNTGetFullScreen(ULONG Operation);
|
|
extern USHORT APIENTRY PMNTIOCTL(USHORT req, PVOID pin, PVOID pout);
|
|
extern VOID APIENTRY PMNTDbgPrint(PSZ str, ULONG l1, ULONG l2, ULONG l3, ULONG l4);
|
|
extern USHORT APIENTRY PMNTMemMap(PUSHORT PSel);
|
|
extern USHORT APIENTRY PMNTSetPMshellFlag(VOID);
|
|
extern VOID APIENTRY PMNTGetSystemTime(PULONG pTime);
|
|
extern USHORT APIENTRY PMNTRegisterDisplayAdapter(PMNT_IOPM_DATA far *MemoryRange, PMNT_IOPM_DATA far *IORange, USHORT col, USHORT row);
|
|
extern USHORT APIENTRY PMNTIOMap(VOID);
|
|
extern USHORT APIENTRY PMNTIsSessionRoot(VOID);
|
|
extern USHORT APIENTRY PMNTIdentifyCodeSelector( USHORT, PVOID );
|
|
extern USHORT APIENTRY PMNTCreateHiddenThread(PVOID pfnFun, PUSHORT pTid, PBYTE pbStack);
|
|
extern USHORT APIENTRY PMNTProcessIsPMShell(VOID);
|
|
extern USHORT APIENTRY PMNTQueryScreenSize(PUSHORT xRight, PUSHORT yTop);
|
|
extern USHORT APIENTRY PMNTCreateFontIndirect(PVOID lplf);
|
|
extern USHORT APIENTRY PMNTGetTextMetrics(ULONG ulFont, PVOID lptm);
|
|
extern USHORT APIENTRY PMNTGetStringBitmap(ULONG ulFont, PSZ lpszStr, ULONG cbStr, ULONG cbData, PVOID lpSB);
|
|
extern USHORT APIENTRY PMNTDeleteObject(ULONG ulFont);
|
|
extern USHORT APIENTRY PMNTGetEUDCTimeStamp(VOID);
|
|
extern USHORT APIENTRY PMNTDisableWin32IME(VOID);
|
|
extern USHORT APIENTRY PMNTSetShutdownPriority(ULONG NewPriority, USHORT Disable);
|
|
|
|
/***************************************************************************/
|
|
/* Services provided by PMNT.LIB */
|
|
/***************************************************************************/
|
|
extern VOID _cdecl far PMNTPrint(PSZ str, ...);
|
|
extern USHORT _cdecl far PMNTCreateThread(PFN Thread, USHORT StackSize);
|
|
#endif // INCL_16BIT
|
|
|
|
#ifdef INCL_32BIT
|
|
/* Values returned by the server to specify type of application loaded */
|
|
#define APPTYPE_CHARMODE 0
|
|
#define APPTYPE_PM 1
|
|
#define APPTYPE_PMSHELL 2
|
|
#define APPTYPE_PMSHELL_CHILD 4
|
|
|
|
extern ULONG PMFlags;
|
|
|
|
#define ProcessIsPMProcess() (PMFlags & APPTYPE_PM)
|
|
#define ProcessIsPMShell() (PMFlags & APPTYPE_PMSHELL)
|
|
#define ProcessIsPMApp() (ProcessIsPMProcess() && !ProcessIsPMShell())
|
|
#define ProcessIsPMShellChild() (PMFlags & APPTYPE_PMSHELL_CHILD)
|
|
#define SetPMShellFlag() PMFlags |= APPTYPE_PMSHELL;
|
|
#define SetPMAppFlag() PMFlags |= APPTYPE_PM;
|
|
|
|
/***************************************************************************/
|
|
/* PM\NT specific error codes and popup */
|
|
/***************************************************************************/
|
|
#define ERROR_PMSHELL_NOT_UP 0xff01
|
|
#define ERROR_2ND_PMSHELL 0xff02
|
|
#define ERROR_PMSHELL_FULLSCREEN 0xff03
|
|
extern VOID Ow2PMShellErrorPopup(PSZ AppName,int rc);
|
|
#endif //INCL_32BIT
|
|
|
|
#endif /* _PMNTINCLUDE_ */
|