reorganized some files

svn path=/trunk/; revision=2994
This commit is contained in:
Robert Kopferl 2002-05-30 15:11:47 +00:00
parent 9238b6279b
commit 3d8bcf9d02
6 changed files with 106 additions and 607 deletions

View file

@ -1,6 +1,6 @@
#include "../../dll/doscalls/doscalls.h"
#define INCL_DOSPROCESS
#include "../../include/os2.h"
void Eingang()
{

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.2 2002/03/24 18:52:10 ea Exp $
# $Id: makefile,v 1.3 2002/05/30 15:11:46 robertk Exp $
PATH_TO_TOP = ../../../..
@ -21,7 +21,7 @@ TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CLEAN = file/*.o vio/*.o sync/*.o mem/*.o \
misc/*.o mou/*.o kbd/*.o run/*.o
DOSCALLS_MISC_OBJECTS = misc/doscalls.o
DOSCALLS_MISC_OBJECTS = misc/doscalls.o file/openclose.o run/process.o devices/devices.o
#SYNC_OBJECTS =

View file

@ -1,4 +1,4 @@
/* $Id: doscalls.c,v 1.4 2002/04/18 23:49:42 robertk Exp $
/* $Id: doscalls.c,v 1.5 2002/05/30 15:11:46 robertk Exp $
*/
/*
*
@ -6,324 +6,15 @@
* PROJECT: ReactOS OS/2 sub system
* FILE: dll/doscalls.c
* PURPOSE: Kernelservices for OS/2 apps
* PROGRAMMER: Robert K. robertk@mok.lvcm.com
* PROGRAMMER: Robert K. nonvolatil@yahoo.de
* REVISION HISTORY:
* 13-03-2002 Created
*/
#include <ddk/ntddk.h>
#include "doscalls.h"
/* Process variables. This section conains
per process variables that are used for caching or
other stuff. */
DWORD PROC_Pid; // contains the current processes pid. (or is it also in PEB)
/* Implementation of the system calls */
APIRET STDCALL Dos32Sleep(ULONG msec)
{
NTSTATUS stat;
TIME Interv;
Interv.QuadPart= -(10000 * msec);
stat = NtDelayExecution( TRUE, &Interv );
return 0;
}
APIRET STDCALL Dos32CreateThread(PTID ptid, PFNTHREAD pfn,
ULONG param, ULONG flag, ULONG cbStack)
{
return 0;
}
APIRET STDCALL Dos32Open(PSZ pszFileName, PHFILE pHf,
PULONG pulAction, ULONG cbFile,
ULONG ulAttribute, ULONG fsOpenFlags,
ULONG fsOpenMode, PVOID reserved ) //ULONGPEAOP2 peaop2)
{
/* NTAPI
ZwCreateFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN PLARGE_INTEGER AllocationSize OPTIONAL,
IN ULONG FileAttributes,
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
IN PVOID EaBuffer OPTIONAL,
IN ULONG EaLength
);*/
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatusBlock;
UNICODE_STRING NtPathU;
HANDLE FileHandle;
NTSTATUS Status;
ULONG Flags = 0;
switch (dwCreationDisposition)
{
case CREATE_NEW:
dwCreationDisposition = FILE_CREATE;
break;
case CREATE_ALWAYS:
dwCreationDisposition = FILE_OVERWRITE_IF;
break;
case OPEN_EXISTING:
dwCreationDisposition = FILE_OPEN;
break;
case OPEN_ALWAYS:
dwCreationDisposition = OPEN_ALWAYS;
break;
case TRUNCATE_EXISTING:
dwCreationDisposition = FILE_OVERWRITE;
}
DPRINT("CreateFileW(lpFileName %S)\n",lpFileName);
if (dwDesiredAccess & GENERIC_READ)
dwDesiredAccess |= FILE_GENERIC_READ;
if (dwDesiredAccess & GENERIC_WRITE)
dwDesiredAccess |= FILE_GENERIC_WRITE;
if (!(dwFlagsAndAttributes & FILE_FLAG_OVERLAPPED))
{
Flags |= FILE_SYNCHRONOUS_IO_ALERT;
}
if (!RtlDosPathNameToNtPathName_U ((LPWSTR)lpFileName,
&NtPathU,
NULL,
NULL))
return INVALID_HANDLE_VALUE;
DPRINT("NtPathU \'%S\'\n", NtPathU.Buffer);
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
ObjectAttributes.RootDirectory = NULL;
ObjectAttributes.ObjectName = &NtPathU;
ObjectAttributes.Attributes = OBJ_CASE_INSENSITIVE;
ObjectAttributes.SecurityDescriptor = NULL;
ObjectAttributes.SecurityQualityOfService = NULL;
Status = NtCreateFile (&FileHandle,
dwDesiredAccess,
&ObjectAttributes,
&IoStatusBlock,
NULL,
dwFlagsAndAttributes,
dwShareMode,
dwCreationDisposition,
Flags,
NULL,
0);
if (!NT_SUCCESS(Status))
{
SetLastErrorByStatus (Status);
return INVALID_HANDLE_VALUE;
}
return FileHandle;
return 0;
}
/* close a Handle. seems finished */
APIRET STDCALL Dos32Close(HFILE hFile)
{
NTSTATUS nErrCode;
nErrCode = NtClose( (HANDLE)hFile );
switch( nErrCode )
{
case STATUS_SUCCESS:
return NO_ERROR;
case STATUS_INVALID_HANDLE:
return ERROR_INVALID_HANDLE;
case STATUS_HANDLE_NOT_CLOSABLE:
return ERROR_FILE_NOT_FOUND;
}
return nErrCode;
}
APIRET STDCALL Dos32Read(HFILE hFile, PVOID pBuffer,
ULONG cbRead, PULONG pcbActual)
{
NTSTATUS nErrCode;
IO_STATUS_BLOCK isbStatus;
// read data from file
nErrCode = NtReadFile( (HANDLE)hFile, NULL, NULL, NULL,
&isbStatus, pBuffer, cbRead,
NULL, NULL );
// contains the # bytes actually read.
*pcbActual = isbStatus.Information;
switch(nErrCode)
{
case STATUS_INVALID_HANDLE:
return ERROR_INVALID_HANDLE;
// FIXME: complete this
}
return NO_ERROR;
}
/* Generic write to a stream given by hFile */
APIRET STDCALL Dos32Write(HFILE hFile, PVOID pBuffer,
ULONG cbWrite, PULONG pcbActual)
{
NTSTATUS nErrCode;
IO_STATUS_BLOCK StatusBlk;
nErrCode = NtWriteFile( (HANDLE)hFile, NULL, NULL, NULL,
&StatusBlk, pBuffer, cbWrite, 0, NULL );
*pcbActual = StatusBlk.Information;
// do an errorcode translation FIXME: correct
switch(nErrCode)
{
case STATUS_SUCCESS:
case STATUS_PENDING:
case STATUS_ACCESS_DENIED:
case STATUS_INVALID_HANDLE:
case STATUS_FILE_LOCK_CONFLICT:
return 0;
}
return 0;
}
/*******************************************/
/* DosDevIOCtl performs control functions */
/* on a device specified by an opened */
/* device handle. */
/*******************************************/
/*HFILE hDevice; Device handle returned by DosOpen, or a standard (open) device handle. */
/*ULONG category; Device category. */
/*ULONG function; Device-specific function code. */
/*PVOID pParams; Address of the command-specific argument list. */
/*ULONG cbParmLenMax; Length, in bytes, of pParams. */
/*PULONG pcbParmLen; Pointer to the length of parameters. */
/*PVOID pData; Address of the data area. */
/*ULONG cbDataLenMax; Length, in bytes, of pData. */
/*PULONG pcbDataLen; Pointer to the length of data. */
/*APIRET ulrc; Return Code.
ulrc (APIRET) - returns
Return Code.
DosDevIOCtl returns one of the following values:
0 NO_ERROR
1 ERROR_INVALID_FUNCTION
6 ERROR_INVALID_HANDLE
15 ERROR_INVALID_DRIVE
31 ERROR_GEN_FAILURE
87 ERROR_INVALID_PARAMETER
111 ERROR_BUFFER_OVERFLOW
115 ERROR_PROTECTION_VIOLATION
117 ERROR_INVALID_CATEGORY
119 ERROR_BAD_DRIVER_LEVEL
163 ERROR_UNCERTAIN_MEDIA
165 ERROR_MONITORS_NOT_SUPPORTED
*/
APIRET STDCALL Dos32DevIOCtl(HFILE hDevice, ULONG category, ULONG function,
PVOID pParams,ULONG cbParmLenMax,PULONG pcbParmLen,
PVOID pData,ULONG cbDataLenMax,PULONG pcbDataLen)
{
return 0;
}
APIRET STDCALL Dos32Beep(ULONG freq, ULONG dur)
{
if( freq<0x25 || freq>0x7FFF )
return 395; // ERROR_INVALID_FREQUENCY
HANDLE hBeep;
IO_STATUS_BLOCK ComplStatus;
//UNICODE_STRING
OBJECT_ATTRIBUTES oa = {sizeof oa, 0, {8,8,"\\\\.\\Beep"l}, OBJ_CASE_INSENSITIVE};
NTSTATUS stat;
stat = NtOpenFile( &hBeep,
FILE_READ_DATA | FILE_WRITE_DATA,
&oa,
&ComplStatus,
0, // no sharing
FILE_OPEN );
if (!NT_SUCCESS(stat))
{
}
if( ComplStatus->
/* HANDLE hBeep;
BEEP_SET_PARAMETERS BeepSetParameters;
DWORD dwReturned;
hBeep = Dos32Open("\\\\.\\Beep",
FILE_GENERIC_READ | FILE_GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hBeep == INVALID_HANDLE_VALUE)
return FALSE;
*/
// Set beep data
/* BeepSetParameters.Frequency = dwFreq;
BeepSetParameters.Duration = dwDuration;
DeviceIoControl(hBeep,
IOCTL_BEEP_SET,
&BeepSetParameters,
sizeof(BEEP_SET_PARAMETERS),
NULL,
0,
&dwReturned,
NULL);
CloseHandle (hBeep);
return TRUE;
*/
return 0;
}
/* Terminates the current thread or the current Process.
Decission is made by action
FIXME: move this code to OS2.EXE */
VOID STDCALL Dos32Exit(ULONG action, ULONG result)
{
// decide what to do
if( action == EXIT_THREAD)
{
NtTerminateThread( NULL, result );
}
else // EXIT_PROCESS
{
NtTerminateProcess( NULL, result );
}
}
BOOL STDCALL DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )

View file

@ -1,4 +1,4 @@
/* $Id: doscalls.h,v 1.3 2002/03/24 18:55:39 ea Exp $
/* $Id: doscalls.h,v 1.4 2002/05/30 15:11:46 robertk Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS OS/2 sub system
@ -11,7 +11,6 @@
#include "os2def.h"
// FIXME: use ib headers

View file

@ -1,287 +0,0 @@
/* $Id: errorcodes.c,v 1.2 2002/03/24 18:55:39 ea Exp $
*/
/* some header*/
#include <os2errores>
#include <nt's status.h>
/* This file defines a big array of #defines that are
used to translate OS/2 errorcodes to ntdll error codes. */
/* OS/2 to NTDLL error mapping */
#define NO_ERROR STATUS_SUCCESS
#define ERROR_INVALID_FUNCTION STATUS_ILLEGAL_FUNCTION
#define ERROR_FILE_NOT_FOUND 2 /* MSG%FILE_NOT_FOUND */
#define ERROR_PATH_NOT_FOUND 3 /* MSG%PATH_NOT_FOUND */
#define ERROR_TOO_MANY_OPEN_FILES 4 /* MSG%OUT_OF_HANDLES */
#define ERROR_ACCESS_DENIED 5 /* MSG%ACCESS_DENIED */
#define ERROR_INVALID_HANDLE 6 /* MSG%INVALID_HANDLE */
#define ERROR_ARENA_TRASHED 7 /* MSG%MEMORY_BLOCKS_BAD */
#define ERROR_NOT_ENOUGH_MEMORY 8 /* MSG%NO_MEMORY */
#define ERROR_INVALID_BLOCK 9 /* MSG%INVALID_MEM_ADDR */
#define ERROR_BAD_ENVIRONMENT 10 /* MSG%INVALID_ENVIRON */
#define ERROR_BAD_FORMAT 11 /* MSG%INVALID_FORMAT */
#define ERROR_INVALID_ACCESS 12 /* MSG%INVALID_ACC_CODE */
#define ERROR_INVALID_DATA 13 /* MSG%INVALID_DATA */
#define ERROR_INVALID_DRIVE 15 /* MSG%INVALID_DRIVE */
#define ERROR_CURRENT_DIRECTORY 16 /* MSG%ATT_RD_CURDIR */
#define ERROR_NOT_SAME_DEVICE 17 /* MSG%NOT_SAME_DEVICE */
#define ERROR_NO_MORE_FILES 18 /* MSG%NO_MORE_FILES */
#define ERROR_WRITE_PROTECT 19 /* MSG%ATT_WRITE_PROT */
#define ERROR_BAD_UNIT 20 /* MSG%UNKNOWN_UNIT */
#define ERROR_NOT_READY 21 /* MSG%DRIVE_NOT_READY */
#define ERROR_BAD_COMMAND 22 /* MSG%UNKNOWN_COMMAND */
#define ERROR_CRC 23 /* MSG%DATA_ERROR */
#define ERROR_BAD_LENGTH 24 /* MSG%BAD_REQ_STRUCTURE */
#define ERROR_SEEK 25 /* MSG%SEEK_ERROR */
#define ERROR_NOT_DOS_DISK 26 /* MSG%UNKNOWN_MEDIA */
#define ERROR_SECTOR_NOT_FOUND 27 /* MSG%SECTOR_NOT_FOUND */
#define ERROR_OUT_OF_PAPER 28 /* MSG%OUT_OF_PAPER */
#define ERROR_WRITE_FAULT 29 /* MSG%WRITE_FAULT */
#define ERROR_READ_FAULT 30 /* MSG%READ_FAULT */
#define ERROR_GEN_FAILURE 31 /* MSG%GENERAL_FAILURE */
#define ERROR_SHARING_VIOLATION 32 /* MSG%SHARING_VIOLATION */
/* 32%msg%SHAR_VIOLAT_FIND */
#define ERROR_LOCK_VIOLATION 33 /* MSG%LOCK_VIOLATION */
#define ERROR_WRONG_DISK 34 /* MSG%INVALID_DISK_CHANGE */
#define ERROR_FCB_UNAVAILABLE 35 /* MSG%35 */
#define ERROR_SHARING_BUFFER_EXCEEDED 36 /* MSG%SHARING_BUFF_OFLOW */
#define ERROR_CODE_PAGE_MISMATCHED 37 /* MSG%ERROR_WRITE_PROTECT */
#define ERROR_HANDLE_EOF 38 /* MSG%ERROR_BAD_UNIT */
#define ERROR_HANDLE_DISK_FULL 39 /* MSG%ERROR_NOT_READY */
/* 40%msg%ERROR_BAD_COMMAND */
/* 41%msg%ERROR_CRC */
/* 42%msg%ERROR_BAD_LENGTH */
/* 43%msg%ERROR_SEEK */
/* 44%msg%ERROR_NOT_DOS_DISK */
/* 45%msg%ERROR_SECTOR_NOT_FOUND */
/* 46%msg%ERROR_OUT_OF_PAPER */
/* 47%msg%ERROR_WRITE_FAULT */
/* 48%msg%ERROR_READ_FAULT */
/* 49%msg%ERROR_GEN_FAILURE */
#define ERROR_NOT_SUPPORTED 50 /* MSG%NET_REQ_NOT_SUPPORT */
#define ERROR_REM_NOT_LIST 51 /* MSG%NET_REMOTE_NOT_ONLINE */
#define ERROR_DUP_NAME 52 /* MSG%NET_DUP_FILENAME */
#define ERROR_BAD_NETPATH 53 /* MSG%NET_PATH_NOT_FOUND */
#define ERROR_NETWORK_BUSY 54 /* MSG%NET_BUSY */
#define ERROR_DEV_NOT_EXIST 55 /* MSG%NET_DEV_NOT_INSTALLED */
#define ERROR_TOO_MANY_CMDS 56 /* MSG%NET_BIOS_LIMIT_REACHED */
#define ERROR_ADAP_HDW_ERR 57 /* MSG%NET_ADAPT_HRDW_ERROR */
#define ERROR_BAD_NET_RESP 58 /* MSG%NET_INCORRECT_RESPONSE */
#define ERROR_UNEXP_NET_ERR 59 /* MSG%NET_UNEXPECT_ERROR */
#define ERROR_BAD_REM_ADAP 60 /* MSG%NET_REMOT_ADPT_INCOMP */
#define ERROR_PRINTQ_FULL 61 /* MSG%NET_PRINT_Q_FULL */
#define ERROR_NO_SPOOL_SPACE 62 /* MSG%NET_NO_SPACE_TO_PRINT_FL */
#define ERROR_PRINT_CANCELLED 63 /* MSG%NET_PRINT_FILE_DELETED */
#define ERROR_NETNAME_DELETED 64 /* MSG%NET_NAME_DELETED */
#define ERROR_NETWORK_ACCESS_DENIED 65 /* MSG%NET_ACCESS_DENIED */
#define ERROR_BAD_DEV_TYPE 66 /* MSG%NET_DEV_TYPE_INVALID */
#define ERROR_BAD_NET_NAME 67 /* MSG%NET_NAME_NOT_FOUND */
#define ERROR_TOO_MANY_NAMES 68 /* MSG%NET_NAME_LIMIT_EXCEED */
#define ERROR_TOO_MANY_SESS 69 /* MSG%NET_BIOS_LIMIT_EXCEED */
#define ERROR_SHARING_PAUSED 70 /* MSG%NET_TEMP_PAUSED */
#define ERROR_REQ_NOT_ACCEP 71 /* MSG%NET_REQUEST_DENIED */
#define ERROR_REDIR_PAUSED 72 /* MSG%NET_PRT_DSK_REDIR_PAUSE */
#define ERROR_SBCS_ATT_WRITE_PROT 73 /* Attempted write on protected disk */
#define ERROR_SBCS_GENERAL_FAILURE 74 /* General failure */
#define ERROR_XGA_OUT_MEMORY 75 /* MSG%XGA_OUT_MEMORY */
#define ERROR_FILE_EXISTS 80 /* MSG%FILE_EXISTS */
#define ERROR_DUP_FCB 81 /* MSG%none */
#define ERROR_CANNOT_MAKE 82 /* MSG%CANNOT_MAKE */
#define ERROR_FAIL_I24 83 /* MSG%NET_FAIL_INT_TWO_FOUR */
#define ERROR_OUT_OF_STRUCTURES 84 /* MSG%NET_TOO_MANY_REDIRECT */
#define ERROR_ALREADY_ASSIGNED 85 /* MSG%NET_DUP_REDIRECTION */
#define ERROR_INVALID_PASSWORD 86 /* MSG%NET_INVALID_PASSWORD */
#define ERROR_INVALID_PARAMETER 87 /* MSG%NET_INCORR_PARAMETER */
#define ERROR_NET_WRITE_FAULT 88 /* MSG%NET_DATA_FAULT */
#define ERROR_NO_PROC_SLOTS 89 /* MSG%NO_PROC_SLOTS */
#define ERROR_NOT_FROZEN 90 /* MSG%none */
#define ERROR_SYS_COMP_NOT_LOADED ERROR_NOT_FROZEN
#define ERR_TSTOVFL 91 /* MSG%none */
#define ERR_TSTDUP 92 /* MSG%none */
#define ERROR_NO_ITEMS 93 /* MSG%none */
#define ERROR_INTERRUPT 95 /* MSG%none */
#define ERROR_DEVICE_IN_USE 99 /* MSG%DEVICE_IN_USE */
#define ERROR_TOO_MANY_SEMAPHORES 100 /* MSG%TOO_MANY_SEMAPHORES */
#define ERROR_EXCL_SEM_ALREADY_OWNED 101 /* MSG%EXCL_SEM_ALREADY_OWNED */
#define ERROR_SEM_IS_SET 102 /* MSG%SEM_IS_SET */
#define ERROR_TOO_MANY_SEM_REQUESTS 103 /* MSG%TOO_MANY_SEM_REQUESTS */
#define ERROR_INVALID_AT_INTERRUPT_TIME 104 /* MSG%INVALID_AT_INTERRUPT_TIME */
#define ERROR_SEM_OWNER_DIED 105 /* MSG%SEM_OWNER_DIED */
#define ERROR_SEM_USER_LIMIT 106 /* MSG%ERROR_DISK_CHANGE */
#define ERROR_DISK_CHANGE 107 /* MSG%DISK_CHANGE */
#define ERROR_DRIVE_LOCKED 108 /* MSG%DRIVE_LOCKED */
#define ERROR_BROKEN_PIPE 109 /* MSG%BROKEN_PIPE */
#define ERROR_OPEN_FAILED 110 /* MSG%ERROR_OPEN_FAILED */
#define ERROR_BUFFER_OVERFLOW 111 /* MSG%ERROR_FILENAME_LONG */
#define ERROR_DISK_FULL 112 /* MSG%DISK_FULL */
#define ERROR_NO_MORE_SEARCH_HANDLES 113 /* MSG%NO_SEARCH_HANDLES */
#define ERROR_INVALID_TARGET_HANDLE 114 /* MSG%ERR_INV_TAR_HANDLE */
#define ERROR_PROTECTION_VIOLATION 115 /* MSG%none */
#define ERROR_VIOKBD_REQUEST 116 /* MSG%none */
#define ERROR_INVALID_CATEGORY 117 /* MSG%INVALID_CATEGORY */
#define ERROR_INVALID_VERIFY_SWITCH 118 /* MSG%INVALID_VERIFY_SWITCH */
#define ERROR_BAD_DRIVER_LEVEL 119 /* MSG%BAD_DRIVER_LEVEL */
#define ERROR_CALL_NOT_IMPLEMENTED 120 /* MSG%BAD_DYNALINK */
#define ERROR_SEM_TIMEOUT 121 /* MSG%SEM_TIMEOUT */
#define ERROR_INSUFFICIENT_BUFFER 122 /* MSG%INSUFFICIENT_BUFFER */
#define ERROR_INVALID_NAME 123 /* MSG%INVALID_NAME */
/* 123%msg%HPFS_INVALID_VOLUME_CHAR */
#define ERROR_INVALID_LEVEL 124 /* MSG%INVALID_LEVEL */
#define ERROR_NO_VOLUME_LABEL 125 /* MSG%NO_VOLUME_LABEL */
#define ERROR_MOD_NOT_FOUND 126 /* MSG%MOD_NOT_FOUND */
#define ERROR_PROC_NOT_FOUND 127 /* MSG%PROC_NOT_FOUND */
#define ERROR_WAIT_NO_CHILDREN 128 /* MSG%none */
#define ERROR_CHILD_NOT_COMPLETE 129 /* MSG%PROT_MODE_ONLY */
#define ERROR_DIRECT_ACCESS_HANDLE 130 /* MSG%APPL_SINGLEFRAMECHAR */
#define ERROR_NEGATIVE_SEEK 131 /* MSG%APPL_DOUBLEFRAMECHAR */
#define ERROR_SEEK_ON_DEVICE 132 /* MSG%APPL_ARROWCHAR */
#define ERROR_IS_JOIN_TARGET 133 /* MSG%JOIN_ON_DRIV_IS_TAR */
#define ERROR_IS_JOINED 134 /* MSG%JOIN_DRIVE_IS */
#define ERROR_IS_SUBSTED 135 /* MSG%SUB_DRIVE_IS */
#define ERROR_NOT_JOINED 136 /* MSG%DRIVE_IS_NOT_JOINED */
#define ERROR_NOT_SUBSTED 137 /* MSG%DRIVE_NOT_SUBSTED */
#define ERROR_JOIN_TO_JOIN 138 /* MSG%JOIN_CANNOT_JOIN_DRIVE */
#define ERROR_SUBST_TO_SUBST 139 /* MSG%SUB_CANNOT_SUBST_DRIVE */
#define ERROR_JOIN_TO_SUBST 140 /* MSG%JOIN_CANNOT_SUB_DRIVE */
#define ERROR_SUBST_TO_JOIN 141 /* MSG%SUB_CANNOT_JOIN_DRIVE */
#define ERROR_BUSY_DRIVE 142 /* MSG%DRIVE_IS_BUSY */
#define ERROR_SAME_DRIVE 143 /* MSG%JOIN_SUB_SAME_DRIVE */
#define ERROR_DIR_NOT_ROOT 144 /* MSG%DIRECT_IS_NOT_SUBDIR */
#define ERROR_DIR_NOT_EMPTY 145 /* MSG%DIRECT_IS_NOT_EMPTY */
#define ERROR_IS_SUBST_PATH 146 /* MSG%PATH_USED_SUBST_JOIN */
#define ERROR_IS_JOIN_PATH 147 /* MSG%NO_NEEDED_RESOURCES */
#define ERROR_PATH_BUSY 148 /* MSG%PATH_BUSY */
#define ERROR_IS_SUBST_TARGET 149 /* MSG%SUB_ON_DRIVE_IS_JOIN */
#define ERROR_SYSTEM_TRACE 150 /* MSG%SYSTEM_TRACE */
#define ERROR_INVALID_EVENT_COUNT 151 /* MSG%INVALID_EVENT_COUNT */
#define ERROR_TOO_MANY_MUXWAITERS 152 /* MSG%TOO_MANY_MUXWAITERS */
#define ERROR_INVALID_LIST_FORMAT 153 /* MSG%INVALID_LIST_FORMAT */
#define ERROR_LABEL_TOO_LONG 154 /* MSG%VOLUME_TOO_LONG */
/* 154%msg%HPFS_VOL_LABEL_LONG */
#define ERROR_TOO_MANY_TCBS 155 /* MSG%TOO_MANY_TCBS */
#define ERROR_SIGNAL_REFUSED 156 /* MSG%SIGNAL_REFUSED */
#define ERROR_DISCARDED 157 /* MSG%DISCARDED */
#define ERROR_NOT_LOCKED 158 /* MSG%NOT_LOCKED */
#define ERROR_BAD_THREADID_ADDR 159 /* MSG%BAD_THREADID_ADDR */
#define ERROR_BAD_ARGUMENTS 160 /* MSG%BAD_ARGUMENTS */
#define ERROR_BAD_PATHNAME 161 /* MSG%none */
#define ERROR_SIGNAL_PENDING 162 /* MSG%SIGNAL_PENDING */
#define ERROR_UNCERTAIN_MEDIA 163 /* MSG%none */
#define ERROR_MAX_THRDS_REACHED 164 /* MSG%MAX_THRDS_REACHED */
#define ERROR_MONITORS_NOT_SUPPORTED 165 /* MSG%none */
#define ERROR_UNC_DRIVER_NOT_INSTALLED 166 /* MSG%UNC_DRIVER_NOT_INSTALLED */
#define ERROR_LOCK_FAILED 167 /* MSG%LOCK_FAILED */
#define ERROR_SWAPIO_FAILED 168 /* MSG%SWAPIO_FAILED */
#define ERROR_SWAPIN_FAILED 169 /* MSG%SWAPIN_ATTEMPT_FAILED */
#define ERROR_BUSY 170 /* MSG%SEGMENT_BUSY */
/* 171%msg%INT_TOO_LONG */
#define ERROR_CANCEL_VIOLATION 173 /* MSG%UNLOCK_VIOLATION */
#define ERROR_ATOMIC_LOCK_NOT_SUPPORTED 174 /* MSG%none */
#define ERROR_READ_LOCKS_NOT_SUPPORTED 175 /* MSG%none */
#define ERROR_INVALID_SEGMENT_NUMBER 180 /* MSG%INVALID_SEGMENT_NUM */
#define ERROR_INVALID_CALLGATE 181 /* MSG%none */
#define ERROR_INVALID_ORDINAL 182 /* MSG%INVALID_ORDINAL */
#define ERROR_ALREADY_EXISTS 183 /* MSG%none */
#define ERROR_NO_CHILD_PROCESS 184 /* MSG%none */
#define ERROR_CHILD_ALIVE_NOWAIT 185 /* MSG%none */
#define ERROR_INVALID_FLAG_NUMBER 186 /* MSG%INVALID_FLAG_NUMBER */
#define ERROR_SEM_NOT_FOUND 187 /* MSG%SEM_NOT_FOUND */
#define ERROR_INVALID_STARTING_CODESEG 188 /* MSG%INVALID_STARTING_CODESEG */
#define ERROR_INVALID_STACKSEG 189 /* MSG%INVALID_STACKSEG */
#define ERROR_INVALID_MODULETYPE 190 /* MSG%INVALID_MODULETYPE */
#define ERROR_INVALID_EXE_SIGNATURE 191 /* MSG%INVALID_EXE_SIGNATURE */
#define ERROR_EXE_MARKED_INVALID 192 /* MSG%EXE_MARKED_INVALID */
#define ERROR_BAD_EXE_FORMAT 193 /* MSG%BAD_EXE_FORMAT */
#define ERROR_ITERATED_DATA_EXCEEDS_64k 194 /* MSG%ITERATED_DATA_EXCEEDS_64K */
#define ERROR_INVALID_MINALLOCSIZE 195 /* MSG%INVALID_MINALLOCSIZE */
#define ERROR_DYNLINK_FROM_INVALID_RING 196 /* MSG%DYNLINK_FROM_INVALID_RING */
#define ERROR_IOPL_NOT_ENABLED 197 /* MSG%IOPL_NOT_ENABLED */
#define ERROR_INVALID_SEGDPL 198 /* MSG%INVALID_SEGDPL */
#define ERROR_AUTODATASEG_EXCEEDS_64k 199 /* MSG%AUTODATASEG_EXCEEDS_64K */
#define ERROR_RING2SEG_MUST_BE_MOVABLE 200 /* MSG%CODESEG_CANNOT_BE_64K */
#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201 /* MSG%RELOC_CHAIN_XEEDS_SEGMENT */
#define ERROR_INFLOOP_IN_RELOC_CHAIN 202 /* MSG%INFLOOP_IN_RELOC_CHAIN */
#define ERROR_ENVVAR_NOT_FOUND 203 /* MSG%ENVVAR_NOT_FOUND */
#define ERROR_NOT_CURRENT_CTRY 204 /* MSG%none */
#define ERROR_NO_SIGNAL_SENT 205 /* MSG%SIGNAL_NOT_SENT */
#define ERROR_FILENAME_EXCED_RANGE 206 /* MSG%NAME_TOO_LONG */
#define ERROR_RING2_STACK_IN_USE 207 /* MSG%RING2_STACK_IN_USE */
#define ERROR_META_EXPANSION_TOO_LONG 208 /* MSG%WILD_CARD_NAME */
#define ERROR_INVALID_SIGNAL_NUMBER 209 /* MSG%INVALID_SIGNAL_NUMBER */
#define ERROR_THREAD_1_INACTIVE 210 /* MSG%THREAD_1_INACTIVE */
#define ERROR_INFO_NOT_AVAIL 211 /* MSG%none */
#define ERROR_LOCKED 212 /* MSG%LOCKED */
#define ERROR_BAD_DYNALINK 213 /* MSG%none */
#define ERROR_TOO_MANY_MODULES 214 /* MSG%TOO_MANY_MODULES */
#define ERROR_NESTING_NOT_ALLOWED 215 /* MSG%none */
#define ERROR_CANNOT_SHRINK 216 /* MSG%CANNOT_SHRINK */
#define ERROR_ZOMBIE_PROCESS 217 /* MSG%none */
#define ERROR_STACK_IN_HIGH_MEMORY 218 /* MSG%none */
#define ERROR_INVALID_EXITROUTINE_RING 219 /* MSG%INVALID_EXITROUTINE_RING */
#define ERROR_GETBUF_FAILED 220 /* MSG%none */
#define ERROR_FLUSHBUF_FAILED 221 /* MSG%none */
#define ERROR_TRANSFER_TOO_LONG 222 /* MSG%none */
#define ERROR_FORCENOSWAP_FAILED 223 /* MSG%none */
#define ERROR_SMG_NO_TARGET_WINDOW 224 /* PM ID can't be selected */
#define ERROR_NO_CHILDREN 228 /* MSG%NO_CHILDREN */
#define ERROR_INVALID_SCREEN_GROUP 229 /* MSG%none */
#define ERROR_BAD_PIPE 230 /* MSG%ERROR_BAD_PIPE */
#define ERROR_PIPE_BUSY 231 /* MSG%ERROR_PIPE_BUSY */
#define ERROR_NO_DATA 232 /* MSG%ERROR_NO_DATA */
#define ERROR_PIPE_NOT_CONNECTED 233 /* MSG%ERROR_PIPE_NOT_CONNECTED */
#define ERROR_MORE_DATA 234 /* MSG%ERROR_MORE_DATA */
#define ERROR_VC_DISCONNECTED 240 /* MSG%ERROR_VC_DISCONNECTED */
#define ERROR_CIRCULARITY_REQUESTED 250 /* MSG%CIRCULARITY_REQUESTED */
#define ERROR_DIRECTORY_IN_CDS 251 /* MSG%DIRECTORY_IN_CDS */
#define ERROR_INVALID_FSD_NAME 252 /* MSG%INVALID_FSD_NAME */
#define ERROR_INVALID_PATH 253 /* MSG%INVALID_PATH */
#define ERROR_INVALID_EA_NAME 254 /* MSG%INVALID_EA_NAME */
#define ERROR_EA_LIST_INCONSISTENT 255 /* MSG%EA_LIST_INCONSISTENT */
#define ERROR_EA_LIST_TOO_LONG 256 /* MSG%EA_LIST_TOO_LONG */
#define ERROR_NO_META_MATCH 257 /* MSG%NO_META_MATCH */
#define ERROR_FINDNOTIFY_TIMEOUT 258 /* MSG%FINDNOTIFY_TIMEOUT */
#define ERROR_NO_MORE_ITEMS 259 /* MSG%NO_MORE_ITEMS */
#define ERROR_SEARCH_STRUC_REUSED 260 /* MSG%SEARCH_STRUC_REUSED */
#define ERROR_CHAR_NOT_FOUND 261 /* MSG%CHAR_NOT_FOUND */
#define ERROR_TOO_MUCH_STACK 262 /* MSG%TOO_MUCH_STACK */
#define ERROR_INVALID_ATTR 263 /* MSG%INVALID_ATTR */
#define ERROR_INVALID_STARTING_RING 264 /* MSG%INVALID_STARTING_RING */
#define ERROR_INVALID_DLL_INIT_RING 265 /* MSG%INVALID_DLL_INIT_RING */
#define ERROR_CANNOT_COPY 266 /* MSG%CANNOT_COPY */
#define ERROR_DIRECTORY 267 /* MSG%DIRECTORY */
#define ERROR_OPLOCKED_FILE 268 /* MSG%OPLOCKED_FILE */
#define ERROR_OPLOCK_THREAD_EXISTS 269 /* MSG%OPLOCK_THREAD_EXISTS */
#define ERROR_VOLUME_CHANGED 270 /* MSG%none */
#define ERROR_FINDNOTIFY_HANDLE_IN_USE 271 /* MSG%none */
#define ERROR_FINDNOTIFY_HANDLE_CLOSED 272 /* MSG%none */
#define ERROR_NOTIFY_OBJECT_REMOVED 273 /* MSG%none */
#define ERROR_ALREADY_SHUTDOWN 274 /* MSG%none */
#define ERROR_EAS_DIDNT_FIT 275 /* MSG%none */
#define ERROR_EA_FILE_CORRUPT 276 /* MSG%ERROR_EAS_CORRUPT */
#define ERROR_EA_TABLE_FULL 277 /* MSG%EA_TABLE_FULL */
#define ERROR_INVALID_EA_HANDLE 278 /* MSG%INVALID_EA_HANDLE */
#define ERROR_NO_CLUSTER 279 /* MSG%NO_CLUSTER */
#define ERROR_CREATE_EA_FILE 280 /* MSG%ERROR_CREATE_EA_FILE */
#define ERROR_CANNOT_OPEN_EA_FILE 281 /* MSG%CANNOT_OPEN_FILE */
#define ERROR_EAS_NOT_SUPPORTED 282 /* MSG%EAS_NOT_SUPPORTED */
#define ERROR_NEED_EAS_FOUND 283 /* MSG%NEED_EAS_FOUND */
#define ERROR_DUPLICATE_HANDLE 284 /* MSG%EAS_DISCARDED */
#define ERROR_DUPLICATE_NAME 285 /* MSG%DUPLICATE_SEM_NAME */
#define ERROR_EMPTY_MUXWAIT 286 /* MSG%EMPTY_MUXWAIT_SEM */
#define ERROR_MUTEX_OWNED 287 /* MSG%MUTEX_SEM_OWNED */
#define ERROR_NOT_OWNER 288 /* MSG%NOT_MUTEX_SEM_OWNER */
#define ERROR_PARAM_TOO_SMALL 289 /* MSG%QUERY_MUX_PARAM_TOO_SMALL */
#define ERROR_TOO_MANY_HANDLES 290 /* MSG%TOO_MANY_SEM_HANDLES */
#define ERROR_TOO_MANY_OPENS 291 /* MSG%TOO_MANY_SEM_OPENS */
#define ERROR_WRONG_TYPE 292 /* MSG%SEM_WRONG_TYPE */
#define ERROR_UNUSED_CODE 293 /* MSG%none */
#define ERROR_THREAD_NOT_TERMINATED 294 /* MSG%none */
#define ERROR_INIT_ROUTINE_FAILED 295 /* MSG%none */
#define ERROR_MODULE_IN_USE 296 /* MSG%none */
#define ERROR_NOT_ENOUGH_WATCHPOINTS 297 /* MSG%none */
#define ERROR_TOO_MANY_POSTS 298 /* MSG%TOO_MANY_EVENT_SEM_POSTS */
#define ERROR_ALREADY_POSTED 299 /* MSG%EVENT_SEM_ALREADY_POSTED */
#define ERROR_ALREADY_RESET 300 /* MSG%EVENT_SEM_ALREADY_RESET */
#define ERROR_SEM_BUSY 301 /* MSG%SEM_BUSY */

View file

@ -1,8 +1,37 @@
/* $Id: process.cpp,v 1.2 2002/03/24 18:55:39 ea Exp $ */
/* $Id: process.cpp,v 1.3 2002/05/30 15:11:47 robertk Exp $
*/
/*
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS OS/2 sub system
* FILE: dll/process.cpp
* PURPOSE: Kernelservices for OS/2 apps
* PROGRAMMER: Robert K. nonvolatil@yahoo.de
* REVISION HISTORY:
* 13-03-2002 Created
*/
#define INCL_DOSPROCESS
#include "../../../include/os2.h"
#include <ddk/ntddk.h>
APIRET STDCALL DosSleep(ULONG msec)
{
NTSTATUS stat;
TIME Interv;
Interv.QuadPart= -(10000 * msec);
stat = NtDelayExecution( TRUE, &Interv );
return 0;
}
/* $Id: process.cpp,v 1.3 2002/05/30 15:11:47 robertk Exp $ */
/* Terminates the current thread or the current Process.
Decission is made by action
FIXME: move this code to OS2.EXE */
VOID APIENTRY Dos32Exit(ULONG action, ULONG result)
VOID APIENTRY DosExit(ULONG action, ULONG result)
{
// decide what to do
if( action == EXIT_THREAD)
@ -15,4 +44,71 @@ VOID APIENTRY Dos32Exit(ULONG action, ULONG result)
}
}
APIRET STDCALL DosBeep(ULONG freq, ULONG dur)
{
if( freq<0x25 || freq>0x7FFF )
return 395; // ERROR_INVALID_FREQUENCY
HANDLE hBeep;
IO_STATUS_BLOCK ComplStatus;
//UNICODE_STRING
OBJECT_ATTRIBUTES oa = {sizeof oa, 0, {8,8,"\\\\.\\Beep"l}, OBJ_CASE_INSENSITIVE};
NTSTATUS stat;
stat = NtOpenFile( &hBeep,
FILE_READ_DATA | FILE_WRITE_DATA,
&oa,
&ComplStatus,
0, // no sharing
FILE_OPEN );
if (!NT_SUCCESS(stat))
{
}
if( ComplStatus->
/* HANDLE hBeep;
BEEP_SET_PARAMETERS BeepSetParameters;
DWORD dwReturned;
hBeep = Dos32Open("\\\\.\\Beep",
FILE_GENERIC_READ | FILE_GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hBeep == INVALID_HANDLE_VALUE)
return FALSE;
*/
// Set beep data
/* BeepSetParameters.Frequency = dwFreq;
BeepSetParameters.Duration = dwDuration;
DeviceIoControl(hBeep,
IOCTL_BEEP_SET,
&BeepSetParameters,
sizeof(BEEP_SET_PARAMETERS),
NULL,
0,
&dwReturned,
NULL);
CloseHandle (hBeep);
return TRUE;
*/
return 0;
}
APIRET STDCALL DosCreateThread(PTID ptid, PFNTHREAD pfn,
ULONG param, ULONG flag, ULONG cbStack)
{
return 0;
}
/* EOF */