diff --git a/src/core/internal/abort.d b/src/core/internal/abort.d index 07f04ee660..05733b5fd9 100644 --- a/src/core/internal/abort.d +++ b/src/core/internal/abort.d @@ -19,7 +19,7 @@ void abort(scope string msg, scope string filename = __FILE__, size_t line = __L } else version (Windows) { - import core.sys.windows.windows: GetStdHandle, STD_ERROR_HANDLE, WriteFile, INVALID_HANDLE_VALUE; + import core.sys.windows.winbase : GetStdHandle, STD_ERROR_HANDLE, WriteFile, INVALID_HANDLE_VALUE; auto h = (() @trusted => GetStdHandle(STD_ERROR_HANDLE))(); if (h == INVALID_HANDLE_VALUE) // attempt best we can to print the message diff --git a/src/core/runtime.d b/src/core/runtime.d index a77f0edbc0..283c47c7bf 100644 --- a/src/core/runtime.d +++ b/src/core/runtime.d @@ -227,7 +227,8 @@ struct Runtime import core.stdc.stdlib : free, malloc; version (Windows) { - import core.sys.windows.windows; + import core.sys.windows.winnls : CP_UTF8, MultiByteToWideChar; + import core.sys.windows.winnt : WCHAR; if (name.length == 0) return null; // Load a DLL at runtime @@ -990,7 +991,7 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) { static enum FIRSTFRAME = 0; } - import core.sys.windows.windows : CONTEXT; + import core.sys.windows.winnt : CONTEXT; auto s = new StackTrace(FIRSTFRAME, cast(CONTEXT*)ptr); return s; } diff --git a/src/core/sync/condition.d b/src/core/sync/condition.d index 30f990cf30..18f5ff3161 100644 --- a/src/core/sync/condition.d +++ b/src/core/sync/condition.d @@ -23,7 +23,12 @@ public import core.time; version (Windows) { private import core.sync.semaphore; - private import core.sys.windows.windows; + private import core.sys.windows.basetsd /+: HANDLE+/; + private import core.sys.windows.winbase /+: CloseHandle, CreateSemaphoreA, CRITICAL_SECTION, + DeleteCriticalSection, EnterCriticalSection, INFINITE, InitializeCriticalSection, + LeaveCriticalSection, ReleaseSemaphore, WAIT_OBJECT_0, WaitForSingleObject+/; + private import core.sys.windows.windef /+: BOOL, DWORD+/; + private import core.sys.windows.winerror /+: WAIT_TIMEOUT+/; } else version (Posix) { diff --git a/src/core/sync/mutex.d b/src/core/sync/mutex.d index c026c1421a..67c9f18d46 100644 --- a/src/core/sync/mutex.d +++ b/src/core/sync/mutex.d @@ -20,7 +20,9 @@ public import core.sync.exception; version (Windows) { - private import core.sys.windows.windows; + private import core.sys.windows.winbase /+: CRITICAL_SECTION, DeleteCriticalSection, + EnterCriticalSection, InitializeCriticalSection, LeaveCriticalSection, + TryEnterCriticalSection+/; } else version (Posix) { diff --git a/src/core/sync/semaphore.d b/src/core/sync/semaphore.d index c1c9034789..a7e52fa9d8 100644 --- a/src/core/sync/semaphore.d +++ b/src/core/sync/semaphore.d @@ -29,7 +29,11 @@ else version (WatchOS) version (Windows) { - private import core.sys.windows.windows; + private import core.sys.windows.basetsd /+: HANDLE+/; + private import core.sys.windows.winbase /+: CloseHandle, CreateSemaphoreA, INFINITE, + ReleaseSemaphore, WAIT_OBJECT_0, WaitForSingleObject+/; + private import core.sys.windows.windef /+: BOOL, DWORD+/; + private import core.sys.windows.winerror /+: WAIT_TIMEOUT+/; } else version (Darwin) { diff --git a/src/core/sys/windows/aclapi.d b/src/core/sys/windows/aclapi.d index ed05161bb0..762a4dbed0 100644 --- a/src/core/sys/windows/aclapi.d +++ b/src/core/sys/windows/aclapi.d @@ -13,7 +13,7 @@ version (Windows): version (ANSI) {} else version = Unicode; pragma(lib, "advapi32"); -import core.sys.windows.windows, core.sys.windows.accctrl; +import core.sys.windows.accctrl, core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt; extern (Windows) { VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, diff --git a/src/core/sys/windows/com.d b/src/core/sys/windows/com.d index 15b3d9db07..34aeccc946 100644 --- a/src/core/sys/windows/com.d +++ b/src/core/sys/windows/com.d @@ -4,7 +4,7 @@ version (Windows): pragma(lib,"uuid"); import core.atomic; -import core.sys.windows.windows; +import core.sys.windows.windef /+: HRESULT, LONG, ULONG+/; //import std.string; public import core.sys.windows.basetyps : GUID, IID, CLSID; diff --git a/src/core/sys/windows/comcat.d b/src/core/sys/windows/comcat.d index 36c6a9125c..baa0606bae 100644 --- a/src/core/sys/windows/comcat.d +++ b/src/core/sys/windows/comcat.d @@ -10,7 +10,7 @@ module core.sys.windows.comcat; version (Windows): -import core.sys.windows.windows, core.sys.windows.ole2; +import core.sys.windows.ole2; private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes; diff --git a/src/core/sys/windows/dbghelp.d b/src/core/sys/windows/dbghelp.d index fddfc633c3..44c1957143 100644 --- a/src/core/sys/windows/dbghelp.d +++ b/src/core/sys/windows/dbghelp.d @@ -12,7 +12,8 @@ module core.sys.windows.dbghelp; version (Windows): -import core.sys.windows.windows; +import core.sys.windows.winbase /+: FreeLibrary, GetProcAddress, LoadLibraryA+/; +import core.sys.windows.windef; public import core.sys.windows.dbghelp_types; diff --git a/src/core/sys/windows/dbghelp_types.d b/src/core/sys/windows/dbghelp_types.d index ff52c565e1..c645cbfc01 100644 --- a/src/core/sys/windows/dbghelp_types.d +++ b/src/core/sys/windows/dbghelp_types.d @@ -14,7 +14,8 @@ version (Windows): version (ANSI) {} else version = Unicode; -import core.sys.windows.windows; +import core.sys.windows.windef; +import core.sys.windows.imagehlp /+: ADDRESS_MODE+/; public import core.sys.windows.winnt : TCHAR; diff --git a/src/core/sys/windows/dll.d b/src/core/sys/windows/dll.d index 58cf4ad262..e8e0c89d0e 100644 --- a/src/core/sys/windows/dll.d +++ b/src/core/sys/windows/dll.d @@ -12,7 +12,8 @@ module core.sys.windows.dll; version (Windows): -import core.sys.windows.windows; +import core.sys.windows.winbase; +import core.sys.windows.winnt; import core.stdc.string; import core.runtime; @@ -473,12 +474,12 @@ bool dll_thread_detach( bool detach_thread = true, bool exitTls = true ) /// --- mixin template SimpleDllMain() { - import core.sys.windows.windows : HINSTANCE; + import core.sys.windows.windef : HINSTANCE; extern(Windows) bool DllMain(HINSTANCE hInstance, uint ulReason, void* reserved) { - import core.sys.windows.windows; + import core.sys.windows.winnt; import core.sys.windows.dll : dll_process_attach, dll_process_detach, dll_thread_attach, dll_thread_detach; diff --git a/src/core/sys/windows/httpext.d b/src/core/sys/windows/httpext.d index 93b03f58f1..9073777b02 100644 --- a/src/core/sys/windows/httpext.d +++ b/src/core/sys/windows/httpext.d @@ -19,7 +19,9 @@ version (Windows): MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ -private import core.sys.windows.windows; +private import core.sys.windows.basetsd /+: DECLARE_HANDLE, HANDLE+/; +private import core.sys.windows.windef /+: BOOL, CHAR, DWORD, LPBYTE, LPDWORD+/; +private import core.sys.windows.winnt /+: LPCSTR, LPSTR, LPVOID, PVOID, VOID+/; enum { HSE_VERSION_MAJOR = 2, diff --git a/src/core/sys/windows/oledlg.d b/src/core/sys/windows/oledlg.d index 71b5dcd7c0..e44fb7dbad 100644 --- a/src/core/sys/windows/oledlg.d +++ b/src/core/sys/windows/oledlg.d @@ -11,8 +11,7 @@ version (Windows): version (ANSI) {} else version = Unicode; -import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi, - core.sys.windows.windows; +import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi; private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt; // FIXME: remove inherited methods from interface definitions diff --git a/src/core/sys/windows/snmp.d b/src/core/sys/windows/snmp.d index 09901507f9..4f550184d0 100644 --- a/src/core/sys/windows/snmp.d +++ b/src/core/sys/windows/snmp.d @@ -10,7 +10,9 @@ module core.sys.windows.snmp; version (Windows): -private import core.sys.windows.windows; +private import core.sys.windows.basetsd /+: HANDLE+/; +private import core.sys.windows.windef /+: BOOL, BYTE, DWORD, INT, LONG, UINT, ULONG+/; +private import core.sys.windows.winnt /+: LPSTR, LPVOID, ULARGE_INTEGER, VOID+/; // These are not documented on MSDN enum { diff --git a/src/core/sys/windows/stacktrace.d b/src/core/sys/windows/stacktrace.d index 13f33edc3e..2f817957e3 100644 --- a/src/core/sys/windows/stacktrace.d +++ b/src/core/sys/windows/stacktrace.d @@ -17,7 +17,9 @@ import core.runtime; import core.stdc.stdlib; import core.stdc.string; import core.sys.windows.dbghelp; -import core.sys.windows.windows; +import core.sys.windows.imagehlp /+: ADDRESS_MODE+/; +import core.sys.windows.winbase; +import core.sys.windows.windef; //debug=PRINTF; debug(PRINTF) import core.stdc.stdio; diff --git a/src/core/sys/windows/threadaux.d b/src/core/sys/windows/threadaux.d index df91be0c05..94ff46d325 100644 --- a/src/core/sys/windows/threadaux.d +++ b/src/core/sys/windows/threadaux.d @@ -12,7 +12,10 @@ module core.sys.windows.threadaux; version (Windows): -import core.sys.windows.windows; +import core.sys.windows.basetsd/+ : HANDLE+/; +import core.sys.windows.winbase/+ : CloseHandle, GetCurrentThreadId, GetCurrentProcessId, + GetModuleHandleA, GetProcAddress+/; +import core.sys.windows.windef/+ : BOOL, DWORD, FALSE, HRESULT+/; import core.stdc.stdlib; public import core.thread; diff --git a/src/core/sys/windows/wininet.d b/src/core/sys/windows/wininet.d index 0528f9fbf3..296627e8e3 100644 --- a/src/core/sys/windows/wininet.d +++ b/src/core/sys/windows/wininet.d @@ -15,7 +15,7 @@ pragma(lib, "wininet"); // FIXME: check types and grouping of constants -import core.sys.windows.windows; +import core.sys.windows.winbase, core.sys.windows.windef; enum { INTERNET_INVALID_PORT_NUMBER = 0, diff --git a/src/core/thread.d b/src/core/thread.d index f402d0939a..b75b232f94 100644 --- a/src/core/thread.d +++ b/src/core/thread.d @@ -65,7 +65,7 @@ version (Posix) } else version (Windows) { - alias getpid = core.sys.windows.windows.GetCurrentProcessId; + alias getpid = core.sys.windows.winbase.GetCurrentProcessId; } @@ -185,8 +185,15 @@ version (Windows) { import core.stdc.stdint : uintptr_t; // for _beginthreadex decl below import core.stdc.stdlib; // for malloc, atexit - import core.sys.windows.windows; - import core.sys.windows.threadaux; // for OpenThreadHandle + import core.sys.windows.basetsd /+: HANDLE+/; + import core.sys.windows.threadaux /+: getThreadStackBottom, impersonate_thread, OpenThreadHandle+/; + import core.sys.windows.winbase /+: CloseHandle, CREATE_SUSPENDED, DuplicateHandle, GetCurrentThread, + GetCurrentThreadId, GetCurrentProcess, GetExitCodeThread, GetSystemInfo, GetThreadContext, + GetThreadPriority, INFINITE, ResumeThread, SetThreadPriority, Sleep, STILL_ACTIVE, + SuspendThread, SwitchToThread, SYSTEM_INFO, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_NORMAL, + THREAD_PRIORITY_TIME_CRITICAL, WAIT_OBJECT_0, WaitForSingleObject+/; + import core.sys.windows.windef /+: TRUE+/; + import core.sys.windows.winnt /+: CONTEXT, CONTEXT_CONTROL, CONTEXT_INTEGER+/; extern (Windows) alias btex_fptr = uint function(void*); extern (C) uintptr_t _beginthreadex(void*, uint, btex_fptr, void*, uint, uint*) nothrow; diff --git a/src/core/time.d b/src/core/time.d index 75724dac4a..d08bc0d916 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -85,7 +85,7 @@ import core.internal.string; version (Windows) { -import core.sys.windows.windows; +import core.sys.windows.winbase /+: QueryPerformanceCounter, QueryPerformanceFrequency+/; } else version (Posix) { diff --git a/src/gc/os.d b/src/gc/os.d index 2bff6e501f..085067d1be 100644 --- a/src/gc/os.d +++ b/src/gc/os.d @@ -16,7 +16,8 @@ module gc.os; version (Windows) { - import core.sys.windows.windows; + import core.sys.windows.winbase : GetCurrentThreadId, VirtualAlloc, VirtualFree; + import core.sys.windows.winnt : MEM_COMMIT, MEM_RELEASE, MEM_RESERVE, PAGE_READWRITE; alias int pthread_t; @@ -172,7 +173,7 @@ version (Windows) return false; else { - import core.sys.windows.windows; + import core.sys.windows.winbase : GlobalMemoryStatus, MEMORYSTATUS; MEMORYSTATUS stat; GlobalMemoryStatus(&stat); // Less than 5 % of virtual address space available diff --git a/src/rt/cover.d b/src/rt/cover.d index 9e25285bb3..291a3e6a65 100644 --- a/src/rt/cover.d +++ b/src/rt/cover.d @@ -14,7 +14,10 @@ module rt.cover; private { version (Windows) - import core.sys.windows.windows; + { + import core.sys.windows.basetsd /+: HANDLE+/; + import core.sys.windows.winbase /+: LOCKFILE_EXCLUSIVE_LOCK, LockFileEx, OVERLAPPED, SetEndOfFile+/; + } else version (Posix) { import core.sys.posix.fcntl; diff --git a/src/rt/deh_win32.d b/src/rt/deh_win32.d index f84d83ac04..82361bb7e4 100644 --- a/src/rt/deh_win32.d +++ b/src/rt/deh_win32.d @@ -13,7 +13,9 @@ module rt.deh_win32; version (Win32): -import core.sys.windows.windows; +import core.sys.windows.basetsd /+: ULONG_PTR+/; +import core.sys.windows.windef /+: BOOL, BYTE, DWORD+/; +import core.sys.windows.winnt /+: PVOID+/; import rt.monitor_; //import core.stdc.stdio; diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 3057ec2090..901b959589 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -26,7 +26,14 @@ private version (Windows) { private import core.stdc.wchar_; - private import core.sys.windows.windows; + private import core.sys.windows.basetsd /+: HANDLE+/; + private import core.sys.windows.shellapi /+: CommandLineToArgvW+/; + private import core.sys.windows.winbase /+: FreeLibrary, GetCommandLineW, GetProcAddress, + IsDebuggerPresent, LoadLibraryA, LoadLibraryW, LocalFree, WriteFile+/; + private import core.sys.windows.wincon /+: CONSOLE_SCREEN_BUFFER_INFO, GetConsoleOutputCP, GetConsoleScreenBufferInfo+/; + private import core.sys.windows.winnls /+: CP_UTF8, MultiByteToWideChar, WideCharToMultiByte+/; + private import core.sys.windows.winnt /+: WCHAR+/; + private import core.sys.windows.winuser /+: MB_ICONERROR, MessageBoxW+/; pragma(lib, "shell32.lib"); // needed for CommandLineToArgvW } diff --git a/src/rt/monitor_.d b/src/rt/monitor_.d index c9e5964461..2a9f7ee093 100644 --- a/src/rt/monitor_.d +++ b/src/rt/monitor_.d @@ -180,7 +180,8 @@ version (Windows) { pragma(lib, "snn.lib"); } - import core.sys.windows.windows; + import core.sys.windows.winbase /+: CRITICAL_SECTION, DeleteCriticalSection, + EnterCriticalSection, InitializeCriticalSection, LeaveCriticalSection+/; alias Mutex = CRITICAL_SECTION;