diff --git a/debugger/winedbg.c b/debugger/winedbg.c index 476b76a91e8..7a310c254b7 100644 --- a/debugger/winedbg.c +++ b/debugger/winedbg.c @@ -25,7 +25,7 @@ #include #include "debugger.h" -#include "ntddk.h" +#include "winternl.h" #include "thread.h" #include "wincon.h" #include "winreg.h" diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 9bcacfc6f09..1c515f00263 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -24,7 +24,7 @@ #include "winerror.h" #include "rpcnterr.h" #include "heap.h" -#include "ntddk.h" +#include "winternl.h" #include "ntsecapi.h" #include "wine/debug.h" diff --git a/dlls/commdlg/filedlg95.c b/dlls/commdlg/filedlg95.c index abc7b8b4fb0..e0213eea152 100644 --- a/dlls/commdlg/filedlg95.c +++ b/dlls/commdlg/filedlg95.c @@ -60,7 +60,7 @@ #include #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "winnls.h" #include "wine/unicode.h" #include "commdlg.h" diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c index 5e2552ca01b..1adb6c9728c 100644 --- a/dlls/dsound/buffer.c +++ b/dlls/dsound/buffer.c @@ -37,7 +37,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/debug.h" @@ -985,4 +985,3 @@ HRESULT WINAPI SecondaryBuffer_Create( *pdsb = dsb; return S_OK; } - diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c index f6012b9345d..8a8eb766d13 100644 --- a/dlls/dsound/dsound_main.c +++ b/dlls/dsound/dsound_main.c @@ -58,7 +58,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/winbase16.h" diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c index c6e7013447d..1af40c3e900 100644 --- a/dlls/dsound/mixer.c +++ b/dlls/dsound/mixer.c @@ -37,7 +37,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/debug.h" diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c index 3b7a5cd98f2..fc28794fd36 100644 --- a/dlls/dsound/primary.c +++ b/dlls/dsound/primary.c @@ -37,7 +37,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/debug.h" diff --git a/dlls/dsound/propset.c b/dlls/dsound/propset.c index 2cc6ac32608..67abde80533 100644 --- a/dlls/dsound/propset.c +++ b/dlls/dsound/propset.c @@ -37,7 +37,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/debug.h" diff --git a/dlls/dsound/sound3d.c b/dlls/dsound/sound3d.c index a0b867cb6c5..dce77f1b2d5 100644 --- a/dlls/dsound/sound3d.c +++ b/dlls/dsound/sound3d.c @@ -54,7 +54,7 @@ #include "winuser.h" #include "winerror.h" #include "mmsystem.h" -#include "ntddk.h" +#include "winternl.h" #include "mmddk.h" #include "wine/windef16.h" #include "wine/debug.h" diff --git a/dlls/gdi/driver.c b/dlls/gdi/driver.c index e84943878c3..6849353508a 100644 --- a/dlls/gdi/driver.c +++ b/dlls/gdi/driver.c @@ -24,7 +24,7 @@ #include #include "winbase.h" #include "winreg.h" -#include "ntddk.h" +#include "winternl.h" #include "gdi.h" #include "win16drv/win16drv.h" diff --git a/dlls/kernel/kernel_main.c b/dlls/kernel/kernel_main.c index ac0fa8a7b9b..555a9315113 100644 --- a/dlls/kernel/kernel_main.c +++ b/dlls/kernel/kernel_main.c @@ -29,7 +29,7 @@ #include "winbase.h" #include "wincon.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "wine/library.h" diff --git a/dlls/kernel/locale.c b/dlls/kernel/locale.c index 15f84fcb016..9503e1c85cf 100644 --- a/dlls/kernel/locale.c +++ b/dlls/kernel/locale.c @@ -32,7 +32,7 @@ #include "windef.h" #include "winbase.h" #include "winuser.h" /* for RT_STRINGW */ -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "winnls.h" #include "winerror.h" diff --git a/dlls/kernel/thunk.c b/dlls/kernel/thunk.c index 2cb9f9cb1e1..ffe309b9db1 100644 --- a/dlls/kernel/thunk.c +++ b/dlls/kernel/thunk.c @@ -32,7 +32,7 @@ #include "windef.h" #include "winbase.h" #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "wine/debug.h" diff --git a/dlls/kernel/time.c b/dlls/kernel/time.c index a4c5821aa62..8f42779aced 100644 --- a/dlls/kernel/time.c +++ b/dlls/kernel/time.c @@ -32,7 +32,7 @@ # include #endif #include "file.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "winnls.h" #include "wine/unicode.h" diff --git a/dlls/kernel/utthunk.c b/dlls/kernel/utthunk.c index ba649b6bf6d..e9819662058 100644 --- a/dlls/kernel/utthunk.c +++ b/dlls/kernel/utthunk.c @@ -19,7 +19,7 @@ */ #include "wine/winbase16.h" -#include "ntddk.h" +#include "winternl.h" #include "module.h" #include "wine/debug.h" @@ -312,4 +312,3 @@ WORD WINAPI UTInit16( DWORD x1, DWORD x2, DWORD x3, DWORD x4 ) FIXME("(%08lx, %08lx, %08lx, %08lx): stub\n", x1, x2, x3, x4 ); return 0; } - diff --git a/dlls/kernel/wowthunk.c b/dlls/kernel/wowthunk.c index 845bb10e5ee..19b7cdbca89 100644 --- a/dlls/kernel/wowthunk.c +++ b/dlls/kernel/wowthunk.c @@ -25,7 +25,7 @@ #include "winbase.h" #include "winerror.h" #include "wownt32.h" -#include "ntddk.h" +#include "winternl.h" #include "file.h" #include "miscemu.h" #include "stackframe.h" diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/cppexcept.c index 007d021233a..0c31fa40fa1 100644 --- a/dlls/msvcrt/cppexcept.c +++ b/dlls/msvcrt/cppexcept.c @@ -26,7 +26,7 @@ #include "config.h" #include "wine/port.h" -#include "ntddk.h" +#include "winternl.h" #include "msvcrt.h" #include "wine/exception.h" #include "msvcrt/excpt.h" diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 623d3b612c4..b7e0acc4e02 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -25,7 +25,7 @@ #include "wine/port.h" #include -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "msvcrt.h" #include "ms_errno.h" diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index ffdc27114bd..e9ca5010839 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -28,7 +28,7 @@ #include "config.h" #include "wine/port.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/exception.h" #include "thread.h" #include "msvcrt.h" diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 6ac8dde7d03..9dedf0a1bbc 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -30,7 +30,7 @@ # include #endif -#include "ntddk.h" +#include "winternl.h" #include "msvcrt.h" #include "ms_errno.h" diff --git a/dlls/netapi32/wksta.c b/dlls/netapi32/wksta.c index 8ff7ae25361..f94857dd3df 100644 --- a/dlls/netapi32/wksta.c +++ b/dlls/netapi32/wksta.c @@ -24,7 +24,7 @@ #include "lmapibuf.h" #include "lmerr.h" #include "winerror.h" -#include "ntdef.h" +#include "winternl.h" #include "ntsecapi.h" #include "wine/debug.h" diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c index 223afcb19d1..f53a39285ed 100644 --- a/dlls/ntdll/cdrom.c +++ b/dlls/ntdll/cdrom.c @@ -61,7 +61,7 @@ # include #endif -#include "ntddk.h" +#include "winternl.h" #include "winioctl.h" #include "ntddstor.h" #include "ntddcdrm.h" diff --git a/dlls/ntdll/critsection.c b/dlls/ntdll/critsection.c index ae89e7d7b85..5835610c5c5 100644 --- a/dlls/ntdll/critsection.c +++ b/dlls/ntdll/critsection.c @@ -26,7 +26,7 @@ #include #include #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); diff --git a/dlls/ntdll/debugtools.c b/dlls/ntdll/debugtools.c index 7a1497e4c46..4a9a5f75174 100644 --- a/dlls/ntdll/debugtools.c +++ b/dlls/ntdll/debugtools.c @@ -40,7 +40,7 @@ #include "thread.h" #include "winbase.h" #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "msvcrt/excpt.h" WINE_DECLARE_DEBUG_CHANNEL(tid); diff --git a/dlls/ntdll/error.c b/dlls/ntdll/error.c index 01c0e2bf604..ce0e8f4e281 100644 --- a/dlls/ntdll/error.c +++ b/dlls/ntdll/error.c @@ -20,7 +20,7 @@ */ #include "config.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "wine/debug.h" @@ -38,7 +38,7 @@ static const struct error_table error_table[20]; /************************************************************************** * RtlNtStatusToDosError (NTDLL.@) */ -DWORD WINAPI RtlNtStatusToDosError( DWORD status ) +ULONG WINAPI RtlNtStatusToDosError( NTSTATUS status ) { const struct error_table *table = error_table; diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c index 8bfe7b7046e..3a12fd00755 100644 --- a/dlls/ntdll/exception.c +++ b/dlls/ntdll/exception.c @@ -26,7 +26,7 @@ #include #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "global.h" #include "wine/exception.h" #include "stackframe.h" @@ -252,7 +252,7 @@ void WINAPI EXC_RtlRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context ) * RtlUnwind (NTDLL.@) */ DEFINE_REGS_ENTRYPOINT_4( RtlUnwind, EXC_RtlUnwind, - PEXCEPTION_FRAME, LPVOID, PEXCEPTION_RECORD, DWORD ); + PVOID, PVOID, PEXCEPTION_RECORD, PVOID ); void WINAPI EXC_RtlUnwind( PEXCEPTION_FRAME pEndFrame, LPVOID unusedEip, PEXCEPTION_RECORD pRecord, DWORD returnEax, CONTEXT *context ) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 6159d41db43..1c6fbbd797b 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -35,7 +35,7 @@ #include "ntdll_misc.h" #include "file.h" /* FIXME */ -#include "ntddk.h" +#include "winternl.h" #include "winioctl.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c index f9eb76b7a96..67b77cfa3de 100644 --- a/dlls/ntdll/heap.c +++ b/dlls/ntdll/heap.c @@ -26,7 +26,7 @@ #include #include -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "winbase.h" #include "winerror.h" diff --git a/dlls/ntdll/large_int.c b/dlls/ntdll/large_int.c index d6086fbce89..7aee5edd8ac 100644 --- a/dlls/ntdll/large_int.c +++ b/dlls/ntdll/large_int.c @@ -19,7 +19,7 @@ */ #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" /* * Note: we use LONGLONG instead of LARGE_INTEGER, because diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 4440426c6e0..5d04cda7e50 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -17,9 +17,8 @@ */ #include "winbase.h" -#include "ntdef.h" #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "module.h" #include "wine/exception.h" diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index e5ceb71528d..aec0229e517 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -27,7 +27,7 @@ #include #include "wine/debug.h" -#include "ntddk.h" +#include "winternl.h" #include "ntdll_misc.h" #include "wine/server.h" diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 2bf275cae48..ae37e6fe987 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -19,8 +19,8 @@ #ifndef __WINE_NTDLL_MISC_H #define __WINE_NTDLL_MISC_H -#include "ntdef.h" #include "winnt.h" +#include "winternl.h" /* debug helper */ extern LPCSTR debugstr_us( const UNICODE_STRING *str ); diff --git a/dlls/ntdll/om.c b/dlls/ntdll/om.c index dbc3899ad9f..fbcefa278e9 100644 --- a/dlls/ntdll/om.c +++ b/dlls/ntdll/om.c @@ -30,7 +30,7 @@ #endif #include "wine/debug.h" -#include "ntddk.h" +#include "winternl.h" #include "ntdll_misc.h" #include "wine/server.h" @@ -257,11 +257,11 @@ NTSTATUS WINAPI NtClose( HANDLE Handle ) * ZwWaitForSingleObject [NTDLL.@] */ NTSTATUS WINAPI NtWaitForSingleObject( - IN PHANDLE Object, + IN HANDLE Object, IN BOOLEAN Alertable, IN PLARGE_INTEGER Time) { - FIXME("(%p,0x%08x,%p),stub!\n",Object,Alertable,Time); + FIXME("(0x%08x,0x%08x,%p),stub!\n",Object,Alertable,Time); return 0; } diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c index 740fe0dd66d..0f72c8d7990 100644 --- a/dlls/ntdll/reg.c +++ b/dlls/ntdll/reg.c @@ -34,7 +34,7 @@ #include "winerror.h" #include "wine/unicode.h" #include "wine/server.h" -#include "ntddk.h" +#include "winternl.h" #include "ntdll_misc.h" WINE_DEFAULT_DEBUG_CHANNEL(reg); diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 4b3ac8102c4..36ca648334c 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -29,7 +29,7 @@ #include "winerror.h" #include "stackframe.h" -#include "ntddk.h" +#include "winternl.h" #include "winreg.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); diff --git a/dlls/ntdll/rtlbitmap.c b/dlls/ntdll/rtlbitmap.c index acc7d201510..d04754a39dc 100644 --- a/dlls/ntdll/rtlbitmap.c +++ b/dlls/ntdll/rtlbitmap.c @@ -31,7 +31,7 @@ #include #include #include "windef.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); diff --git a/dlls/ntdll/rtlstr.c b/dlls/ntdll/rtlstr.c index 4d4307b48ed..97b4c6a6454 100644 --- a/dlls/ntdll/rtlstr.c +++ b/dlls/ntdll/rtlstr.c @@ -26,7 +26,7 @@ #include #include -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "wine/debug.h" @@ -338,8 +338,8 @@ BOOLEAN WINAPI RtlPrefixUnicodeString( const UNICODE_STRING *s1, * NOTES: * writes terminating 0 */ -NTSTATUS WINAPI RtlAnsiStringToUnicodeString( UNICODE_STRING *uni, - const STRING *ansi, +NTSTATUS WINAPI RtlAnsiStringToUnicodeString( PUNICODE_STRING uni, + PCANSI_STRING ansi, BOOLEAN doalloc ) { DWORD total = RtlAnsiStringToUnicodeSize( ansi ); @@ -686,7 +686,7 @@ NTSTATUS WINAPI RtlMultiByteToUnicodeSize( DWORD *size, LPCSTR str, UINT len ) * Compute the size necessary for the multibyte conversion of 'str', * without the terminating NULL. */ -NTSTATUS WINAPI RtlUnicodeToMultiByteSize( DWORD *size, LPCWSTR str, UINT len ) +NTSTATUS WINAPI RtlUnicodeToMultiByteSize( PULONG size, LPCWSTR str, ULONG len ) { *size = cp_wcstombs( get_ansi_table(), 0, str, len / sizeof(WCHAR), NULL, 0, NULL, NULL ); return STATUS_SUCCESS; diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c index f4e45253542..a7d032a875c 100644 --- a/dlls/ntdll/sec.c +++ b/dlls/ntdll/sec.c @@ -39,7 +39,7 @@ #include "winerror.h" #include "stackframe.h" -#include "ntddk.h" +#include "winternl.h" #include "winreg.h" #include "ntdll_misc.h" #include "msvcrt/excpt.h" diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index f7ebbe80015..7a00360fc5d 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -50,7 +50,7 @@ # include #endif -#include "ntddk.h" +#include "winternl.h" #include "winnt.h" #include "wine/library.h" @@ -408,11 +408,9 @@ typedef struct #define T_UNKNOWN (-1) /* Unknown fault (TRAP_sig not defined) */ #include "wine/exception.h" -#include "winnt.h" #include "stackframe.h" #include "global.h" #include "miscemu.h" -#include "ntddk.h" #include "syslevel.h" #include "wine/debug.h" diff --git a/dlls/ntdll/signal_powerpc.c b/dlls/ntdll/signal_powerpc.c index 594af949c6f..2c0dc683d49 100644 --- a/dlls/ntdll/signal_powerpc.c +++ b/dlls/ntdll/signal_powerpc.c @@ -50,11 +50,19 @@ # include #endif -#include "ntddk.h" +#include "winternl.h" #include "winnt.h" #include "wine/library.h" - +#include "wine/exception.h" #include "selectors.h" +#include "stackframe.h" +#include "global.h" +#include "miscemu.h" +#include "syslevel.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(seh); + /*********************************************************************** * signal context platform-specific definitions @@ -65,17 +73,6 @@ typedef struct ucontext SIGCONTEXT; #define HANDLER_DEF(name) void name( int __signal, struct siginfo *__siginfo, SIGCONTEXT *__context ) #define HANDLER_CONTEXT (__context) -#include "wine/exception.h" -#include "winnt.h" -#include "stackframe.h" -#include "global.h" -#include "miscemu.h" -#include "ntddk.h" -#include "syslevel.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(seh); - typedef int (*wine_signal_handler)(unsigned int sig); static wine_signal_handler handlers[256]; diff --git a/dlls/ntdll/signal_sparc.c b/dlls/ntdll/signal_sparc.c index 250f617a56a..024c4c2bc03 100644 --- a/dlls/ntdll/signal_sparc.c +++ b/dlls/ntdll/signal_sparc.c @@ -30,7 +30,7 @@ #include #include -#include "ntddk.h" +#include "winternl.h" #include "winbase.h" #include "winnt.h" diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index 51071b32c03..206ee7d4a36 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -27,7 +27,7 @@ #include "winerror.h" #include "wine/unicode.h" #include "wine/server.h" -#include "ntddk.h" +#include "winternl.h" #include "ntdll_misc.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); diff --git a/dlls/ntdll/tests/error.c b/dlls/ntdll/tests/error.c index d673cc65f19..b8ac3460a3a 100644 --- a/dlls/ntdll/tests/error.c +++ b/dlls/ntdll/tests/error.c @@ -21,7 +21,7 @@ #include "winbase.h" #include "winerror.h" #include "rpcnterr.h" -#include "ntddk.h" +#include "winternl.h" #include "ntsecapi.h" #include "wine/test.h" #include diff --git a/dlls/ntdll/tests/rtlbitmap.c b/dlls/ntdll/tests/rtlbitmap.c index 271f0525e39..0ff0b50d462 100644 --- a/dlls/ntdll/tests/rtlbitmap.c +++ b/dlls/ntdll/tests/rtlbitmap.c @@ -23,7 +23,7 @@ #include "wine/test.h" #include "winbase.h" #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" /* Function ptrs for ordinal calls */ static HMODULE hntdll = 0; diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c index bf444037d91..ecabb32df27 100644 --- a/dlls/ntdll/time.c +++ b/dlls/ntdll/time.c @@ -33,7 +33,7 @@ #ifdef HAVE_UNISTD_H # include #endif -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ntdll); @@ -211,9 +211,9 @@ VOID WINAPI RtlSystemTimeToLocalTime( /****************************************************************************** * RtlTimeToSecondsSince1970 [NTDLL.@] */ -BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res ) +BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *time, PULONG res ) { - ULONGLONG tmp = ((ULONGLONG)time->dwHighDateTime << 32) | time->dwLowDateTime; + ULONGLONG tmp = ((ULONGLONG)time->s.HighPart << 32) | time->s.LowPart; tmp = RtlLargeIntegerDivide( tmp, 10000000, NULL ); tmp -= SECS_1601_TO_1970; if (tmp > 0xffffffff) return FALSE; @@ -224,9 +224,9 @@ BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res ) /****************************************************************************** * RtlTimeToSecondsSince1980 [NTDLL.@] */ -BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res ) +BOOLEAN WINAPI RtlTimeToSecondsSince1980( const LARGE_INTEGER *time, LPDWORD res ) { - ULONGLONG tmp = ((ULONGLONG)time->dwHighDateTime << 32) | time->dwLowDateTime; + ULONGLONG tmp = ((ULONGLONG)time->s.HighPart << 32) | time->s.LowPart; tmp = RtlLargeIntegerDivide( tmp, 10000000, NULL ); tmp -= SECS_1601_to_1980; if (tmp > 0xffffffff) return FALSE; @@ -237,21 +237,21 @@ BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res ) /****************************************************************************** * RtlSecondsSince1970ToTime [NTDLL.@] */ -void WINAPI RtlSecondsSince1970ToTime( DWORD time, FILETIME *res ) +void WINAPI RtlSecondsSince1970ToTime( DWORD time, LARGE_INTEGER *res ) { ULONGLONG secs = RtlExtendedIntegerMultiply( time + SECS_1601_TO_1970, 10000000 ); - res->dwLowDateTime = (DWORD)secs; - res->dwHighDateTime = (DWORD)(secs >> 32); + res->s.LowPart = (DWORD)secs; + res->s.HighPart = (DWORD)(secs >> 32); } /****************************************************************************** * RtlSecondsSince1980ToTime [NTDLL.@] */ -void WINAPI RtlSecondsSince1980ToTime( DWORD time, FILETIME *res ) +void WINAPI RtlSecondsSince1980ToTime( DWORD time, LARGE_INTEGER *res ) { ULONGLONG secs = RtlExtendedIntegerMultiply( time + SECS_1601_to_1980, 10000000 ); - res->dwLowDateTime = (DWORD)secs; - res->dwHighDateTime = (DWORD)(secs >> 32); + res->s.LowPart = (DWORD)secs; + res->s.HighPart = (DWORD)(secs >> 32); } /****************************************************************************** @@ -269,7 +269,7 @@ VOID WINAPI RtlTimeToElapsedTimeFields( * NtQuerySystemTime (NTDLL.@) * ZwQuerySystemTime (NTDLL.@) */ -void WINAPI NtQuerySystemTime( LARGE_INTEGER *time ) +NTSTATUS WINAPI NtQuerySystemTime( PLARGE_INTEGER time ) { ULONGLONG secs; struct timeval now; @@ -278,4 +278,5 @@ void WINAPI NtQuerySystemTime( LARGE_INTEGER *time ) secs = RtlExtendedIntegerMultiply( now.tv_sec+SECS_1601_TO_1970, 10000000 ) + now.tv_usec * 10; time->s.LowPart = (DWORD)secs; time->s.HighPart = (DWORD)(secs >> 32); + return STATUS_SUCCESS; } diff --git a/dlls/ntdll/wcstring.c b/dlls/ntdll/wcstring.c index b366b5ed362..0ebe50950d5 100644 --- a/dlls/ntdll/wcstring.c +++ b/dlls/ntdll/wcstring.c @@ -27,7 +27,7 @@ #include #include -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "wine/debug.h" diff --git a/dlls/ole32/hglobalstream.c b/dlls/ole32/hglobalstream.c index 5f41bd2fe32..7bceab4b4a3 100644 --- a/dlls/ole32/hglobalstream.c +++ b/dlls/ole32/hglobalstream.c @@ -33,7 +33,7 @@ #include "ole2.h" #include "winbase.h" #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" diff --git a/dlls/ole32/stg_stream.c b/dlls/ole32/stg_stream.c index 4b24d27649b..8ee499543fb 100644 --- a/dlls/ole32/stg_stream.c +++ b/dlls/ole32/stg_stream.c @@ -29,7 +29,7 @@ #include "winbase.h" #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" #include "storage32.h" diff --git a/dlls/ole32/storage.c b/dlls/ole32/storage.c index 2a22166fa7a..a4a5b620ca0 100644 --- a/dlls/ole32/storage.c +++ b/dlls/ole32/storage.c @@ -31,7 +31,7 @@ # include #endif #include "windef.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "wine/winbase16.h" #include "wine/unicode.h" @@ -1728,5 +1728,3 @@ HRESULT WINAPI StgOpenStorage16( return S_OK; } - - diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c index a8c3e641a90..1d12e2f78d6 100644 --- a/dlls/oleaut32/tmarshal.c +++ b/dlls/oleaut32/tmarshal.c @@ -40,7 +40,7 @@ #include "ole2disp.h" #include "typelib.h" #include "wine/debug.h" -#include "ntddk.h" +#include "winternl.h" static const WCHAR riidW[5] = {'r','i','i','d',0}; static const WCHAR pdispparamsW[] = {'p','d','i','s','p','p','a','r','a','m','s',0}; diff --git a/dlls/setupapi/dirid.c b/dlls/setupapi/dirid.c index 27bd40794cc..d7016ae1d12 100644 --- a/dlls/setupapi/dirid.c +++ b/dlls/setupapi/dirid.c @@ -20,7 +20,7 @@ #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "setupapi.h" #include "wine/unicode.h" diff --git a/dlls/setupapi/infparse.c b/dlls/setupapi/infparse.c index defc34e86f7..439696e2340 100644 --- a/dlls/setupapi/infparse.c +++ b/dlls/setupapi/infparse.c @@ -28,7 +28,7 @@ #include #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "setupapi.h" #include "setupx16.h" diff --git a/dlls/setupapi/install.c b/dlls/setupapi/install.c index 15c13fbf060..ed61058a128 100644 --- a/dlls/setupapi/install.c +++ b/dlls/setupapi/install.c @@ -20,7 +20,7 @@ #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "setupapi.h" #include "wine/unicode.h" diff --git a/dlls/setupapi/parser.c b/dlls/setupapi/parser.c index aaf3ff92ef3..0123bd336e9 100644 --- a/dlls/setupapi/parser.c +++ b/dlls/setupapi/parser.c @@ -27,7 +27,7 @@ #include #include "windef.h" -#include "ntddk.h" +#include "winternl.h" #include "winbase.h" #include "winerror.h" #include "wine/unicode.h" diff --git a/dlls/setupapi/queue.c b/dlls/setupapi/queue.c index 950fcab1eec..476fd000b60 100644 --- a/dlls/setupapi/queue.c +++ b/dlls/setupapi/queue.c @@ -20,7 +20,7 @@ #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "setupapi.h" #include "wine/unicode.h" diff --git a/dlls/winedos/int21.c b/dlls/winedos/int21.c index 1f4af572164..8b74a656c10 100644 --- a/dlls/winedos/int21.c +++ b/dlls/winedos/int21.c @@ -26,7 +26,7 @@ #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "dosexe.h" #include "miscemu.h" diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c index 42cbf8dd13e..82cb3db187f 100644 --- a/dlls/winmm/mmsystem.c +++ b/dlls/winmm/mmsystem.c @@ -41,7 +41,7 @@ #include "wine/mmsystem16.h" #include "wine/winuser16.h" #include "heap.h" -#include "ntddk.h" +#include "winternl.h" #include "winemm.h" #include "wine/debug.h" diff --git a/files/directory.c b/files/directory.c index ba2202e6daf..c48b8675f56 100644 --- a/files/directory.c +++ b/files/directory.c @@ -41,7 +41,7 @@ #include "wine/winuser16.h" #include "winerror.h" #include "winreg.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "drive.h" #include "file.h" diff --git a/files/dos_fs.c b/files/dos_fs.c index f7e58063f72..3cb33f1e029 100644 --- a/files/dos_fs.c +++ b/files/dos_fs.c @@ -50,7 +50,7 @@ #include "file.h" #include "heap.h" #include "msdos.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/server.h" #include "msvcrt/excpt.h" diff --git a/files/drive.c b/files/drive.c index 4a497259034..4590cab981a 100644 --- a/files/drive.c +++ b/files/drive.c @@ -55,7 +55,7 @@ #endif #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" /* for GetCurrentTask */ #include "winerror.h" #include "winioctl.h" diff --git a/files/file.c b/files/file.c index 9cf09962b86..11acdb22ea5 100644 --- a/files/file.c +++ b/files/file.c @@ -59,7 +59,7 @@ #include "windef.h" #include "winbase.h" #include "winreg.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "wine/server.h" @@ -2969,11 +2969,11 @@ BOOL WINAPI SetFileTime( HANDLE hFile, { req->handle = hFile; if (lpLastAccessTime) - RtlTimeToSecondsSince1970( lpLastAccessTime, (DWORD *)&req->access_time ); + RtlTimeToSecondsSince1970( (PLARGE_INTEGER) lpLastAccessTime, (DWORD *)&req->access_time ); else req->access_time = 0; /* FIXME */ if (lpLastWriteTime) - RtlTimeToSecondsSince1970( lpLastWriteTime, (DWORD *)&req->write_time ); + RtlTimeToSecondsSince1970( (PLARGE_INTEGER) lpLastWriteTime, (DWORD *)&req->write_time ); else req->write_time = 0; /* FIXME */ ret = !wine_server_call_err( req ); diff --git a/files/profile.c b/files/profile.c index 58ffa7e7157..e5a1ecf6aeb 100644 --- a/files/profile.c +++ b/files/profile.c @@ -38,7 +38,7 @@ #include "winbase.h" #include "winnls.h" #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "winreg.h" #include "drive.h" diff --git a/include/ntddk.h b/include/ntddk.h deleted file mode 100644 index 58f4bb818c9..00000000000 --- a/include/ntddk.h +++ /dev/null @@ -1,1182 +0,0 @@ -/* - * this file defines interfaces mainly exposed to device drivers and - * native nt dlls - * - * Copyright (C) the Wine project - * - * 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 - */ - -#ifndef __WINE_NTDDK_H -#define __WINE_NTDDK_H - -#include "ntdef.h" -#include "winnt.h" -#include "winreg.h" -#include "winbase.h" /* FIXME: should be taken out sometimes */ - -#ifdef __cplusplus -extern "C" { -#endif - -/****************** - * asynchronous I/O - */ -#undef Status /* conflict with X11-includes*/ - -typedef struct _IO_STATUS_BLOCK -{ - union { - NTSTATUS Status; - PVOID Pointer; - } DUMMYUNIONNAME; - ULONG_PTR Information; -} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; - -typedef VOID (NTAPI *PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved ); - -/* - registry - */ - - /* key information */ -typedef struct _KEY_BASIC_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG NameLength; - WCHAR Name[1]; -} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; - -typedef struct _KEY_NODE_INFORMATION -{ - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG NameLength; - WCHAR Name[1]; -/* Class[1]; */ -} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; - -typedef struct _KEY_FULL_INFORMATION -{ - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG SubKeys; - ULONG MaxNameLen; - ULONG MaxClassLen; - ULONG Values; - ULONG MaxValueNameLen; - ULONG MaxValueDataLen; - WCHAR Class[1]; -} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; - -typedef enum _KEY_INFORMATION_CLASS -{ - KeyBasicInformation, - KeyNodeInformation, - KeyFullInformation -} KEY_INFORMATION_CLASS; - -typedef struct _KEY_VALUE_ENTRY -{ - PUNICODE_STRING ValueName; - ULONG DataLength; - ULONG DataOffset; - ULONG Type; -} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; - -/* value information */ -typedef struct _KEY_VALUE_BASIC_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG NameLength; - WCHAR Name[1]; -} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; - -typedef struct _KEY_VALUE_FULL_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG DataOffset; - ULONG DataLength; - ULONG NameLength; - WCHAR Name[1]; -/* UCHAR Data[1];*/ -} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; - -typedef struct _KEY_VALUE_PARTIAL_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; -} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; - -typedef enum _KEY_VALUE_INFORMATION_CLASS -{ - KeyValueBasicInformation, - KeyValueFullInformation, - KeyValuePartialInformation, - KeyValueFullInformationAlign64, - KeyValuePartialInformationAlign64 -} KEY_VALUE_INFORMATION_CLASS; - -NTSTATUS WINAPI RtlFormatCurrentUserKeyPath( - PUNICODE_STRING KeyPath); - -/* thread information */ - -typedef enum _THREADINFOCLASS -{ ThreadBasicInformation, - ThreadTimes, - ThreadPriority, - ThreadBasePriority, - ThreadAffinityMask, - ThreadImpersonationToken, - ThreadDescriptorTableEntry, - ThreadEnableAlignmentFaultFixup, - ThreadEventPair_Reusable, - ThreadQuerySetWin32StartAddress, - ThreadZeroTlsCell, - ThreadPerformanceCount, - ThreadAmILastThread, - ThreadIdealProcessor, - ThreadPriorityBoost, - ThreadSetTlsArrayAddress, - ThreadIsIoPending, - MaxThreadInfoClass -} THREADINFOCLASS; - -typedef struct { -/* This is used by NtQuerySystemInformation */ - FILETIME ftCreationTime; - DWORD dwUnknown1; - DWORD dwStartAddress; - DWORD dwOwningPID; - DWORD dwThreadID; - DWORD dwCurrentPriority; - DWORD dwBasePriority; - DWORD dwContextSwitches; - DWORD dwThreadState; - DWORD dwWaitReason; - DWORD dwUnknown2[5]; -} THREADINFO, *PTHREADINFO; - -/* file information */ - -typedef enum _FILE_INFORMATION_CLASS { - FileDirectoryInformation = 1, - FileFullDirectoryInformation, - FileBothDirectoryInformation, - FileBasicInformation, - FileStandardInformation, - FileInternalInformation, - FileEaInformation, - FileAccessInformation, - FileNameInformation, - FileRenameInformation, - FileLinkInformation, - FileNamesInformation, - FileDispositionInformation, - FilePositionInformation, - FileFullEaInformation, - FileModeInformation, - FileAlignmentInformation, - FileAllInformation, - FileAllocationInformation, - FileEndOfFileInformation, - FileAlternateNameInformation, - FileStreamInformation, - FilePipeInformation, - FilePipeLocalInformation, - FilePipeRemoteInformation, - FileMailslotQueryInformation, - FileMailslotSetInformation, - FileCompressionInformation, - FileObjectIdInformation, - FileCompletionInformation, - FileMoveClusterInformation, - FileQuotaInformation, - FileReparsePointInformation, - FileNetworkOpenInformation, - FileAttributeTagInformation, - FileTrackingInformation, - FileMaximumInformation -} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; - -typedef enum _FSINFOCLASS { - FileFsVolumeInformation = 1, - FileFsLabelInformation, - FileFsSizeInformation, - FileFsDeviceInformation, - FileFsAttributeInformation, - FileFsControlInformation, - FileFsFullSizeInformation, - FileFsObjectIdInformation, - FileFsMaximumInformation -} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; - -typedef enum _SECTION_INHERIT -{ - ViewShare = 1, - ViewUnmap = 2 - -} SECTION_INHERIT; - -/* object information */ - -typedef enum _OBJECT_INFORMATION_CLASS -{ - DunnoTheConstants1 - -} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; - - -/* system information */ - -typedef enum SYSTEM_INFORMATION_CLASS -{ SystemBasicInformation = 0, - Unknown1, - SystemPerformanceInformation, - SystemTimeInformation, - Unknown4, - SystemProcessInformation, - Unknown6, - Unknown7, - Unknown8, - Unknown9, - Unknown10, - SystemDriverInformation, - Unknown12, - Unknown13, - Unknown14, - Unknown15, - SystemHandleList, - Unknown17, - Unknown18, - Unknown19, - Unknown20, - SystemCacheInformation -} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; - -typedef struct { -/* System Information Class 0x00 */ - DWORD dwUnknown1; - ULONG uKeMaximumIncrement; - ULONG uPageSize; - ULONG uMmNumberOfPhysicalPages; - ULONG uMmLowestPhysicalPage; - ULONG uMmHighestPhysicalPage; - ULONG uAllocationGranularity; - PVOID pLowestUserAddress; - PVOID pMmHighestUserAddress; - ULONG uKeActiveProcessors; - BYTE bKeNumberProcessors; - BYTE bUnknown2; - WORD wUnknown3; -} SYSTEM_BASIC_INFORMATION; - -typedef struct { -/* System Information Class 0x02 */ - LARGE_INTEGER liIdleTime; - DWORD dwSpare[76]; -} SYSTEM_PERFORMANCE_INFORMATION; - -typedef struct { -/* System Information Class 0x03 */ - LARGE_INTEGER liKeBootTime; - LARGE_INTEGER liKeSystemTime; - LARGE_INTEGER liExpTimeZoneBias; - ULONG uCurrentTimeZoneId; - DWORD dwReserved; -} SYSTEM_TIME_INFORMATION; - -typedef struct { -/* System Information Class 0x05 */ - DWORD dwOffset; - DWORD dwThreadCount; - DWORD dwUnknown1[6]; - FILETIME ftCreationTime; - DWORD dwUnknown2[5]; - WCHAR* pszProcessName; - DWORD dwBasePriority; - DWORD dwProcessID; - DWORD dwParentProcessID; - DWORD dwHandleCount; - DWORD dwUnknown3; - DWORD dwUnknown4; - DWORD dwVirtualBytesPeak; - DWORD dwVirtualBytes; - DWORD dwPageFaults; - DWORD dwWorkingSetPeak; - DWORD dwWorkingSet; - DWORD dwUnknown5; - DWORD dwPagedPool; - DWORD dwUnknown6; - DWORD dwNonPagedPool; - DWORD dwPageFileBytesPeak; - DWORD dwPrivateBytes; - DWORD dwPageFileBytes; - DWORD dwUnknown7[4]; - THREADINFO ti[1]; -} SYSTEM_PROCESS_INFORMATION; - -typedef struct { -/* System Information Class 0x0b */ - PVOID pvAddress; - DWORD dwUnknown1; - DWORD dwUnknown2; - DWORD dwEntryIndex; - DWORD dwUnknown3; - char szName[MAX_PATH + 1]; -} SYSTEM_DRIVER_INFORMATION; - -typedef struct { -/* System Information Class 0x10 */ - USHORT dwPID; - USHORT dwCreatorBackTraceIndex; - BYTE bObjectType; - BYTE bHandleAttributes; - USHORT usHandleOffset; - DWORD dwKeObject; - ULONG ulGrantedAccess; -} HANDLEINFO, *PHANDLEINFO; - -typedef struct { -/* System Information Class 0x15 */ - ULONG CurrentSize; - ULONG PeakSize; - ULONG PageFaultCount; - ULONG MinimumWorkingSet; - ULONG MaximumWorkingSet; - ULONG unused[4]; -} SYSTEM_CACHE_INFORMATION; - -/* reading coffee grounds... */ -typedef struct _THREAD_INFO -{ DWORD Unknown1[6]; - DWORD ThreadID; - DWORD Unknown2[3]; - DWORD Status; - DWORD WaitReason; - DWORD Unknown3[4]; -} THREAD_INFO, PTHREAD_INFO; - -typedef struct _VM_COUNTERS_ -{ ULONG PeakVirtualSize; - ULONG VirtualSize; - ULONG PageFaultCount; - ULONG PeakWorkingSetSize; - ULONG WorkingSetSize; - ULONG QuotaPeakPagedPoolUsage; - ULONG QuotaPagedPoolUsage; - ULONG QuotaPeakNonPagedPoolUsage; - ULONG QuotaNonPagedPoolUsage; - ULONG PagefileUsage; - ULONG PeakPagefileUsage; -} VM_COUNTERS, *PVM_COUNTERS; - -/* process information */ - -typedef struct _PROCESS_INFO -{ DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/ - DWORD ThreadCount; /* 04 number of ThreadInfo member ok */ - DWORD Unknown1[6]; - FILETIME CreationTime; /* 20 */ - DWORD Unknown2[5]; - PWCHAR ProcessName; /* 3c ok */ - DWORD BasePriority; - DWORD ProcessID; /* 44 ok*/ - DWORD ParentProcessID; - DWORD HandleCount; - DWORD Unknown3[2]; /* 50 */ - ULONG PeakVirtualSize; - ULONG VirtualSize; - ULONG PageFaultCount; - ULONG PeakWorkingSetSize; - ULONG WorkingSetSize; - ULONG QuotaPeakPagedPoolUsage; - ULONG QuotaPagedPoolUsage; - ULONG QuotaPeakNonPagedPoolUsage; - ULONG QuotaNonPagedPoolUsage; - ULONG PagefileUsage; - ULONG PeakPagefileUsage; - DWORD PrivateBytes; - DWORD Unknown6[4]; - THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/ -} PROCESS_INFO, PPROCESS_INFO; - -NTSTATUS WINAPI NtQuerySystemInformation( - IN SYSTEM_INFORMATION_CLASS SystemInformationClass, - OUT PVOID SystemInformation, - IN ULONG Length, - OUT PULONG ResultLength); - -/* - * system configuration - */ - - -typedef struct _SYSTEM_TIME_ADJUSTMENT -{ - ULONG TimeAdjustment; - BOOLEAN TimeAdjustmentDisabled; - -} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT; - -typedef struct _SYSTEM_CONFIGURATION_INFO -{ - union - { ULONG OemId; - struct - { WORD ProcessorArchitecture; - WORD Reserved; - } tag1; - } tag2; - ULONG PageSize; - PVOID MinimumApplicationAddress; - PVOID MaximumApplicationAddress; - ULONG ActiveProcessorMask; - ULONG NumberOfProcessors; - ULONG ProcessorType; - ULONG AllocationGranularity; - WORD ProcessorLevel; - WORD ProcessorRevision; - -} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO; - - -/* - * NtQueryProcessInformation - */ - -/* parameter ProcessInformationClass */ - -typedef enum _PROCESSINFOCLASS -{ ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - MaxProcessInfoClass -} PROCESSINFOCLASS; - -/* parameter ProcessInformation (depending on ProcessInformationClass) */ - -typedef struct _PROCESS_BASIC_INFORMATION -{ DWORD ExitStatus; - DWORD PebBaseAddress; - DWORD AffinityMask; - DWORD BasePriority; - ULONG UniqueProcessId; - ULONG InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION; - -NTSTATUS WINAPI NtQueryInformationProcess( - IN HANDLE ProcessHandle, - IN PROCESSINFOCLASS ProcessInformationClass, - OUT PVOID ProcessInformation, - IN ULONG ProcessInformationLength, - OUT PULONG ReturnLength); - -#define NtCurrentProcess() ( (HANDLE) -1 ) - -/* - * timer - */ - -typedef enum _TIMER_TYPE -{ - NotificationTimer, - SynchronizationTimer - -} TIMER_TYPE; - -/* token functions */ - -NTSTATUS WINAPI NtOpenProcessToken( - HANDLE ProcessHandle, - DWORD DesiredAccess, - HANDLE *TokenHandle); - -NTSTATUS WINAPI NtOpenThreadToken( - HANDLE ThreadHandle, - DWORD DesiredAccess, - BOOLEAN OpenAsSelf, - HANDLE *TokenHandle); - -NTSTATUS WINAPI NtAdjustPrivilegesToken( - IN HANDLE TokenHandle, - IN BOOLEAN DisableAllPrivileges, - IN PTOKEN_PRIVILEGES NewState, - IN DWORD BufferLength, - OUT PTOKEN_PRIVILEGES PreviousState, - OUT PDWORD ReturnLength); - -NTSTATUS WINAPI NtQueryInformationToken( - HANDLE token, - DWORD tokeninfoclass, - LPVOID tokeninfo, - DWORD tokeninfolength, - LPDWORD retlen ); - -/* sid functions */ - -BOOLEAN WINAPI RtlAllocateAndInitializeSid ( - PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, - BYTE nSubAuthorityCount, - DWORD nSubAuthority0, DWORD nSubAuthority1, - DWORD nSubAuthority2, DWORD nSubAuthority3, - DWORD nSubAuthority4, DWORD nSubAuthority5, - DWORD nSubAuthority6, DWORD nSubAuthority7, - PSID *pSid ); - -BOOL WINAPI RtlInitializeSid( - PSID pSid, - PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, - BYTE nSubAuthorityCount); - -DWORD WINAPI RtlFreeSid( - PSID pSid); - -BOOL WINAPI RtlEqualSid( - PSID pSid1, - PSID pSid2 ); - -DWORD WINAPI RtlLengthRequiredSid( - DWORD nrofsubauths); - -DWORD WINAPI RtlLengthSid( - PSID sid); - -LPDWORD WINAPI RtlSubAuthoritySid( - PSID PSID, - DWORD nr); - -LPBYTE WINAPI RtlSubAuthorityCountSid( - PSID pSid); - -DWORD WINAPI RtlCopySid( - DWORD len, - PSID to, - PSID from); - -BOOL WINAPI RtlValidSid( - PSID pSid); - -BOOL WINAPI RtlEqualPrefixSid( - PSID pSid1, - PSID pSid2); - -PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid( - PSID pSid ); - -/* security descriptor functions */ - -NTSTATUS WINAPI RtlCreateSecurityDescriptor( - PSECURITY_DESCRIPTOR lpsd, - DWORD rev); - -NTSTATUS WINAPI RtlValidSecurityDescriptor( - PSECURITY_DESCRIPTOR SecurityDescriptor); - -ULONG WINAPI RtlLengthSecurityDescriptor( - PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTSTATUS WINAPI RtlGetDaclSecurityDescriptor( - IN PSECURITY_DESCRIPTOR pSecurityDescriptor, - OUT PBOOLEAN lpbDaclPresent, - OUT PACL *pDacl, - OUT PBOOLEAN lpbDaclDefaulted); - -NTSTATUS WINAPI RtlSetDaclSecurityDescriptor ( - PSECURITY_DESCRIPTOR lpsd, - BOOLEAN daclpresent, - PACL dacl, - BOOLEAN dacldefaulted ); - -NTSTATUS WINAPI RtlGetSaclSecurityDescriptor( - IN PSECURITY_DESCRIPTOR pSecurityDescriptor, - OUT PBOOLEAN lpbSaclPresent, - OUT PACL *pSacl, - OUT PBOOLEAN lpbSaclDefaulted); - -NTSTATUS WINAPI RtlSetSaclSecurityDescriptor ( - PSECURITY_DESCRIPTOR lpsd, - BOOLEAN saclpresent, - PACL sacl, - BOOLEAN sacldefaulted); - -NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor( - PSECURITY_DESCRIPTOR SecurityDescriptor, - PSID *Owner, - PBOOLEAN OwnerDefaulted); - -NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor( - PSECURITY_DESCRIPTOR lpsd, - PSID owner, - BOOLEAN ownerdefaulted); - -NTSTATUS WINAPI RtlSetGroupSecurityDescriptor ( - PSECURITY_DESCRIPTOR lpsd, - PSID group, - BOOLEAN groupdefaulted); - -NTSTATUS WINAPI RtlGetGroupSecurityDescriptor( - PSECURITY_DESCRIPTOR SecurityDescriptor, - PSID *Group, - PBOOLEAN GroupDefaulted); - -NTSTATUS WINAPI RtlMakeSelfRelativeSD( - IN PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, - IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, - IN OUT LPDWORD lpdwBufferLength); - -NTSTATUS WINAPI RtlGetControlSecurityDescriptor( - PSECURITY_DESCRIPTOR pSecurityDescriptor, - PSECURITY_DESCRIPTOR_CONTROL pControl, - LPDWORD lpdwRevision); - -/* acl functions */ - -NTSTATUS WINAPI RtlCreateAcl( - PACL acl, - DWORD size, - DWORD rev); - -BOOLEAN WINAPI RtlFirstFreeAce( - PACL acl, - PACE_HEADER *x); - -NTSTATUS WINAPI RtlAddAce( - PACL acl, - DWORD rev, - DWORD xnrofaces, - PACE_HEADER acestart, - DWORD acelen); - -BOOL WINAPI RtlAddAccessAllowedAce( - IN OUT PACL pAcl, - IN DWORD dwAceRevision, - IN DWORD AccessMask, - IN PSID pSid); - -BOOL WINAPI AddAccessAllowedAceEx( - IN OUT PACL pAcl, - IN DWORD dwAceRevision, - IN DWORD AceFlags, - IN DWORD AccessMask, - IN PSID pSid); - -DWORD WINAPI RtlGetAce( - PACL pAcl, - DWORD dwAceIndex, - LPVOID *pAce ); - -/* string functions */ - -DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING*); -NTSTATUS WINAPI RtlAnsiStringToUnicodeString(UNICODE_STRING*,const STRING *,BOOLEAN); -NTSTATUS WINAPI RtlAppendAsciizToString(STRING*,LPCSTR); -NTSTATUS WINAPI RtlAppendStringToString(STRING*,const STRING*); -NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING*,const UNICODE_STRING*); -NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING*,LPCWSTR); -LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN); -LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); -void WINAPI RtlCopyString(STRING*,const STRING*); -void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*); -BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR); -BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR); -void WINAPI RtlEraseUnicodeString(UNICODE_STRING*); -BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN); -BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); -void WINAPI RtlFreeAnsiString(PSTRING); -void WINAPI RtlFreeOemString(PSTRING); -void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); -void WINAPI RtlInitAnsiString(PSTRING,LPCSTR); -void WINAPI RtlInitString(PSTRING,LPCSTR); -void WINAPI RtlInitUnicodeString(PUNICODE_STRING,LPCWSTR); -NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); -NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT); -UINT WINAPI RtlOemStringToUnicodeSize(const STRING*); -NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN); -NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); -BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN); -BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); -DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*); -NTSTATUS WINAPI RtlUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN); -DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*); -NTSTATUS WINAPI RtlUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN); -NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); -NTSTATUS WINAPI RtlUnicodeToMultiByteSize(DWORD*,LPCWSTR,UINT); -NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); -NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN); -NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN); -NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN); -NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); -NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); - -DWORD WINAPI RtlIsTextUnicode( - LPVOID buf, - DWORD len, - DWORD *pf); - -/* resource functions */ - -typedef struct _RTL_RWLOCK { - CRITICAL_SECTION rtlCS; - HANDLE hSharedReleaseSemaphore; - UINT uSharedWaiters; - HANDLE hExclusiveReleaseSemaphore; - UINT uExclusiveWaiters; - INT iNumberActive; - HANDLE hOwningThreadId; - DWORD dwTimeoutBoost; - PVOID pDebugInfo; -} RTL_RWLOCK, *LPRTL_RWLOCK; - -VOID WINAPI RtlInitializeResource( - LPRTL_RWLOCK); - -VOID WINAPI RtlDeleteResource( - LPRTL_RWLOCK); - -BYTE WINAPI RtlAcquireResourceExclusive( - LPRTL_RWLOCK, BYTE fWait); - -BYTE WINAPI RtlAcquireResourceShared( - LPRTL_RWLOCK, BYTE fWait); - -VOID WINAPI RtlReleaseResource( - LPRTL_RWLOCK); - -VOID WINAPI RtlDumpResource( - LPRTL_RWLOCK); - -/* time functions */ - -typedef struct _TIME_FIELDS -{ CSHORT Year; - CSHORT Month; - CSHORT Day; - CSHORT Hour; - CSHORT Minute; - CSHORT Second; - CSHORT Milliseconds; - CSHORT Weekday; -} TIME_FIELDS; - -typedef TIME_FIELDS *PTIME_FIELDS; - -VOID WINAPI RtlSystemTimeToLocalTime( - IN PLARGE_INTEGER SystemTime, - OUT PLARGE_INTEGER LocalTime); - -VOID WINAPI RtlTimeToTimeFields( - PLARGE_INTEGER liTime, - PTIME_FIELDS TimeFields); - -BOOLEAN WINAPI RtlTimeFieldsToTime( - PTIME_FIELDS tfTimeFields, - PLARGE_INTEGER Time); - -VOID WINAPI RtlTimeToElapsedTimeFields( - PLARGE_INTEGER liTime, - PTIME_FIELDS TimeFields); - -void WINAPI NtQuerySystemTime( LARGE_INTEGER *time ); - -BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res ); -BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res ); -void WINAPI RtlSecondsSince1970ToTime( DWORD time, FILETIME *res ); -void WINAPI RtlSecondsSince1980ToTime( DWORD time, FILETIME *res ); - -/* heap functions */ - -/* Data structure for heap definition. This includes various - sizing parameters and callback routines, which, if left NULL, - result in default behavior */ - -typedef struct -{ ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */ - ULONG Unknown[11]; -} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; - -HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION); -HANDLE WINAPI RtlDestroyHeap(HANDLE); -PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG); -BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID); -PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG); -ULONG WINAPI RtlCompactHeap(HANDLE,ULONG); -BOOLEAN WINAPI RtlLockHeap(HANDLE); -BOOLEAN WINAPI RtlUnlockHeap(HANDLE); -ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID); -BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,PCVOID); -ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*); -NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID); - -/* exception */ - -void WINAPI NtRaiseException( - PEXCEPTION_RECORD,PCONTEXT,BOOL); - -void WINAPI RtlRaiseException( - PEXCEPTION_RECORD); - -void WINAPI RtlRaiseStatus( - NTSTATUS); - -void WINAPI RtlUnwind( - PEXCEPTION_FRAME, - LPVOID, - PEXCEPTION_RECORD,DWORD); - -/* process environment block */ -VOID WINAPI RtlAcquirePebLock(void); -VOID WINAPI RtlReleasePebLock(void); - -/* mathematics */ -LONGLONG WINAPI RtlConvertLongToLargeInteger( LONG a ); -LONGLONG WINAPI RtlEnlargedIntegerMultiply( INT a, INT b ); -LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift ); -LONGLONG WINAPI RtlExtendedIntegerMultiply( LONGLONG a, INT b ); -LONGLONG WINAPI RtlExtendedLargeIntegerDivide( LONGLONG a, INT b, INT *rem ); -LONGLONG WINAPI RtlLargeIntegerAdd( LONGLONG a, LONGLONG b ); -LONGLONG WINAPI RtlLargeIntegerArithmeticShift( LONGLONG a, INT count ); -LONGLONG WINAPI RtlLargeIntegerNegate( LONGLONG a ); -LONGLONG WINAPI RtlLargeIntegerShiftLeft( LONGLONG a, INT count ); -LONGLONG WINAPI RtlLargeIntegerShiftRight( LONGLONG a, INT count ); -LONGLONG WINAPI RtlLargeIntegerSubtract( LONGLONG a, LONGLONG b ); -ULONGLONG WINAPI RtlEnlargedUnsignedMultiply( UINT a, UINT b ); -UINT WINAPI RtlEnlargedUnsignedDivide( ULONGLONG a, UINT b, UINT *remptr ); -ULONGLONG WINAPI RtlConvertUlongToLargeInteger( ULONG a ); -ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG a, ULONGLONG b, ULONGLONG *rem ); - -/* environment */ -DWORD WINAPI RtlCreateEnvironment( - DWORD x1, - DWORD x2); - -DWORD WINAPI RtlDestroyEnvironment( - DWORD x); - -DWORD WINAPI RtlQueryEnvironmentVariable_U( - DWORD x1, - PUNICODE_STRING key, - PUNICODE_STRING val) ; - -DWORD WINAPI RtlSetEnvironmentVariable( - DWORD x1, - PUNICODE_STRING key, - PUNICODE_STRING val); - -/* object security */ - -DWORD WINAPI RtlNewSecurityObject( - DWORD x1, - DWORD x2, - DWORD x3, - DWORD x4, - DWORD x5, - DWORD x6); - -DWORD WINAPI RtlDeleteSecurityObject( - DWORD x1); - -NTSTATUS WINAPI -NtQuerySecurityObject( - IN HANDLE Object, - IN SECURITY_INFORMATION RequestedInformation, - OUT PSECURITY_DESCRIPTOR pSecurityDesriptor, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSTATUS WINAPI -NtSetSecurityObject( - IN HANDLE Handle, - IN SECURITY_INFORMATION SecurityInformation, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -/* registry functions */ - -NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG, - const UNICODE_STRING*,ULONG,PULONG); -NTSTATUS WINAPI NtDeleteKey(HANDLE); -NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING*); -NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); -NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*); -NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING*,ULONG,ULONG,const void*,ULONG); -NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*); -NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING*,KEY_VALUE_INFORMATION_CLASS, - void*,DWORD,DWORD*); -NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES*,const OBJECT_ATTRIBUTES*); - - -NTSTATUS WINAPI NtEnumerateValueKey( - HANDLE KeyHandle, - ULONG Index, - KEY_VALUE_INFORMATION_CLASS KeyInformationClass, - PVOID KeyInformation, - ULONG Length, - PULONG ResultLength); - -NTSTATUS WINAPI NtFlushKey(HANDLE KeyHandle); - -NTSTATUS WINAPI NtNotifyChangeKey( - IN HANDLE KeyHandle, - IN HANDLE Event, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG CompletionFilter, - IN BOOLEAN Asynchroneous, - OUT PVOID ChangeBuffer, - IN ULONG Length, - IN BOOLEAN WatchSubtree); - -NTSTATUS WINAPI NtQueryMultipleValueKey( - HANDLE KeyHandle, - PVALENTW ListOfValuesToQuery, - ULONG NumberOfItems, - PVOID MultipleValueInformation, - ULONG Length, - PULONG ReturnLength); - -NTSTATUS WINAPI NtReplaceKey( - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN HANDLE Key, - IN POBJECT_ATTRIBUTES ReplacedObjectAttributes); - -NTSTATUS WINAPI NtRestoreKey( - HANDLE KeyHandle, - HANDLE FileHandle, - ULONG RestoreFlags); - -NTSTATUS WINAPI NtSaveKey( - IN HANDLE KeyHandle, - IN HANDLE FileHandle); - -NTSTATUS WINAPI NtSetInformationKey( - IN HANDLE KeyHandle, - IN const int KeyInformationClass, - IN PVOID KeyInformation, - IN ULONG KeyInformationLength); - -NTSTATUS WINAPI NtUnloadKey( - IN HANDLE KeyHandle); - -NTSTATUS WINAPI NtClose( - HANDLE Handle); - -NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code ); -NTSTATUS WINAPI NtTerminateThread( HANDLE handle, LONG exit_code ); - -NTSTATUS WINAPI NtClearEvent(HANDLE); -NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN); -NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG); -NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *attr); -NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG); -NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG); -NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG); -NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG); - -NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit ); -NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount( RTL_CRITICAL_SECTION *crit, DWORD spincount ); -NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit ); -NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit ); -NTSTATUS WINAPI RtlpUnWaitCriticalSection( RTL_CRITICAL_SECTION *crit ); -NTSTATUS WINAPI RtlEnterCriticalSection( RTL_CRITICAL_SECTION *crit ); -BOOL WINAPI RtlTryEnterCriticalSection( RTL_CRITICAL_SECTION *crit ); -NTSTATUS WINAPI RtlLeaveCriticalSection( RTL_CRITICAL_SECTION *crit ); - -/* file functions */ - -/* flags for NtCreateFile and NtOpenFile */ -#define FILE_DIRECTORY_FLAG 0x00000001 -#define FILE_WRITE_THROUGH 0x00000002 -#define FILE_SEQUENTIAL_ONLY 0x00000004 -#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 -#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 -#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 -#define FILE_NON_DIRECTORY_FILE 0x00000040 -#define FILE_CREATE_TREE_CONNECTION 0x00000080 - -/* status for NtCreateFile or NtOpenFile */ -#define FILE_SUPERSEDED 0x00000000 -#define FILE_OPENED 0x00000001 -#define FILE_CREATED 0x00000002 -#define FILE_OVERWRITTEN 0x00000003 -#define FILE_EXISTS 0x00000004 -#define FILE_DOES_NOT_EXIST 0x00000005 - -NTSTATUS WINAPI NtCreateFile(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PIO_STATUS_BLOCK, PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG); -NTSTATUS WINAPI NtOpenFile(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PIO_STATUS_BLOCK, ULONG, ULONG); -NTSTATUS WINAPI NtReadFile(HANDLE, HANDLE, PIO_APC_ROUTINE, PVOID, PIO_STATUS_BLOCK, PVOID, ULONG, PLARGE_INTEGER, PULONG); - - -/* string functions */ -extern LPSTR _strlwr( LPSTR str ); -extern LPSTR _strupr( LPSTR str ); - -/* misc */ - -#if defined(__i386__) && defined(__GNUC__) -static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); } -static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); } -#else /* __i386__ && __GNUC__ */ -void WINAPI DbgBreakPoint(void); -void WINAPI DbgUserBreakPoint(void); -#endif /* __i386__ && __GNUC__ */ -void WINAPIV DbgPrint(LPCSTR fmt, ...); - -DWORD WINAPI RtlAdjustPrivilege(DWORD x1,DWORD x2,DWORD x3,DWORD x4); -DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4); -LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x); -DWORD WINAPI RtlNtStatusToDosError(DWORD error); -BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type); -PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule); -PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection( const IMAGE_NT_HEADERS *, HMODULE, DWORD ); -PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir, ULONG *size ); -PVOID WINAPI RtlImageRvaToVa( const IMAGE_NT_HEADERS *, HMODULE, DWORD, IMAGE_SECTION_HEADER **); - -DWORD WINAPI RtlOpenCurrentUser( - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE KeyHandle); - -BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3); -BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel); - -NTSTATUS WINAPI -NtAccessCheck( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN HANDLE ClientToken, - IN ACCESS_MASK DesiredAccess, - IN PGENERIC_MAPPING GenericMapping, - OUT PPRIVILEGE_SET PrivilegeSet, - OUT PULONG ReturnLength, - OUT PULONG GrantedAccess, - OUT PBOOLEAN AccessStatus); - -/* bitmap functions */ - -/* Bitmap data type */ -typedef struct tagRTL_BITMAP -{ - ULONG SizeOfBitMap; /* Number of bits in the bitmap */ - LPBYTE BitMapBuffer; /* Bitmap data, assumed sized to a DWORD boundary */ -} RTL_BITMAP, *PRTL_BITMAP; - -typedef const RTL_BITMAP* PCRTL_BITMAP; - -/* Bit run data type */ -typedef struct tagRTL_BITMAP_RUN -{ - ULONG StartOfRun; /* Bit position at which run starts - FIXME: Name? */ - ULONG SizeOfRun; /* Size of the run in bits - FIXME: Name? */ -} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; - -typedef const RTL_BITMAP_RUN* PCRTL_BITMAP_RUN; - -/* Bitmap functions */ -VOID WINAPI RtlInitializeBitMap(PRTL_BITMAP,LPBYTE,ULONG); -VOID WINAPI RtlSetAllBits(PRTL_BITMAP); -VOID WINAPI RtlClearAllBits(PRTL_BITMAP); -VOID WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG); -VOID WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP); -ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP); -ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); -ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); -ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG); -ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG); -BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG); -BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG); -ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG); -ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG); -ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG); -ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG); -CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG); -CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG); - -/* Inline the trivial calls */ -#define RtlInitializeBitMap(p,b,s) \ - do { \ - PRTL_BITMAP _p = (p); \ - _p->SizeOfBitMap = (s); \ - _p->BitMapBuffer = (b); \ - } while(0) - -#define RtlSetAllBits(p) \ - do { \ - PRTL_BITMAP _p = (p); \ - memset(_p->BitMapBuffer,0xff,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \ - } while(0) - -#define RtlClearAllBits(p) \ - do {\ - PRTL_BITMAP _p = (p);\ - memset(_p->BitMapBuffer,0,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \ - } while(0) - -inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit) -{ - if (lpBits && ulBit < lpBits->SizeOfBitMap && - lpBits->BitMapBuffer[ulBit >> 3] & (1 << (ulBit & 7))) - return TRUE; - return FALSE; -} - -/* Endianness */ -#define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) -#define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG)) - -#define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) -#define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG)) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ntdef.h b/include/ntdef.h deleted file mode 100644 index 61d5b58eeb4..00000000000 --- a/include/ntdef.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 1999 Juergen Schmied - * - * 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 - */ - -#ifndef __WINE_NTDEF_H -#define __WINE_NTDEF_H - -#include "basetsd.h" -#include "windef.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define NTAPI __stdcall - -#ifndef IN -#define IN -#endif - -#ifndef OUT -#define OUT -#endif - -#ifndef OPTIONAL -#define OPTIONAL -#endif - -#ifndef VOID -#define VOID void -#endif - -typedef LONG NTSTATUS; -typedef NTSTATUS *PNTSTATUS; - -typedef short CSHORT; -typedef CSHORT *PCSHORT; - - -/* NT lowlevel Strings (handled by Rtl* functions in NTDLL) - * If they are zero terminated, Length does not include the terminating 0. - */ - -typedef struct _STRING { - USHORT Length; - USHORT MaximumLength; - PSTR Buffer; -} STRING,*PSTRING,ANSI_STRING,*PANSI_STRING; - -typedef struct _CSTRING { - USHORT Length; - USHORT MaximumLength; - PCSTR Buffer; -} CSTRING,*PCSTRING; - -typedef struct _UNICODE_STRING { - USHORT Length; /* bytes */ - USHORT MaximumLength; /* bytes */ - PWSTR Buffer; -} UNICODE_STRING,*PUNICODE_STRING; - -/* - Objects -*/ - -#define OBJ_INHERIT 0x00000002L -#define OBJ_PERMANENT 0x00000010L -#define OBJ_EXCLUSIVE 0x00000020L -#define OBJ_CASE_INSENSITIVE 0x00000040L -#define OBJ_OPENIF 0x00000080L -#define OBJ_OPENLINK 0x00000100L -#define OBJ_KERNEL_HANDLE 0x00000200L -#define OBJ_VALID_ATTRIBUTES 0x000003F2L - -typedef struct _OBJECT_ATTRIBUTES -{ ULONG Length; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */ - PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */ -} OBJECT_ATTRIBUTES; - -typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; - -#define InitializeObjectAttributes(p,n,a,r,s) \ -{ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ - (p)->RootDirectory = r; \ - (p)->Attributes = a; \ - (p)->ObjectName = n; \ - (p)->SecurityDescriptor = s; \ - (p)->SecurityQualityOfService = NULL; \ -} - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/thread.h b/include/thread.h index 872529914e8..29e9b7a3918 100644 --- a/include/thread.h +++ b/include/thread.h @@ -21,7 +21,7 @@ #ifndef __WINE_THREAD_H #define __WINE_THREAD_H -#include "ntdef.h" /* UNICODE_STRING */ +#include "winternl.h" #include "wine/windef16.h" struct _PDB; diff --git a/include/wine/server.h b/include/wine/server.h index 0e1542a0115..4a3aec82faa 100644 --- a/include/wine/server.h +++ b/include/wine/server.h @@ -22,7 +22,6 @@ #define __WINE_WINE_SERVER_H #include "thread.h" -#include "ntddk.h" #include "wine/exception.h" #include "wine/server_protocol.h" diff --git a/include/winternl.h b/include/winternl.h index 7e7f9a7a006..4c32a7f055f 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -22,6 +22,8 @@ #define __WINE_WINTERNAL_H #include "windef.h" +#include "winnt.h" +#include "winreg.h" #ifdef __cplusplus extern "C" { @@ -39,8 +41,9 @@ typedef struct _PEB { } PEB, *PPEB; /*********************************************************************** - * PEB data structure + * TEB data structure */ +#if 0 typedef struct _TEB { BYTE Reserved1[1952]; PVOID Reserved2[412]; @@ -51,15 +54,19 @@ typedef struct _TEB { PVOID Reserved5[4]; PVOID TlsExpansionSlots; } TEB, *PTEB; +#endif /********************************************************************** - * Various types and data structures + * Fundamental types and data structures */ typedef LONG NTSTATUS; typedef CONST char *PCSZ; +typedef short CSHORT; +typedef CSHORT *PCSHORT; + typedef struct _STRING { USHORT Length; USHORT MaximumLength; @@ -68,39 +75,189 @@ typedef struct _STRING { typedef STRING ANSI_STRING; typedef PSTRING PANSI_STRING; -typedef PSTRING PCANSI_STRING; +typedef const STRING *PCANSI_STRING; typedef STRING OEM_STRING; typedef PSTRING POEM_STRING; typedef const STRING *PCOEM_STRING; typedef struct _UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; + USHORT Length; /* bytes */ + USHORT MaximumLength; /* bytes */ PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; typedef const UNICODE_STRING *PCUNICODE_STRING; -typedef struct _OBJECT_ATTRIBUTES { - ULONG Length; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; -} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; +/*********************************************************************** + * Enums + */ -typedef struct _IO_STATUS_BLOCK { - union { - NTSTATUS Status; - PVOID Pointer; - } DUMMYUNIONNAME; +typedef enum _FILE_INFORMATION_CLASS { + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileObjectIdInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileQuotaInformation, + FileReparsePointInformation, + FileNetworkOpenInformation, + FileAttributeTagInformation, + FileTrackingInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; - ULONG_PTR Information; -} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; +typedef enum _FSINFOCLASS { + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; -typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG); +typedef enum _KEY_INFORMATION_CLASS { + KeyBasicInformation, + KeyNodeInformation, + KeyFullInformation +} KEY_INFORMATION_CLASS; + +typedef enum _KEY_VALUE_INFORMATION_CLASS { + KeyValueBasicInformation, + KeyValueFullInformation, + KeyValuePartialInformation, + KeyValueFullInformationAlign64, + KeyValuePartialInformationAlign64 +} KEY_VALUE_INFORMATION_CLASS; + +typedef enum _OBJECT_INFORMATION_CLASS { + DunnoTheConstants1 /* FIXME */ +} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; + +typedef enum _PROCESSINFOCLASS { + ProcessBasicInformation = 0, + ProcessQuotaLimits = 1, + ProcessIoCounters = 2, + ProcessVmCounters = 3, + ProcessTimes = 4, + ProcessBasePriority = 5, + ProcessRaisePriority = 6, + ProcessDebugPort = 7, + ProcessExceptionPort = 8, + ProcessAccessToken = 9, + ProcessLdtInformation = 10, + ProcessLdtSize = 11, + ProcessDefaultHardErrorMode = 12, + ProcessIoPortHandlers = 13, + ProcessPooledUsageAndLimits = 14, + ProcessWorkingSetWatch = 15, + ProcessUserModeIOPL = 16, + ProcessEnableAlignmentFaultFixup = 17, + ProcessPriorityClass = 18, + ProcessWx86Information = 19, + ProcessHandleCount = 20, + ProcessAffinityMask = 21, + ProcessPriorityBoost = 22, + ProcessDeviceMap = 23, + ProcessSessionInformation = 24, + ProcessForegroundInformation = 25, + ProcessWow64Information = 26, + MaxProcessInfoClass +} PROCESSINFOCLASS; + +typedef enum _SECTION_INHERIT { + ViewShare = 1, + ViewUnmap = 2 +} SECTION_INHERIT; + +typedef enum SYSTEM_INFORMATION_CLASS { + SystemBasicInformation = 0, + Unknown1, + SystemPerformanceInformation = 2, + SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */ + Unknown4, + SystemProcessInformation = 5, + Unknown6, + Unknown7, + SystemProcessorPerformanceInformation = 8, + Unknown9, + Unknown10, + SystemDriverInformation, + Unknown12, + Unknown13, + Unknown14, + Unknown15, + SystemHandleList, + Unknown17, + Unknown18, + Unknown19, + Unknown20, + SystemCacheInformation, + Unknown22, + SystemInterruptInformation = 23, + SystemExceptionInformation = 33, + SystemRegistryQuotaInformation = 37, + SystemLookasideInformation = 45 +} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _THREADINFOCLASS { + ThreadBasicInformation, + ThreadTimes, + ThreadPriority, + ThreadBasePriority, + ThreadAffinityMask, + ThreadImpersonationToken, + ThreadDescriptorTableEntry, + ThreadEnableAlignmentFaultFixup, + ThreadEventPair_Reusable, + ThreadQuerySetWin32StartAddress, + ThreadZeroTlsCell, + ThreadPerformanceCount, + ThreadAmILastThread, + ThreadIdealProcessor, + ThreadPriorityBoost, + ThreadSetTlsArrayAddress, + ThreadIsIoPending, + MaxThreadInfoClass +} THREADINFOCLASS; + +typedef enum _WINSTATIONINFOCLASS { + WinStationInformation = 8 +} WINSTATIONINFOCLASS; /*********************************************************************** * IA64 specific types and data structures @@ -138,58 +295,264 @@ typedef struct _UNWIND_HISTORY_TABLE { #endif /* defined(__ia64__) */ /*********************************************************************** - * Various types and data structures + * Types and data structures */ +/* This is used by NtQuerySystemInformation */ +/* FIXME: Isn't THREAD_INFO and THREADINFO the same structure? */ +typedef struct { + FILETIME ftCreationTime; + DWORD dwUnknown1; + DWORD dwStartAddress; + DWORD dwOwningPID; + DWORD dwThreadID; + DWORD dwCurrentPriority; + DWORD dwBasePriority; + DWORD dwContextSwitches; + DWORD dwThreadState; + DWORD dwWaitReason; + DWORD dwUnknown2[5]; +} THREADINFO, *PTHREADINFO; + +/* FIXME: Isn't THREAD_INFO and THREADINFO the same structure? */ +typedef struct _THREAD_INFO{ + DWORD Unknown1[6]; + DWORD ThreadID; + DWORD Unknown2[3]; + DWORD Status; + DWORD WaitReason; + DWORD Unknown3[4]; +} THREAD_INFO, PTHREAD_INFO; + +/*********************************************************************** + * Types and data structures + */ + +typedef struct _IO_STATUS_BLOCK { + union { + NTSTATUS Status; + PVOID Pointer; + } DUMMYUNIONNAME; + + ULONG_PTR Information; +} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; + +typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG); + +typedef struct _KEY_BASIC_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; +} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; + +typedef struct _KEY_NODE_INFORMATION +{ + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG NameLength; + WCHAR Name[1]; + /* Class[1]; */ +} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; + +typedef struct _KEY_FULL_INFORMATION +{ + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG SubKeys; + ULONG MaxNameLen; + ULONG MaxClassLen; + ULONG Values; + ULONG MaxValueNameLen; + ULONG MaxValueDataLen; + WCHAR Class[1]; +} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; + +typedef struct _KEY_VALUE_ENTRY +{ + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; +} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; + +typedef struct _KEY_VALUE_BASIC_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; + +typedef struct _KEY_VALUE_FULL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + +typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */ + PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */ +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; + typedef struct _PROCESS_BASIC_INFORMATION { +#ifdef __WINE__ + DWORD ExitStatus; + DWORD PebBaseAddress; + DWORD AffinityMask; + DWORD BasePriority; + ULONG UniqueProcessId; + ULONG InheritedFromUniqueProcessId; +#else PVOID Reserved1; PPEB PebBaseAddress; PVOID Reserved2[2]; ULONG_PTR UniqueProcessId; PVOID Reserved3; +#endif } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; -typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { - LARGE_INTEGER IdleTime; - LARGE_INTEGER KernelTime; - LARGE_INTEGER UserTime; - LARGE_INTEGER Reserved1[2]; - ULONG Reserved2; -} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; +typedef struct _PROCESS_INFO { + DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/ + DWORD ThreadCount; /* 04 number of ThreadInfo member ok */ + DWORD Unknown1[6]; + FILETIME CreationTime; /* 20 */ + DWORD Unknown2[5]; + PWCHAR ProcessName; /* 3c ok */ + DWORD BasePriority; + DWORD ProcessID; /* 44 ok*/ + DWORD ParentProcessID; + DWORD HandleCount; + DWORD Unknown3[2]; /* 50 */ + ULONG PeakVirtualSize; + ULONG VirtualSize; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG QuotaPeakPagedPoolUsage; + ULONG QuotaPagedPoolUsage; + ULONG QuotaPeakNonPagedPoolUsage; + ULONG QuotaNonPagedPoolUsage; + ULONG PagefileUsage; + ULONG PeakPagefileUsage; + DWORD PrivateBytes; + DWORD Unknown6[4]; + THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/ +} PROCESS_INFO, PPROCESS_INFO; -typedef struct _SYSTEM_PROCESS_INFORMATION { - ULONG NextEntryOffset; - BYTE Reserved1[52]; - PVOID Reserved2[3]; - HANDLE UniqueProcessId; - PVOID Reserved3; - ULONG HandleCount; - BYTE Reserved4[4]; - PVOID Reserved5[11]; - SIZE_T PeakPagefileUsage; - SIZE_T PrivatePageCount; - LARGE_INTEGER Reserved6[6]; -} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; +typedef struct _RTL_HEAP_DEFINITION { + ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */ -typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { - ULONG RegistryQuotaAllowed; - ULONG RegistryQuotaUsed; - PVOID Reserved1; -} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; + ULONG Unknown[11]; +} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; +typedef struct tagRTL_BITMAP { + ULONG SizeOfBitMap; /* Number of bits in the bitmap */ + LPBYTE BitMapBuffer; /* Bitmap data, assumed sized to a DWORD boundary */ +} RTL_BITMAP, *PRTL_BITMAP; + +typedef const RTL_BITMAP *PCRTL_BITMAP; + +typedef struct tagRTL_BITMAP_RUN { + ULONG StartOfRun; /* Bit position at which run starts - FIXME: Name? */ + ULONG SizeOfRun; /* Size of the run in bits - FIXME: Name? */ +} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; + +typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN; + +typedef struct _RTL_RWLOCK { + RTL_CRITICAL_SECTION rtlCS; + + HANDLE hSharedReleaseSemaphore; + UINT uSharedWaiters; + + HANDLE hExclusiveReleaseSemaphore; + UINT uExclusiveWaiters; + + INT iNumberActive; + HANDLE hOwningThreadId; + DWORD dwTimeoutBoost; + PVOID pDebugInfo; +} RTL_RWLOCK, *LPRTL_RWLOCK; + +/* System Information Class 0x00 */ typedef struct _SYSTEM_BASIC_INFORMATION { +#ifdef __WINE__ + DWORD dwUnknown1; + ULONG uKeMaximumIncrement; + ULONG uPageSize; + ULONG uMmNumberOfPhysicalPages; + ULONG uMmLowestPhysicalPage; + ULONG uMmHighestPhysicalPage; + ULONG uAllocationGranularity; + PVOID pLowestUserAddress; + PVOID pMmHighestUserAddress; + ULONG uKeActiveProcessors; + BYTE bKeNumberProcessors; + BYTE bUnknown2; + WORD wUnknown3; +#else BYTE Reserved1[24]; PVOID Reserved2[4]; CCHAR NumberOfProcessors; +#endif } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; -typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { - BYTE Reserved1[48]; -} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; +/* System Information Class 0x15 */ +typedef struct { + ULONG CurrentSize; + ULONG PeakSize; + ULONG PageFaultCount; + ULONG MinimumWorkingSet; + ULONG MaximumWorkingSet; + ULONG unused[4]; +} SYSTEM_CACHE_INFORMATION; -typedef struct _SYSTEM_PERFORMANCE_INFORMATION { - BYTE Reserved1[312]; -} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; +typedef struct _SYSTEM_CONFIGURATION_INFO { + union { + ULONG OemId; + struct { + WORD ProcessorArchitecture; + WORD Reserved; + } tag1; + } tag2; + ULONG PageSize; + PVOID MinimumApplicationAddress; + PVOID MaximumApplicationAddress; + ULONG ActiveProcessorMask; + ULONG NumberOfProcessors; + ULONG ProcessorType; + ULONG AllocationGranularity; + WORD ProcessorLevel; + WORD ProcessorRevision; +} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO; + +/* System Information Class 0x0b */ +typedef struct { + PVOID pvAddress; + DWORD dwUnknown1; + DWORD dwUnknown2; + DWORD dwEntryIndex; + DWORD dwUnknown3; + char szName[MAX_PATH + 1]; +} SYSTEM_DRIVER_INFORMATION; typedef struct _SYSTEM_EXCEPTION_INFORMATION { BYTE Reserved1[16]; @@ -203,104 +566,487 @@ typedef struct _SYSTEM_INTERRUPT_INFORMATION { BYTE Reserved1[24]; } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; +/* System Information Class 0x10 */ +typedef struct { + USHORT dwPID; + USHORT dwCreatorBackTraceIndex; + BYTE bObjectType; + BYTE bHandleAttributes; + USHORT usHandleOffset; + DWORD dwKeObject; + ULONG ulGrantedAccess; +} HANDLEINFO, *PHANDLEINFO; /* FIXME: SYSTEM_HANDLE_INFORMATION? */ -/*********************************************************************** - * Enums - */ +typedef struct _SYSTEM_PERFORMANCE_INFORMATION { + BYTE Reserved1[312]; +} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; -typedef enum _FILE_INFORMATION_CLASS { - FileDirectoryInformation = 1 -} FILE_INFORMATION_CLASS; - -typedef enum _PROCESSINFOCLASS { - ProcessBasicInformation = 0, - ProcessWow64Information = 26 -} PROCESSINFOCLASS; - -typedef enum _THREADINFOCLASS { - ThreadIsIoPending = 16 -} THREADINFOCLASS; - -typedef enum _SYSTEM_INFORMATION_CLASS { - SystemBasicInformation = 0, - SystemPerformanceInformation = 2, - SystemTimeOfDayInformation = 3, - SystemProcessInformation = 5, - SystemProcessorPerformanceInformation = 8, - SystemInterruptInformation = 23, - SystemExceptionInformation = 33, - SystemRegistryQuotaInformation = 37, - SystemLookasideInformation = 45 -} SYSTEM_INFORMATION_CLASS; - -#if (_WIN32_WINNT >= 0x0501) -#define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) ) -#endif /* (_WIN32_WINNT >= 0x0501) */ - -/*********************************************************************** - * Macro expensions - */ - -#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) -#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) -#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) - -/*********************************************************************** - * Function declarations - */ - -NTSTATUS WINAPI NtClose(HANDLE); -NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); -NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG); -NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); -NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,PLARGE_INTEGER); -BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(PUNICODE_STRING,POEM_STRING,PBOOLEAN); -ULONG WINAPI RtlNtStatusToDosError(NTSTATUS); -NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); -NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); -NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG); -NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); -NTSTATUS WINAPI RtlLocalTimeToSystemTime(PLARGE_INTEGER,PLARGE_INTEGER); -BOOLEAN WINAPI RtlTimeToSecondsSince1970(PLARGE_INTEGER,PULONG); -void WINAPI RtlFreeAnsiString(PANSI_STRING); -void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); -void WINAPI RtlFreeOemString(POEM_STRING); -void WINAPI RtlInitString(PSTRING,PCSZ); -void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); -void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); -NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); -NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); -NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN); -NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PWSTR,ULONG); -NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG); -NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN); -ULONG WINAPI RtlUniform(PULONG); -void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID); - -#ifdef __ia64__ -void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT); -void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); +/* System Information Class 0x02 */ +typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { +#ifdef __WINE__ + LARGE_INTEGER liIdleTime; + DWORD dwSpare[76]; +#else + LARGE_INTEGER IdleTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER Reserved1[2]; + ULONG Reserved2; #endif +} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; -/*********************************************************************** - * Various macros, types and data structures - */ +/* System Information Class 0x05 */ +typedef struct _SYSTEM_PROCESS_INFORMATION { +#ifdef __WINE__ + DWORD dwOffset; + DWORD dwThreadCount; + DWORD dwUnknown1[6]; + FILETIME ftCreationTime; + DWORD dwUnknown2[5]; + WCHAR *pszProcessName; + DWORD dwBasePriority; + DWORD dwProcessID; + DWORD dwParentProcessID; + DWORD dwHandleCount; + DWORD dwUnknown3; + DWORD dwUnknown4; + DWORD dwVirtualBytesPeak; + DWORD dwVirtualBytes; + DWORD dwPageFaults; + DWORD dwWorkingSetPeak; + DWORD dwWorkingSet; + DWORD dwUnknown5; + DWORD dwPagedPool; + DWORD dwUnknown6; + DWORD dwNonPagedPool; + DWORD dwPageFileBytesPeak; + DWORD dwPrivateBytes; + DWORD dwPageFileBytes; + DWORD dwUnknown7[4]; + THREADINFO ti[1]; +#else + ULONG NextEntryOffset; + BYTE Reserved1[52]; + PVOID Reserved2[3]; + HANDLE UniqueProcessId; + PVOID Reserved3; + ULONG HandleCount; + BYTE Reserved4[4]; + PVOID Reserved5[11]; + SIZE_T PeakPagefileUsage; + SIZE_T PrivatePageCount; + LARGE_INTEGER Reserved6[6]; +#endif +} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; -#define LOGONID_CURRENT ((ULONG)-1) -#define SERVERNAME_CURRENT ((HANDLE)NULL) +typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { + ULONG RegistryQuotaAllowed; + ULONG RegistryQuotaUsed; + PVOID Reserved1; +} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; -typedef enum _WINSTATIONINFOCLASS { - WinStationInformation = 8 -} WINSTATIONINFOCLASS; +typedef struct _SYSTEM_TIME_ADJUSTMENT { + ULONG TimeAdjustment; + BOOLEAN TimeAdjustmentDisabled; +} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT; + +/* System Information Class 0x03 */ +typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { +#ifdef __WINE__ + LARGE_INTEGER liKeBootTime; + LARGE_INTEGER liKeSystemTime; + LARGE_INTEGER liExpTimeZoneBias; + ULONG uCurrentTimeZoneId; + DWORD dwReserved; +#else + BYTE Reserved1[48]; +#endif +} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */ + +typedef struct _TIME_FIELDS +{ CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; +} TIME_FIELDS, *PTIME_FIELDS; typedef struct _WINSTATIONINFORMATIONW { BYTE Reserved2[70]; ULONG LogonId; BYTE Reserved3[1140]; -} WINSTATIONINFORMATIONW, * PWINSTATIONINFORMATIONW; +} WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW; + +typedef struct _VM_COUNTERS_ { + ULONG PeakVirtualSize; + ULONG VirtualSize; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG QuotaPeakPagedPoolUsage; + ULONG QuotaPagedPoolUsage; + ULONG QuotaPeakNonPagedPoolUsage; + ULONG QuotaNonPagedPoolUsage; + ULONG PagefileUsage; + ULONG PeakPagefileUsage; +} VM_COUNTERS, *PVM_COUNTERS; typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG); +/*********************************************************************** + * Defines + */ + +/* flags for NtCreateFile and NtOpenFile */ +#define FILE_DIRECTORY_FLAG 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 + +/* status for NtCreateFile or NtOpenFile */ +#define FILE_SUPERSEDED 0x00000000 +#define FILE_OPENED 0x00000001 +#define FILE_CREATED 0x00000002 +#define FILE_OVERWRITTEN 0x00000003 +#define FILE_EXISTS 0x00000004 +#define FILE_DOES_NOT_EXIST 0x00000005 + +#if (_WIN32_WINNT >= 0x0501) +#define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) ) +#endif /* (_WIN32_WINNT >= 0x0501) */ + +#define LOGONID_CURRENT ((ULONG)-1) + +#define OBJ_INHERIT 0x00000002L +#define OBJ_PERMANENT 0x00000010L +#define OBJ_EXCLUSIVE 0x00000020L +#define OBJ_CASE_INSENSITIVE 0x00000040L +#define OBJ_OPENIF 0x00000080L +#define OBJ_OPENLINK 0x00000100L +#define OBJ_KERNEL_HANDLE 0x00000200L +#define OBJ_VALID_ATTRIBUTES 0x000003F2L + +#define SERVERNAME_CURRENT ((HANDLE)NULL) + +/*********************************************************************** + * Function declarations + */ + +extern LPSTR _strlwr(LPSTR str); /* FIXME: Doesn't belong here */ +extern LPSTR _strupr(LPSTR str); /* FIXME: Doesn't belong here */ + +#if defined(__i386__) && defined(__GNUC__) +static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); } +static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); } +#else /* __i386__ && __GNUC__ */ +void WINAPI DbgBreakPoint(void); +void WINAPI DbgUserBreakPoint(void); +#endif /* __i386__ && __GNUC__ */ +void WINAPIV DbgPrint(LPCSTR fmt, ...); + +NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,PBOOLEAN); +NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD); +NTSTATUS WINAPI NtClearEvent(HANDLE); +NTSTATUS WINAPI NtClose(HANDLE); +NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN); +NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); +NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); +NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG); +NTSTATUS WINAPI NtDeleteKey(HANDLE); +NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *); +NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); +NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *); +NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG); +NTSTATUS WINAPI NtFlushKey(HANDLE); +NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,const OBJECT_ATTRIBUTES *); +NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN); +NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *); +NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG); +NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *); +NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *); +NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *); +NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG); +NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); +NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); +NTSTATUS WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD); +NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *); +NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PVALENTW,ULONG,PVOID,ULONG,PULONG); +NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG); +NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG); +NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); +NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); +void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); +NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG); +NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG); +NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG); +NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG); +NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES); +NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE); +NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG); +NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG); +NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG); +NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG); +NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG); +NTSTATUS WINAPI NtUnloadKey(HANDLE); +NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,PLARGE_INTEGER); + +void WINAPI RtlAcquirePebLock(void); +BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE); +BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE); +NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD); +BOOL WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID); +BOOL WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); +DWORD WINAPI RtlAdjustPrivilege(DWORD,DWORD,DWORD,DWORD); +BOOLEAN WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *); +PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG); +DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *); +NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); +NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR); +NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *); +NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *); +NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR); +BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG); +BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG); + +NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG); +void WINAPI RtlClearAllBits(PRTL_BITMAP); +void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG); +ULONG WINAPI RtlCompactHeap(HANDLE,ULONG); +LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN); +LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); +NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN); +LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG); +ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG); +DWORD WINAPI RtlCopySid(DWORD,PSID,PSID); +void WINAPI RtlCopyString(STRING*,const STRING*); +void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*); +NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD); +DWORD WINAPI RtlCreateEnvironment(DWORD,DWORD); +HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION); +NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD); +BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR); +BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR); + +NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *); +void WINAPI RtlDeleteResource(LPRTL_RWLOCK); +DWORD WINAPI RtlDeleteSecurityObject(DWORD); +DWORD WINAPI RtlDestroyEnvironment(DWORD); +HANDLE WINAPI RtlDestroyHeap(HANDLE); +BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(LPWSTR,PUNICODE_STRING,DWORD,DWORD); +void WINAPI RtlDumpResource(LPRTL_RWLOCK); + +LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT); +ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT); +UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *); +NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *); +void WINAPI RtlEraseUnicodeString(UNICODE_STRING*); +BOOL WINAPI RtlEqualPrefixSid(PSID,PSID); +BOOL WINAPI RtlEqualSid(PSID,PSID); +BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN); +BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); +LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT); +LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT); +LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *); + +ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG); +ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG); +ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); +ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG); +ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG); +CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG); +ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG); +ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG); +CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG); +ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG); +ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG); +ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG); +ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG); +ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); +BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *); +NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING); +void WINAPI RtlFreeAnsiString(PANSI_STRING); +BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID); +void WINAPI RtlFreeOemString(POEM_STRING); +DWORD WINAPI RtlFreeSid(PSID); +void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); + +DWORD WINAPI RtlGetAce(PACL,DWORD,LPVOID *); +NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); +NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD); +NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); +BOOLEAN WINAPI RtlGetNtProductType(LPDWORD); +NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); +ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*); +NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); + +PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID); +PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *); +PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE); +PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD); +PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **); +BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); +void WINAPI RtlInitString(PSTRING,PCSZ); +void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); +void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); +NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *); +NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD); +void WINAPI RtlInitializeBitMap(PRTL_BITMAP,LPBYTE,ULONG); +void WINAPI RtlInitializeResource(LPRTL_RWLOCK); +BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); + +DWORD WINAPI RtlIntegerToChar(DWORD,DWORD,DWORD,DWORD); +BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(PUNICODE_STRING,POEM_STRING,PBOOLEAN); +DWORD WINAPI RtlIsTextUnicode(LPVOID,DWORD,DWORD *); + +LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG); +LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT); +ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *); +LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG); +LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT); +LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT); +LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG); +NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *); +DWORD WINAPI RtlLengthRequiredSid(DWORD); +ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR); +DWORD WINAPI RtlLengthSid(PSID); +NTSTATUS WINAPI RtlLocalTimeToSystemTime(PLARGE_INTEGER,PLARGE_INTEGER); +BOOLEAN WINAPI RtlLockHeap(HANDLE); + +NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD); +NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); +NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT); + +DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); +LPVOID WINAPI RtlNormalizeProcessParams(LPVOID); +ULONG WINAPI RtlNtStatusToDosError(NTSTATUS); +ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP); +ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP); + +UINT WINAPI RtlOemStringToUnicodeSize(const STRING*); +NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN); +NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); +DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE); + +BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN); +BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); + +DWORD WINAPI RtlQueryEnvironmentVariable_U(DWORD,PUNICODE_STRING,PUNICODE_STRING) ; + +void WINAPI RtlRaiseException(PEXCEPTION_RECORD); +void WINAPI RtlRaiseStatus(NTSTATUS); +PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG); +void WINAPI RtlReleasePebLock(void); +void WINAPI RtlReleaseResource(LPRTL_RWLOCK); + +void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *); +void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *); +void WINAPI RtlSetAllBits(PRTL_BITMAP); +void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG); +NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); +DWORD WINAPI RtlSetEnvironmentVariable(DWORD,PUNICODE_STRING,PUNICODE_STRING); +NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); +ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID); +LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD); +LPBYTE WINAPI RtlSubAuthorityCountSid(PSID); +void WINAPI RtlSystemTimeToLocalTime(PLARGE_INTEGER,PLARGE_INTEGER); + +void WINAPI RtlTimeToTimeFields(PLARGE_INTEGER,PTIME_FIELDS); +BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER); +void WINAPI RtlTimeToElapsedTimeFields(PLARGE_INTEGER,PTIME_FIELDS); +BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,PULONG); +BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD); +BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *); + +DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*); +NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); +DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*); +NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN); +NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); +NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG); +NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); +ULONG WINAPI RtlUniform(PULONG); +BOOLEAN WINAPI RtlUnlockHeap(HANDLE); +void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID); +#ifdef __ia64__ +void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT); +void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); +#endif +NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN); +NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN); +NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN); +NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); +NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); + +NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); +BOOL WINAPI RtlValidSid(PSID); +BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,PCVOID); + +NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID); + +NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *); +NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *); + +/*********************************************************************** + * Inline functions + */ + +#define InitializeObjectAttributes(p,n,a,r,s) \ + do { \ + (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ + (p)->RootDirectory = r; \ + (p)->Attributes = a; \ + (p)->ObjectName = n; \ + (p)->SecurityDescriptor = s; \ + (p)->SecurityQualityOfService = NULL; \ + } while (0) + +#define NtCurrentProcess() ((HANDLE)-1) + +#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) +#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) +#define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) +#define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) +#define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG)) +#define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG)) +#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) + +inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit) +{ + if (lpBits && ulBit < lpBits->SizeOfBitMap && + lpBits->BitMapBuffer[ulBit >> 3] & (1 << (ulBit & 7))) + return TRUE; + return FALSE; +} + +#define RtlClearAllBits(p) \ + do { \ + PRTL_BITMAP _p = (p); \ + memset(_p->BitMapBuffer,0,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \ + } while (0) + +#define RtlInitializeBitMap(p,b,s) \ + do { \ + PRTL_BITMAP _p = (p); \ + _p->SizeOfBitMap = (s); \ + _p->BitMapBuffer = (b); \ + } while (0) + +#define RtlSetAllBits(p) \ + do { \ + PRTL_BITMAP _p = (p); \ + memset(_p->BitMapBuffer,0xff,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \ + } while (0) + #ifdef __cplusplus } /* extern "C" */ #endif /* defined(__cplusplus) */ diff --git a/loader/module.c b/loader/module.c index 854802cb02f..41119f52c10 100644 --- a/loader/module.c +++ b/loader/module.c @@ -32,6 +32,7 @@ #endif #include "wine/winbase16.h" #include "winerror.h" +#include "winternl.h" #include "heap.h" #include "file.h" #include "module.h" diff --git a/loader/pe_resource.c b/loader/pe_resource.c index ed830def2fe..a50ff04dbe0 100644 --- a/loader/pe_resource.c +++ b/loader/pe_resource.c @@ -32,7 +32,7 @@ #include "wine/unicode.h" #include "windef.h" #include "winnls.h" -#include "ntddk.h" +#include "winternl.h" #include "winerror.h" #include "wine/debug.h" diff --git a/loader/task.c b/loader/task.c index ab7884d02f4..ce673e2eec7 100644 --- a/loader/task.c +++ b/loader/task.c @@ -40,7 +40,7 @@ #include "instance.h" #include "miscemu.h" #include "module.h" -#include "ntddk.h" +#include "winternl.h" #include "selectors.h" #include "wine/server.h" #include "syslevel.h" diff --git a/memory/environ.c b/memory/environ.c index ebdd09791f3..34305108187 100644 --- a/memory/environ.c +++ b/memory/environ.c @@ -31,7 +31,7 @@ #include "wine/server.h" #include "wine/library.h" #include "heap.h" -#include "ntddk.h" +#include "winternl.h" #include "selectors.h" /* Win32 process environment database */ diff --git a/memory/heap.c b/memory/heap.c index cb1dacc7a10..22603a3c73f 100644 --- a/memory/heap.c +++ b/memory/heap.c @@ -30,7 +30,7 @@ #include "wine/winbase16.h" #include "winerror.h" #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "selectors.h" #include "global.h" diff --git a/misc/main.c b/misc/main.c index 3137a4366c0..9e502be1852 100644 --- a/misc/main.c +++ b/misc/main.c @@ -37,7 +37,7 @@ #include "windef.h" #include "winbase.h" #include "wine/winbase16.h" -#include "ntddk.h" +#include "winternl.h" #include "winnls.h" #include "winerror.h" #include "wine/debug.h" diff --git a/misc/options.c b/misc/options.c index 3421d097e6b..4479d76cd00 100644 --- a/misc/options.c +++ b/misc/options.c @@ -24,7 +24,7 @@ #include "winbase.h" #include "winnls.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/library.h" #include "options.h" #include "module.h" diff --git a/misc/version.c b/misc/version.c index 362c8d6a3b2..96917492744 100644 --- a/misc/version.c +++ b/misc/version.c @@ -32,7 +32,7 @@ #include "winreg.h" #include "wingdi.h" #include "winuser.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/winbase16.h" #include "module.h" #include "wine/debug.h" diff --git a/msdos/int21.c b/msdos/int21.c index 3e020db55f9..c2bae62e21d 100644 --- a/msdos/int21.c +++ b/msdos/int21.c @@ -47,7 +47,7 @@ #include #include "windef.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "wingdi.h" #include "winuser.h" /* SW_NORMAL */ #include "wine/winbase16.h" diff --git a/msdos/vxd.c b/msdos/vxd.c index 7b77975ec6a..83b84d75917 100644 --- a/msdos/vxd.c +++ b/msdos/vxd.c @@ -30,7 +30,7 @@ #endif #include "winbase.h" #include "windef.h" -#include "ntddk.h" +#include "winternl.h" #include "wingdi.h" #include "winuser.h" #include "wine/winbase16.h" diff --git a/ole/ole2nls.c b/ole/ole2nls.c index 7fe5ae13139..3c7b0e3f06e 100644 --- a/ole/ole2nls.c +++ b/ole/ole2nls.c @@ -33,7 +33,7 @@ #include "winbase.h" #include "wingdi.h" #include "winuser.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/unicode.h" #include "winver.h" #include "winnls.h" diff --git a/relay32/relay386.c b/relay32/relay386.c index 7da6c1a2a03..407a27b83c6 100644 --- a/relay32/relay386.c +++ b/relay32/relay386.c @@ -26,7 +26,7 @@ #include #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "winreg.h" #include "stackframe.h" #include "module.h" diff --git a/relay32/snoop.c b/relay32/snoop.c index c43e44a9953..53d91adbac8 100644 --- a/relay32/snoop.c +++ b/relay32/snoop.c @@ -26,7 +26,7 @@ #include #include "winbase.h" #include "winnt.h" -#include "ntddk.h" +#include "winternl.h" #include "snoop.h" #include "stackframe.h" #include "wine/debug.h" diff --git a/scheduler/critsection.c b/scheduler/critsection.c index 20a17ca3cd6..9977e5f1e04 100644 --- a/scheduler/critsection.c +++ b/scheduler/critsection.c @@ -28,7 +28,7 @@ #include "winerror.h" #include "winbase.h" -#include "ntddk.h" +#include "winternl.h" #include "wine/debug.h" #include "thread.h" diff --git a/scheduler/pthread.c b/scheduler/pthread.c index e29b7b3e645..3086b5698f3 100644 --- a/scheduler/pthread.c +++ b/scheduler/pthread.c @@ -36,7 +36,7 @@ #include "winbase.h" #include "thread.h" -#include "ntddk.h" +#include "winternl.h" static int init_done; diff --git a/scheduler/syslevel.c b/scheduler/syslevel.c index 974650d0729..68dcb86aeb4 100644 --- a/scheduler/syslevel.c +++ b/scheduler/syslevel.c @@ -24,7 +24,7 @@ # include #endif #include -#include "ntddk.h" +#include "winternl.h" #include "syslevel.h" #include "stackframe.h" #include "wine/library.h" diff --git a/server/registry.c b/server/registry.c index 29502ac38a9..792750cdb30 100644 --- a/server/registry.c +++ b/server/registry.c @@ -45,7 +45,7 @@ #include "winbase.h" #include "winreg.h" #include "winnt.h" /* registry definitions */ -#include "ntddk.h" +#include "winternl.h" #include "wine/library.h" /* a registry key */ diff --git a/win32/except.c b/win32/except.c index def3bb7401c..4e1d50b3e49 100644 --- a/win32/except.c +++ b/win32/except.c @@ -41,7 +41,7 @@ #include #include "windef.h" #include "winerror.h" -#include "ntddk.h" +#include "winternl.h" #include "wingdi.h" #include "winuser.h" #include "wine/exception.h"