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.
767 lines
13 KiB
767 lines
13 KiB
/*++
|
|
|
|
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
|
|
|