From 687ecfa3127e88550e212aa9277b214cb8924825 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 8 Oct 2003 04:24:49 +0000 Subject: [PATCH] Moved a few more functions to the dlls/kernel directory. --- dlls/kernel/Makefile.in | 6 +- dlls/kernel/console.c | 12 +++ {win32 => dlls/kernel}/device.c | 0 dlls/kernel/process.c | 139 ++++++++++++++++++++++++++ dlls/kernel/sync.c | 25 +++++ dlls/ntdll/Makefile.in | 2 + scheduler/handle.c | 168 -------------------------------- win32/newfns.c | 80 --------------- 8 files changed, 179 insertions(+), 253 deletions(-) rename {win32 => dlls/kernel}/device.c (100%) delete mode 100644 scheduler/handle.c delete mode 100644 win32/newfns.c diff --git a/dlls/kernel/Makefile.in b/dlls/kernel/Makefile.in index c03840ef6ab..f845efee142 100644 --- a/dlls/kernel/Makefile.in +++ b/dlls/kernel/Makefile.in @@ -34,15 +34,13 @@ C_SRCS = \ $(TOPOBJDIR)/misc/registry.c \ $(TOPOBJDIR)/msdos/dpmi.c \ $(TOPOBJDIR)/msdos/int21.c \ - $(TOPOBJDIR)/scheduler/handle.c \ - $(TOPOBJDIR)/win32/device.c \ - $(TOPOBJDIR)/win32/newfns.c \ atom.c \ change.c \ comm.c \ computername.c \ console.c \ debugger.c \ + device.c \ dosmem.c \ editline.c \ except.c \ @@ -108,8 +106,6 @@ EXTRASUBDIRS = \ $(TOPOBJDIR)/memory \ $(TOPOBJDIR)/misc \ $(TOPOBJDIR)/msdos \ - $(TOPOBJDIR)/scheduler \ - $(TOPOBJDIR)/win32 \ messages \ nls diff --git a/dlls/kernel/console.c b/dlls/kernel/console.c index fa7286d94ff..198765d5cd1 100644 --- a/dlls/kernel/console.c +++ b/dlls/kernel/console.c @@ -168,6 +168,18 @@ BOOL WINAPI SetConsoleOutputCP(UINT cp) } +/*********************************************************************** + * Beep (KERNEL32.@) + */ +BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur ) +{ + static const char beep = '\a'; + /* dwFreq and dwDur are ignored by Win95 */ + if (isatty(2)) write( 2, &beep, 1 ); + return TRUE; +} + + /****************************************************************************** * WriteConsoleInputA [KERNEL32.@] */ diff --git a/win32/device.c b/dlls/kernel/device.c similarity index 100% rename from win32/device.c rename to dlls/kernel/device.c diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c index f5074abd7a0..d97c8efd49d 100644 --- a/dlls/kernel/process.c +++ b/dlls/kernel/process.c @@ -2075,6 +2075,145 @@ DWORD WINAPI MapProcessHandle( HANDLE handle ) } +/********************************************************************* + * CloseW32Handle (KERNEL.474) + * CloseHandle (KERNEL32.@) + */ +BOOL WINAPI CloseHandle( HANDLE handle ) +{ + NTSTATUS status; + + /* stdio handles need special treatment */ + if ((handle == (HANDLE)STD_INPUT_HANDLE) || + (handle == (HANDLE)STD_OUTPUT_HANDLE) || + (handle == (HANDLE)STD_ERROR_HANDLE)) + handle = GetStdHandle( (DWORD)handle ); + + if (is_console_handle(handle)) + return CloseConsoleHandle(handle); + + status = NtClose( handle ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; +} + + +/********************************************************************* + * GetHandleInformation (KERNEL32.@) + */ +BOOL WINAPI GetHandleInformation( HANDLE handle, LPDWORD flags ) +{ + BOOL ret; + SERVER_START_REQ( set_handle_info ) + { + req->handle = handle; + req->flags = 0; + req->mask = 0; + req->fd = -1; + ret = !wine_server_call_err( req ); + if (ret && flags) *flags = reply->old_flags; + } + SERVER_END_REQ; + return ret; +} + + +/********************************************************************* + * SetHandleInformation (KERNEL32.@) + */ +BOOL WINAPI SetHandleInformation( HANDLE handle, DWORD mask, DWORD flags ) +{ + BOOL ret; + SERVER_START_REQ( set_handle_info ) + { + req->handle = handle; + req->flags = flags; + req->mask = mask; + req->fd = -1; + ret = !wine_server_call_err( req ); + } + SERVER_END_REQ; + return ret; +} + + +/********************************************************************* + * DuplicateHandle (KERNEL32.@) + */ +BOOL WINAPI DuplicateHandle( HANDLE source_process, HANDLE source, + HANDLE dest_process, HANDLE *dest, + DWORD access, BOOL inherit, DWORD options ) +{ + NTSTATUS status; + + if (is_console_handle(source)) + { + /* FIXME: this test is not sufficient, we need to test process ids, not handles */ + if (source_process != dest_process || + source_process != GetCurrentProcess()) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + *dest = DuplicateConsoleHandle( source, access, inherit, options ); + return (*dest != INVALID_HANDLE_VALUE); + } + status = NtDuplicateObject( source_process, source, dest_process, dest, + access, inherit ? OBJ_INHERIT : 0, options ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; +} + + +/*********************************************************************** + * ConvertToGlobalHandle (KERNEL.476) + * ConvertToGlobalHandle (KERNEL32.@) + */ +HANDLE WINAPI ConvertToGlobalHandle(HANDLE hSrc) +{ + HANDLE ret = INVALID_HANDLE_VALUE; + DuplicateHandle( GetCurrentProcess(), hSrc, GetCurrentProcess(), &ret, 0, FALSE, + DUP_HANDLE_MAKE_GLOBAL | DUP_HANDLE_SAME_ACCESS | DUP_HANDLE_CLOSE_SOURCE ); + return ret; +} + + +/*********************************************************************** + * SetHandleContext (KERNEL32.@) + */ +BOOL WINAPI SetHandleContext(HANDLE hnd,DWORD context) +{ + FIXME("(%p,%ld), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd,context); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + +/*********************************************************************** + * GetHandleContext (KERNEL32.@) + */ +DWORD WINAPI GetHandleContext(HANDLE hnd) +{ + FIXME("(%p), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return 0; +} + + +/*********************************************************************** + * CreateSocketHandle (KERNEL32.@) + */ +HANDLE WINAPI CreateSocketHandle(void) +{ + FIXME("(), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return INVALID_HANDLE_VALUE; +} + + /*********************************************************************** * SetPriorityClass (KERNEL32.@) */ diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c index 6be9c01cecc..bda2839fe91 100644 --- a/dlls/kernel/sync.c +++ b/dlls/kernel/sync.c @@ -1487,6 +1487,31 @@ BOOL WINAPI SetMailslotInfo( HANDLE hMailslot, DWORD dwReadTimeout) } +/****************************************************************************** + * CreateIoCompletionPort (KERNEL32.@) + */ +HANDLE WINAPI CreateIoCompletionPort(HANDLE hFileHandle, HANDLE hExistingCompletionPort, + DWORD dwCompletionKey, DWORD dwNumberOfConcurrentThreads) +{ + FIXME("(%p, %p, %08lx, %08lx): stub.\n", + hFileHandle, hExistingCompletionPort, dwCompletionKey, dwNumberOfConcurrentThreads); + return NULL; +} + + +/****************************************************************************** + * GetQueuedCompletionStatus (KERNEL32.@) + */ +BOOL WINAPI GetQueuedCompletionStatus( HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, + LPDWORD lpCompletionKey, LPOVERLAPPED *lpOverlapped, + DWORD dwMilliseconds ) +{ + FIXME("(%p,%p,%p,%p,%ld), stub!\n", + CompletionPort,lpNumberOfBytesTransferred,lpCompletionKey,lpOverlapped,dwMilliseconds); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + #ifdef __i386__ /*********************************************************************** diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in index 59ff4174a5d..521ccd3b3d6 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -50,6 +50,8 @@ EXTRA_OBJS = $(ASM_SRCS:.s=.o) SUBDIRS = tests +EXTRASUBDIRS = $(TOPOBJDIR)/scheduler + @MAKE_DLL_RULES@ relay32.s: $(WINEBUILD) diff --git a/scheduler/handle.c b/scheduler/handle.c deleted file mode 100644 index a5bc9e5e015..00000000000 --- a/scheduler/handle.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Win32 process handles - * - * Copyright 1998 Alexandre Julliard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#ifdef HAVE_IO_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#include "windef.h" -#include "winbase.h" -#include "wine/server.h" -#include "winerror.h" -#include "wine/debug.h" -#include "../kernel/kernel_private.h" /* FIXME: to be changed when moving file to dlls/kernel */ - -WINE_DEFAULT_DEBUG_CHANNEL(win32); - -/********************************************************************* - * CloseW32Handle (KERNEL.474) - * CloseHandle (KERNEL32.@) - */ -BOOL WINAPI CloseHandle( HANDLE handle ) -{ - NTSTATUS status; - - /* stdio handles need special treatment */ - if ((handle == (HANDLE)STD_INPUT_HANDLE) || - (handle == (HANDLE)STD_OUTPUT_HANDLE) || - (handle == (HANDLE)STD_ERROR_HANDLE)) - handle = GetStdHandle( (DWORD)handle ); - - if (is_console_handle(handle)) - return CloseConsoleHandle(handle); - - status = NtClose( handle ); - if (status) SetLastError( RtlNtStatusToDosError(status) ); - return !status; -} - - -/********************************************************************* - * GetHandleInformation (KERNEL32.@) - */ -BOOL WINAPI GetHandleInformation( HANDLE handle, LPDWORD flags ) -{ - BOOL ret; - SERVER_START_REQ( set_handle_info ) - { - req->handle = handle; - req->flags = 0; - req->mask = 0; - req->fd = -1; - ret = !wine_server_call_err( req ); - if (ret && flags) *flags = reply->old_flags; - } - SERVER_END_REQ; - return ret; -} - - -/********************************************************************* - * SetHandleInformation (KERNEL32.@) - */ -BOOL WINAPI SetHandleInformation( HANDLE handle, DWORD mask, DWORD flags ) -{ - BOOL ret; - SERVER_START_REQ( set_handle_info ) - { - req->handle = handle; - req->flags = flags; - req->mask = mask; - req->fd = -1; - ret = !wine_server_call_err( req ); - } - SERVER_END_REQ; - return ret; -} - - -/********************************************************************* - * DuplicateHandle (KERNEL32.@) - */ -BOOL WINAPI DuplicateHandle( HANDLE source_process, HANDLE source, - HANDLE dest_process, HANDLE *dest, - DWORD access, BOOL inherit, DWORD options ) -{ - NTSTATUS status; - - if (is_console_handle(source)) - { - /* FIXME: this test is not sufficient, we need to test process ids, not handles */ - if (source_process != dest_process || - source_process != GetCurrentProcess()) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - *dest = DuplicateConsoleHandle( source, access, inherit, options ); - return (*dest != INVALID_HANDLE_VALUE); - } - status = NtDuplicateObject( source_process, source, dest_process, dest, - access, inherit ? OBJ_INHERIT : 0, options ); - if (status) SetLastError( RtlNtStatusToDosError(status) ); - return !status; -} - - -/*********************************************************************** - * ConvertToGlobalHandle (KERNEL.476) - * ConvertToGlobalHandle (KERNEL32.@) - */ -HANDLE WINAPI ConvertToGlobalHandle(HANDLE hSrc) -{ - HANDLE ret = INVALID_HANDLE_VALUE; - DuplicateHandle( GetCurrentProcess(), hSrc, GetCurrentProcess(), &ret, 0, FALSE, - DUP_HANDLE_MAKE_GLOBAL | DUP_HANDLE_SAME_ACCESS | DUP_HANDLE_CLOSE_SOURCE ); - return ret; -} - -/*********************************************************************** - * SetHandleContext (KERNEL32.@) - */ -BOOL WINAPI SetHandleContext(HANDLE hnd,DWORD context) { - FIXME("(%p,%ld), stub. In case this got called by WSOCK32/WS2_32: the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd,context); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - -/*********************************************************************** - * GetHandleContext (KERNEL32.@) - */ -DWORD WINAPI GetHandleContext(HANDLE hnd) { - FIXME("(%p), stub. In case this got called by WSOCK32/WS2_32: the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} - -/*********************************************************************** - * CreateSocketHandle (KERNEL32.@) - */ -HANDLE WINAPI CreateSocketHandle(void) { - FIXME("(), stub. In case this got called by WSOCK32/WS2_32: the external WINSOCK DLLs won't work with WINE, don't use them.\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return INVALID_HANDLE_VALUE; -} diff --git a/win32/newfns.c b/win32/newfns.c deleted file mode 100644 index 83c8f68efc1..00000000000 --- a/win32/newfns.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Win32 miscellaneous functions - * - * Copyright 1995 Thomas Sandford (tdgsandf@prds-grn.demon.co.uk) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* Misc. new functions - they should be moved into appropriate files -at a later date. */ - -#include "config.h" -#include "wine/port.h" - -#include -#include -#include -#ifdef HAVE_SYS_TIME_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif - -#define NONAMELESSUNION -#define NONAMELESSSTRUCT -#include "windef.h" -#include "winbase.h" -#include "winnls.h" -#include "winerror.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(win32); - - -/****************************************************************************** - * CreateIoCompletionPort (KERNEL32.@) - */ -HANDLE WINAPI CreateIoCompletionPort(HANDLE hFileHandle, -HANDLE hExistingCompletionPort, DWORD dwCompletionKey, -DWORD dwNumberOfConcurrentThreads) -{ - FIXME("(%p, %p, %08lx, %08lx): stub.\n", hFileHandle, hExistingCompletionPort, dwCompletionKey, dwNumberOfConcurrentThreads); - return NULL; -} - -/****************************************************************************** - * GetQueuedCompletionStatus (KERNEL32.@) - */ -BOOL WINAPI GetQueuedCompletionStatus( - HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, - LPDWORD lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds -) { - FIXME("(%p,%p,%p,%p,%ld), stub!\n",CompletionPort,lpNumberOfBytesTransferred,lpCompletionKey,lpOverlapped,dwMilliseconds); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - -/*********************************************************************** - * Beep (KERNEL32.@) - */ -BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur ) -{ - static const char beep = '\a'; - /* dwFreq and dwDur are ignored by Win95 */ - if (isatty(2)) write( 2, &beep, 1 ); - return TRUE; -}