diff --git a/reactos/dll/win32/kernel32/CMakeLists.txt b/reactos/dll/win32/kernel32/CMakeLists.txt
index 125128cb01a..0cd09d415eb 100644
--- a/reactos/dll/win32/kernel32/CMakeLists.txt
+++ b/reactos/dll/win32/kernel32/CMakeLists.txt
@@ -11,15 +11,28 @@ set_rc_compiler()
spec2def(kernel32.dll kernel32.spec)
list(APPEND SOURCE
+ client/atom.c
+ client/compname.c
client/debugger.c
+ client/dllmain.c
+ client/environ.c
client/except.c
client/fiber.c
+ client/handle.c
client/heapmem.c
client/job.c
+ client/loader.c
+ client/perfcnt.c
+ client/power.c
client/proc.c
+ client/resntfy.c
client/session.c
client/synch.c
+ client/sysinfo.c
+ client/timerqueue.c
+ client/utils.c
client/thread.c
+ client/version.c
client/virtmem.c
client/vista.c
client/file/backup.c
@@ -48,28 +61,15 @@ list(APPEND SOURCE
client/file/tape.c
client/file/volume.c
client/misc/actctx.c
- client/misc/atom.c
client/misc/comm.c
client/misc/commdcb.c
- client/misc/computername.c
- client/misc/dllmain.c
- client/misc/env.c
- client/misc/handle.c
- client/misc/ldr.c
client/misc/lzexpand.c
client/misc/muldiv.c
- client/misc/perfcnt.c
- client/misc/power.c
client/misc/profile.c
client/misc/res.c
- client/misc/resntfy.c
client/misc/stubs.c
- client/misc/sysinfo.c
client/misc/time.c
- client/misc/timerqueue.c
client/misc/toolhelp.c
- client/misc/utils.c
- client/misc/version.c
winnls/string/casemap.c
winnls/string/chartype.c
winnls/string/collation.c
@@ -98,7 +98,7 @@ add_library(kernel32 SHARED ${SOURCE})
set_entrypoint(kernel32 DllMain@12)
set_image_base(kernel32 ${baseaddress_kernel32})
-target_link_libraries(kernel32 chkstk ${PSEH_LIB})
+target_link_libraries(kernel32 wine chkstk ${PSEH_LIB})
add_importlibs(kernel32 ntdll)
add_pch(kernel32 k32.h)
diff --git a/reactos/dll/win32/kernel32/client/misc/atom.c b/reactos/dll/win32/kernel32/client/atom.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/atom.c
rename to reactos/dll/win32/kernel32/client/atom.c
diff --git a/reactos/dll/win32/kernel32/client/misc/computername.c b/reactos/dll/win32/kernel32/client/compname.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/computername.c
rename to reactos/dll/win32/kernel32/client/compname.c
diff --git a/reactos/dll/win32/kernel32/client/misc/dllmain.c b/reactos/dll/win32/kernel32/client/dllmain.c
similarity index 99%
rename from reactos/dll/win32/kernel32/client/misc/dllmain.c
rename to reactos/dll/win32/kernel32/client/dllmain.c
index c29a1828481..aa319546601 100644
--- a/reactos/dll/win32/kernel32/client/misc/dllmain.c
+++ b/reactos/dll/win32/kernel32/client/dllmain.c
@@ -26,6 +26,7 @@ WCHAR BaseDefaultPathBuffer[6140];
HANDLE hProcessHeap = NULL;
HMODULE hCurrentModule = NULL;
+HMODULE kernel32_handle = NULL;
HANDLE hBaseDir = NULL;
PPEB Peb;
ULONG SessionId;
@@ -323,7 +324,7 @@ DllMain(HANDLE hDll,
RtlInitializeHandleTable(0xFFFF,
sizeof(BASE_HEAP_HANDLE_ENTRY),
&BaseHeapHandleTable);
- hCurrentModule = hDll;
+ kernel32_handle = hCurrentModule = hDll;
DPRINT("Heap: %p\n", hProcessHeap);
/*
diff --git a/reactos/dll/win32/kernel32/client/misc/env.c b/reactos/dll/win32/kernel32/client/environ.c
similarity index 82%
rename from reactos/dll/win32/kernel32/client/misc/env.c
rename to reactos/dll/win32/kernel32/client/environ.c
index 3ff452b583e..73857dc246f 100644
--- a/reactos/dll/win32/kernel32/client/misc/env.c
+++ b/reactos/dll/win32/kernel32/client/environ.c
@@ -19,85 +19,6 @@
/* FUNCTIONS ******************************************************************/
-/*
- * @implemented
- */
-BOOL
-WINAPI
-Beep (DWORD dwFreq, DWORD dwDuration)
-{
- HANDLE hBeep;
- UNICODE_STRING BeepDevice;
- OBJECT_ATTRIBUTES ObjectAttributes;
- IO_STATUS_BLOCK IoStatusBlock;
- BEEP_SET_PARAMETERS BeepSetParameters;
- NTSTATUS Status;
-
- /* check the parameters */
- if ((dwFreq >= 0x25 && dwFreq <= 0x7FFF) ||
- (dwFreq == 0x0 && dwDuration == 0x0))
- {
- /* open the device */
- RtlInitUnicodeString(&BeepDevice,
- L"\\Device\\Beep");
-
- InitializeObjectAttributes(&ObjectAttributes,
- &BeepDevice,
- 0,
- NULL,
- NULL);
-
- Status = NtCreateFile(&hBeep,
- FILE_READ_DATA | FILE_WRITE_DATA,
- &ObjectAttributes,
- &IoStatusBlock,
- NULL,
- 0,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- FILE_OPEN_IF,
- 0,
- NULL,
- 0);
- if (NT_SUCCESS(Status))
- {
- /* Set beep data */
- BeepSetParameters.Frequency = dwFreq;
- BeepSetParameters.Duration = dwDuration;
-
- Status = NtDeviceIoControlFile(hBeep,
- NULL,
- NULL,
- NULL,
- &IoStatusBlock,
- IOCTL_BEEP_SET,
- &BeepSetParameters,
- sizeof(BEEP_SET_PARAMETERS),
- NULL,
- 0);
-
- /* do an alertable wait if necessary */
- if (NT_SUCCESS(Status) &&
- (dwFreq != 0x0 || dwDuration != 0x0) && dwDuration != MAXDWORD)
- {
- SleepEx(dwDuration,
- TRUE);
- }
-
- NtClose(hBeep);
- }
- }
- else
- Status = STATUS_INVALID_PARAMETER;
-
- if (!NT_SUCCESS(Status))
- {
- SetLastErrorByStatus (Status);
- return FALSE;
- }
-
- return TRUE;
-}
-
/*
* @implemented
*/
diff --git a/reactos/dll/win32/kernel32/client/file/deviceio.c b/reactos/dll/win32/kernel32/client/file/deviceio.c
index a3016ed75b9..ee9c4db542f 100644
--- a/reactos/dll/win32/kernel32/client/file/deviceio.c
+++ b/reactos/dll/win32/kernel32/client/file/deviceio.c
@@ -14,6 +14,85 @@
/* FUNCTIONS ******************************************************************/
+/*
+ * @implemented
+ */
+BOOL
+WINAPI
+Beep (DWORD dwFreq, DWORD dwDuration)
+{
+ HANDLE hBeep;
+ UNICODE_STRING BeepDevice;
+ OBJECT_ATTRIBUTES ObjectAttributes;
+ IO_STATUS_BLOCK IoStatusBlock;
+ BEEP_SET_PARAMETERS BeepSetParameters;
+ NTSTATUS Status;
+
+ /* check the parameters */
+ if ((dwFreq >= 0x25 && dwFreq <= 0x7FFF) ||
+ (dwFreq == 0x0 && dwDuration == 0x0))
+ {
+ /* open the device */
+ RtlInitUnicodeString(&BeepDevice,
+ L"\\Device\\Beep");
+
+ InitializeObjectAttributes(&ObjectAttributes,
+ &BeepDevice,
+ 0,
+ NULL,
+ NULL);
+
+ Status = NtCreateFile(&hBeep,
+ FILE_READ_DATA | FILE_WRITE_DATA,
+ &ObjectAttributes,
+ &IoStatusBlock,
+ NULL,
+ 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ FILE_OPEN_IF,
+ 0,
+ NULL,
+ 0);
+ if (NT_SUCCESS(Status))
+ {
+ /* Set beep data */
+ BeepSetParameters.Frequency = dwFreq;
+ BeepSetParameters.Duration = dwDuration;
+
+ Status = NtDeviceIoControlFile(hBeep,
+ NULL,
+ NULL,
+ NULL,
+ &IoStatusBlock,
+ IOCTL_BEEP_SET,
+ &BeepSetParameters,
+ sizeof(BEEP_SET_PARAMETERS),
+ NULL,
+ 0);
+
+ /* do an alertable wait if necessary */
+ if (NT_SUCCESS(Status) &&
+ (dwFreq != 0x0 || dwDuration != 0x0) && dwDuration != MAXDWORD)
+ {
+ SleepEx(dwDuration,
+ TRUE);
+ }
+
+ NtClose(hBeep);
+ }
+ }
+ else
+ Status = STATUS_INVALID_PARAMETER;
+
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastErrorByStatus (Status);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/*
* @implemented
*/
diff --git a/reactos/dll/win32/kernel32/client/misc/handle.c b/reactos/dll/win32/kernel32/client/handle.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/handle.c
rename to reactos/dll/win32/kernel32/client/handle.c
diff --git a/reactos/dll/win32/kernel32/client/misc/ldr.c b/reactos/dll/win32/kernel32/client/loader.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/ldr.c
rename to reactos/dll/win32/kernel32/client/loader.c
diff --git a/reactos/dll/win32/kernel32/client/misc/perfcnt.c b/reactos/dll/win32/kernel32/client/perfcnt.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/perfcnt.c
rename to reactos/dll/win32/kernel32/client/perfcnt.c
diff --git a/reactos/dll/win32/kernel32/client/misc/power.c b/reactos/dll/win32/kernel32/client/power.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/power.c
rename to reactos/dll/win32/kernel32/client/power.c
diff --git a/reactos/dll/win32/kernel32/client/misc/resntfy.c b/reactos/dll/win32/kernel32/client/resntfy.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/resntfy.c
rename to reactos/dll/win32/kernel32/client/resntfy.c
diff --git a/reactos/dll/win32/kernel32/client/misc/sysinfo.c b/reactos/dll/win32/kernel32/client/sysinfo.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/sysinfo.c
rename to reactos/dll/win32/kernel32/client/sysinfo.c
diff --git a/reactos/dll/win32/kernel32/client/misc/timerqueue.c b/reactos/dll/win32/kernel32/client/timerqueue.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/timerqueue.c
rename to reactos/dll/win32/kernel32/client/timerqueue.c
diff --git a/reactos/dll/win32/kernel32/client/misc/utils.c b/reactos/dll/win32/kernel32/client/utils.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/utils.c
rename to reactos/dll/win32/kernel32/client/utils.c
diff --git a/reactos/dll/win32/kernel32/client/misc/version.c b/reactos/dll/win32/kernel32/client/version.c
similarity index 100%
rename from reactos/dll/win32/kernel32/client/misc/version.c
rename to reactos/dll/win32/kernel32/client/version.c
diff --git a/reactos/dll/win32/kernel32/kernel32.rbuild b/reactos/dll/win32/kernel32/kernel32.rbuild
index e85108e3ac1..6adde238761 100644
--- a/reactos/dll/win32/kernel32/kernel32.rbuild
+++ b/reactos/dll/win32/kernel32/kernel32.rbuild
@@ -7,16 +7,12 @@
include
include/reactos/subsys
pseh
- normalize
+ wine
ntdll
0x0600
errcodes
k32.h
-
- -fno-exceptions
- -fno-rtti
-
@@ -30,17 +26,30 @@
thread.S
+ atom.c
+ compname.c
debugger.c
+ dllmain.c
+ environ.c
except.c
- vista.c
- synch.c
fiber.c
- thread.c
+ handle.c
heapmem.c
- virtmem.c
job.c
+ loader.c
+ perfcnt.c
+ power.c
proc.c
+ resntfy.c
session.c
+ synch.c
+ sysinfo.c
+ timerqueue.c
+ thread.c
+ utils.c
+ version.c
+ virtmem.c
+ vista.c
backup.c
bintype.c
@@ -70,28 +79,15 @@
actctx.c
- atom.c
comm.c
commdcb.c
- computername.c
- dllmain.c
- env.c
- handle.c
- ldr.c
lzexpand.c
muldiv.c
- perfcnt.c
- power.c
- resntfy.c
+ profile.c
res.c
stubs.c
- sysinfo.c
time.c
- timerqueue.c
toolhelp.c
- version.c
- profile.c
- utils.c