/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
os2win.h
Abstract:
Prototypes for win32 functions that are called from NT only os2ss files.
Author:
Yaron Shamir (yarons) 2-Nov-1992
Environment:
User Mode Only
Revision History:
--*/
#ifndef _WINDOWS_
#ifndef DWORD
typedef long int DWORD;
#endif
typedef unsigned short WORD;
typedef unsigned int UINT;
#define APIENTRY
#ifndef BOOL
typedef long int BOOL;
#endif
#ifndef LPBOOL
typedef BOOL *LPBOOL;
#endif
//
// Termination commands - communication to Os2TerminationThread (srvwin.c)
//
typedef enum _OS2_TERMCMD_TYPE {
Os2TerminateProcess = 1,
Os2TerminateThread,
Os2MaxTermCmd
} OS2_TERMCMD_TYPE;
typedef struct _OS2_TERMCMD {
OS2_TERMCMD_TYPE op;
HANDLE Handle;
PVOID Param1;
PVOID Param2;
} OS2_TERMCMD, *POS2_TERMCMD;
// winbase.h
#ifndef WAIT_FAILED
#define WAIT_FAILED (DWORD)0xFFFFFFFF
#endif
#if PMNT
ULONG
SetThreadAffinityMask(
HANDLE hThread,
DWORD dwThreadAffinityMask
);
#endif // PMNT
ULONG
GetCurrentProcessId(
VOID
);
HANDLE
GetCurrentProcess(
VOID
);
HANDLE
GetCurrentThread(
VOID
);
HANDLE
OpenProcess(
ULONG dwDesiredAccess,
BOOLEAN bInheritHandle,
ULONG dwProcessId
);
#define CREATE_SUSPENDED 0x00000004
#define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 )
#define MAX_PATH 260
#define STD_INPUT_HANDLE (ULONG)-10
#define STD_OUTPUT_HANDLE (ULONG)-11
#define STD_ERROR_HANDLE (ULONG)-12
#define INVALID_HANDLE_VALUE (HANDLE)-1
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_APPLMODAL 0x00000000L
#define MB_SETFOREGROUND 0x00010000L
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
#define RESOURCETYPE_ANY 0x00000000
typedef struct _NETRESOURCEA {
ULONG dwScope;
ULONG dwType;
ULONG dwDisplayType;
ULONG dwUsage;
PSZ lpLocalName;
PSZ lpRemoteName;
PSZ lpComment ;
PSZ lpProvider;
}NETRESOURCEA, *PNETRESOURCEA;
#ifndef PFNTHREAD
typedef ULONG (*PFNTHREAD)(
ULONG lpThreadParameter
);
#endif // PFNTHREAD
HANDLE
CreateThread(
PVOID lpThreadAttributes, // LPSECURITY_ATTRIBUTES lpThreadAttributes,
ULONG dwStackSize,
PFNTHREAD lpStartAddress,
PVOID lpParameter,
ULONG dwCreationFlags,
PULONG lpThreadId
);
VOID
ExitThread(
ULONG dwExitCode
);
ULONG
ResumeThread(
HANDLE hThread
);
BOOLEAN
TerminateThread(
HANDLE hThread,
ULONG dwExitCode
);
BOOLEAN
TerminateProcess(
HANDLE hProcess,
ULONG dwExitCode
);
VOID
Sleep(
ULONG dwMilliseconds
);
ULONG
GetTickCount(
VOID
);
#ifndef ERROR_NO_MEDIA_IN_DRIVE
#define ERROR_NO_MEDIA_IN_DRIVE 1112L
#endif
ULONG
GetLastError(
VOID
);
BOOLEAN
GetExitCodeProcess(
HANDLE hProcess,
PULONG lpExitCode
);
#ifndef INFINITE
#define INFINITE 0xFFFFFFFF // Infinite timeout
#endif
ULONG
WaitForSingleObject(
HANDLE hObject,
ULONG dwTimeout
);
BOOLEAN
WriteFile(
HANDLE hFile,
VOID *lpBuffer,
ULONG nNumberOfBytesToWrite,
PULONG lpNumberOfBytesWritten,
PVOID lpOverlapped
);
BOOLEAN
DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
PHANDLE lpTargetHandle,
ULONG dwDesiredAccess,
BOOLEAN bInheritHandle,
ULONG dwOptions
);
HANDLE
GetStdHandle(
ULONG nStdHandle
);
BOOLEAN
SetStdHandle(
ULONG nStdHandle,
HANDLE hHandle
);
BOOLEAN
CloseHandle(
HANDLE hObject
);
PVOID
GetEnvironmentStrings(
VOID
);
BOOLEAN
SetEnvironmentVariableA(
PSZ lpName,
PSZ lpValue
);
ULONG
WNetGetConnectionA(
PSZ lpName,
PSZ lpData,
PULONG pCb
);
ULONG
GetEnvironmentVariableA(
PSZ lpName,
PSZ lpBuffer,
ULONG nSize
);
BOOLEAN
SetCurrentDirectoryA(
PSZ DirectoryName);
DWORD
GetCurrentDirectoryA(
DWORD nSize,
PSZ DirectoryName);
HANDLE
OpenProcess(
ULONG dwDesiredAccess,
BOOLEAN bInheritHandle,
ULONG dwProcessId
);
VOID
ExitProcess(
int ExitCode
);
PUCHAR
GetCommandLineA(
VOID
);
int
MessageBoxExW(
HANDLE hWnd,
PWSTR lpText,
PWSTR lpCaption,
UINT uType,
WORD wLanguageId);
ULONG
SetErrorMode(
ULONG uMode
);
ULONG
GetLogicalDrives(
VOID
);
UINT
GetSystemDirectoryA(
LPSTR lpBuffer,
UINT uSize
);
UINT
GetSystemDirectoryW(
LPWSTR lpBuffer,
UINT uSize
);
ULONG
WNetAddConnection2A(
PNETRESOURCEA lpNetResource,
PSZ lpPassword,
PSZ lpUserName,
ULONG dwFlags
);
ULONG
WNetCancelConnection2A(
PSZ lpName,
ULONG dwFlags,
ULONG fForce
);
// wincon.h
BOOLEAN
SetConsoleTitleA(
PSZ lpConsoleTitle
);
#if PMNT
ULONG
GetConsoleTitleA(
PSZ lpConsoleTitle,
ULONG lConsoleTitleLength
);
#ifdef JAPAN //MSKK [ShigeO] Aug 6, 1993
// wingdi.h
HANDLE
CreateFontIndirectA(
PVOID lpLogFont
);
HANDLE
CreateDCA(
LPCSTR lpszDriver,
LPCSTR lpszDevice,
LPCSTR lpszOutput,
PVOID lpInitdata
);
BOOLEAN
GetTextMetricsA(
HANDLE hdc,
PVOID lptm
);
HANDLE
SelectObject(
HANDLE hdc,
HANDLE hgdiobj
);
UINT
GetStringBitmapA(
HANDLE hdc,
LPCSTR lpszStr,
UINT cbStr,
UINT cbData,
PVOID lpSB
);
#endif //JAPAN
#endif // PMNT
#define CTRL_C_EVENT 0
#define CTRL_BREAK_EVENT 1
#define CTRL_CLOSE_EVENT 2
// 3 is reserved!
// 4 is reserved!
#define CTRL_LOGOFF_EVENT 5
#define CTRL_SHUTDOWN_EVENT 6
BOOLEAN
GenerateConsoleCtrlEvent(
ULONG dwCtrlEvent,
ULONG dwProcessGroupId
);
// winnls.h
int
MultiByteToWideChar(
UINT CodePage,
ULONG dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
int
WideCharToMultiByte(
UINT CodePage,
ULONG dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cchMultiByte,
LPSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);
BOOLEAN
OpenIcon(
HANDLE hwnd
);
BOOLEAN
SetForegroundWindow(
HANDLE hwnd
);
ULONG
GetLogicalDrives( VOID );
#endif // _WINDOWS_
//
// Internal Routines (Ow2Xxx) to interface between client side code
// and os2ses modules which inturn call win32
//
// This bit is set in Flags for a window program. The process is created with
// CREATE_NEW_PROCESS_GROUP (which enable us to send CTRL_EVENT to all the group)
#define EXEC_WINDOW_PROGRAM 0x80000000
//
// Used to pass standard handle redir info in ExecPgm/StartSession
//
#define STDFLAG_IN 0x1L // enables stdin redir
#define STDFLAG_OUT 0x2L // enables stdout redir
#define STDFLAG_ERR 0x4L // enables stderr redir
#define STDFLAG_ALL 0x7L // mask for previous 3
#define STDFLAG_CLOSEIN 0x10L // indicates that stdin should be closed after use
#define STDFLAG_CLOSEOUT 0x20L // indicates that stdout should be closed after use
#define STDFLAG_CLOSEERR 0x40L // indicates that stderr should be closed after use
#define STDFLAG_CLOSEALL 0x70L // mask for previous 3
typedef struct _OS2_STDHANDLES {
ULONG Flags;
HANDLE StdIn;
HANDLE StdOut;
HANDLE StdErr;
} OS2_STDHANDLES, *POS2_STDHANDLES;
HANDLE
Ow2GetNulDeviceHandle(
VOID
);
ULONG
Ow2ExecPgm(
IN ULONG Flags,
IN PSZ Arguments OPTIONAL,
IN PSZ Variables OPTIONAL,
IN PSZ ImageFileName,
#if PMNT
IN ULONG IsPMApp,
#endif // PMNT
IN PVOID SessionStartData OPTIONAL,
IN POS2_STDHANDLES StdStruc,
OUT HANDLE *pHandle,
OUT HANDLE *tHandle,
OUT ULONG *dwProcessId
);
VOID
Ow2WinExitCode2ResultCode(
IN ULONG Status,
OUT PULONG pReturnCode,
OUT PULONG pExitReason
);
ULONG
Ow2HardErrorPopup(
IN int Drive,
IN BOOLEAN WriteProtectError,
OUT int * ReturnedAction,
IN PUCHAR AppName
);
ULONG
Ow2ConReadFile(
IN HANDLE hFile,
IN ULONG Length,
OUT PVOID Buffer,
OUT PULONG BytesRead
);
ULONG
Ow2ConWriteFile(
IN HANDLE hFile,
IN ULONG Length,
IN PVOID Buffer,
OUT PULONG BytesWritten
);
ULONG
Ow2ConCloseHandle(
IN HANDLE hFile
);
ULONG
Ow2ConBeep(
IN ULONG dwFreq,
IN ULONG dwDuration
);
/*
* internal vio routine to perform:
*
* VioWriteTTYStr - in viotty.c
* VioWriteCellStr - used also by violvb.c
* VioReadCellStr - used also by violvb.c
* VioGetLVBBuf - in violvb.c
* VioShowLVBBuf - in violvb.c
*/
ULONG
Ow2VioWriteTTYStr(
IN PUCHAR string,
IN ULONG Length,
IN ULONG RequestType
);
ULONG
Ow2VioWriteCellStr(
IN ULONG Length,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer
);
ULONG
Ow2VioWriteCharStr(
IN ULONG Length,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer
);
ULONG
Ow2VioWriteCharStrAtt(
IN ULONG Length,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer,
IN PUCHAR AttrBuffer
);
ULONG
Ow2VioReadCellStr(
IN OUT PULONG Length,
IN ULONG Row,
IN ULONG Col,
IN PVOID DestBuffer
);
ULONG
Ow2VioReadCharStr(
IN OUT PULONG pLength,
IN ULONG Row,
IN ULONG Col,
IN PVOID DestBuffer
);
ULONG
Ow2VioFillNChar(
IN ULONG Number,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer
);
ULONG
Ow2VioFillNAttr(
IN ULONG Number,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer
);
ULONG
Ow2VioFillNCell(
IN ULONG Number,
IN ULONG Row,
IN ULONG Col,
IN PVOID SourBuffer
);
ULONG
Ow2VioScroll(
IN PVOID VioScroll,
IN ULONG ScrollDirection
);
ULONG
Ow2VioGetConfig(
IN OUT PVOID VioConfig
);
ULONG
Ow2VioSetMode(
IN PVOID VioMode
);
ULONG
Ow2VioGetMode(
IN OUT PVOID VioMode
);
ULONG
Ow2VioSetCurPos(
IN ULONG Row,
IN ULONG Column
);
ULONG
Ow2VioGetCurPos(
IN PUSHORT pRow,
IN PUSHORT pColumn
);
ULONG
Ow2VioSetCurType(
IN PVOID VioCurType
);
ULONG
Ow2VioGetCurType(
IN OUT PVOID VioCurType
);
ULONG
Ow2VioSetNewCp(
IN ULONG CodePage
);
ULONG
Ow2VioPopUp(
ULONG PopUpMode,
PUCHAR AppName
);
ULONG
Ow2VioEndPopUp();
ULONG
Ow2VioGetLVBBuf(
IN PULONG Length
);
ULONG
Ow2VioShowLVBBuf(
IN ULONG Length,
IN ULONG Offset
);
#ifdef DBCS
// MSKK Apr.20.1993 V-AkihiS
ULONG
Ow2VioCheckCharType(
OUT PVOID pchType,
IN ULONG Row,
IN ULONG Column
);
#endif
ULONG
Ow2PrintOpen(
IN ULONG Attribute,
IN ULONG OpenFlags,
IN ULONG OpenMode,
IN PUCHAR PrinterName,
IN OUT PHANDLE phPrinter,
IN OUT PULONG Action
);
ULONG
Ow2PrintClose(
IN HANDLE hPrinter
);
ULONG
Ow2PrintWrite(
IN HANDLE hPrinter,
IN PVOID Buffer,
IN OUT PULONG Length
);
ULONG
Ow2NlsGetCtryInfo(
IN ULONG NlsCodePage,
IN ULONG NlsCountryCode,
OUT PVOID NlsCountryInfo
);
ULONG
Ow2NlsGetDBCSEn(
IN ULONG NlsCodePage,
OUT PVOID NlsDBCSVec
);
ULONG
Ow2NlsGetCollateTable(
IN ULONG NlsCodePage,
IN ULONG NlsCountryCode,
OUT PVOID NlsColateTable
);
ULONG
Ow2NlsGetCaseMapTable(
IN ULONG NlsCodePage,
IN ULONG NlsCountryCode,
OUT PVOID NlsColateTable
);
//
// Routines for displaying and filtering Exception information - os2ses\os2.c
//
ULONG
Ow2FaultFilter(
IN ULONG uFaultFilter,
IN PEXCEPTION_POINTERS lpExP);
VOID Ow2DisplayExceptionInfo( VOID );
#ifdef DBCS
// MSKK Sep.27.1993 V-AkihiS
#define Ow2NlsIsDBCSLeadByte(NlsTestChar, NlsCodePage) \
((NlsCodePage == SesGrp->PrimaryCP) || (NlsCodePage == 0)) \
? IsDBCSLeadByte(NlsTestChar) : FALSE
#endif