Move some types from winternl.h to ddk/ntddk.h
Francois Gouget
fgouget at free.fr
Tue Aug 24 18:07:54 CDT 2004
Some of the types that we define in winternl.h are defined in
ddk/ntddk.h in the Windows 2000 DDK. Moving these types to the right
header allows us to use ddk/ntddk.h in dlls/ntdll/tests/rtlbitmap.c
which makes it possible to compile this test with the Windows headers.
It also makes our headers more similar to the Windows ones which is
generally regarded as a good thing.
The tricky part is that in the Windows headers ddk/ntddk.h needs
ddk/ntdef.h which pretty much redefines most of the windef.h and winnt.h
basic types. This also makes it incompatible with most headers like
winbase.h, while many types are defined both in winternl.h and ntddk.h
which also makes them incompatible with each other.
However Wine really needs to be able to use both winternl.h and ntddk.h
at the same time. Also some of our dlls use just one or two Rtl
functions (e.g. RtlLargeIntegerAdd) which requires them to include
ntddk.h although they also use other headers such as winbase.h.
So instead of redefining most of windef.h and winnt.h in ntdef.h, I just
#include them. This makes ntdef.h/ntddk.h compatible with the other Wine
headers, including winternl.h. This probably breaks Microsoft's Device
Driver Kit / Platform SDK separation but I don't think we care much. The
important thing is that it makes the patch simpler and lays the ground
work for going further if we want to.
Wine also uses winternl.h as a repository for many undocumented
low-level APIs. The policy I used for the migration is the following:
1) anything that is defined both in winternl.h in the Platform SDK and
in ntddk.h in the Windows 200 DDK gets duplicated.
2) anything defined in ntddk.h in the Windows 2000 DDK but not in
the Platform SDK moves to ntddk.h
3) anything that needs a declaration that was moved to ntddk.h due
to rule 2) also moves to ntddk.h
4) anything that's not documented at all stays in winternl.h
It may make sense to modify rule 4 to try to move more related APIs to
ntddk.h but that gets fuzzy.
Changelog:
* dlls/advapi32/registry.c
dlls/advapi32/security.c
dlls/kernel/change.c
dlls/kernel/computername.c
dlls/kernel/console.c
dlls/kernel/local16.c
dlls/kernel/ne_module.c
dlls/kernel/path.c
dlls/kernel/profile.c
dlls/kernel/relay16.c
dlls/kernel/resource.c
dlls/kernel/sync.c
dlls/kernel/time.c
dlls/kernel/version.c
dlls/kernel/virtual.c
dlls/kernel/volume.c
dlls/kernel/vxd.c
dlls/mapi32/util.c
dlls/msvcrt/except.c
dlls/msvcrt/scanf.c
dlls/ntdll/rtlbitmap.c
dlls/ntdll/tests/rtlbitmap.c
dlls/ole32/compobj_private.h
dlls/ole32/hglobalstream.c
dlls/ole32/stg_stream.c
dlls/winedos/int21.c
dlls/winedos/ioports.c
dlls/winedos/ppdev.c
include/module.h
include/thread.h
include/windef.h
include/winternl.h
misc/registry.c
server/fd.c
server/file.c
server/registry.c
server/serial.c
server/trace.c
include/ddk/ntdef.h
include/ddk/ntddk.h
Move some declarations from winternl.h to ddk/ntddk.h where they
belong. Adjust the Wine code accordingly.
#include "ddk/ntddk.h" in dlls/ntdll/tests/rtlbitmap.c. This test now
compiles with the Windows 2000 DDK headers.
--
Francois Gouget fgouget at free.fr http://fgouget.free.fr/
Linux: Because rebooting is for adding new hardware
-------------- next part --------------
Index: dlls/advapi32/registry.c
===================================================================
RCS file: /var/cvs/wine/dlls/advapi32/registry.c,v
retrieving revision 1.64
diff -u -r1.64 registry.c
--- dlls/advapi32/registry.c 24 Jul 2004 02:32:50 -0000 1.64
+++ dlls/advapi32/registry.c 24 Aug 2004 13:11:35 -0000
@@ -38,7 +38,7 @@
#include "wine/unicode.h"
#include "wine/server.h"
#include "wine/debug.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
WINE_DEFAULT_DEBUG_CHANNEL(reg);
Index: dlls/advapi32/security.c
===================================================================
RCS file: /var/cvs/wine/dlls/advapi32/security.c,v
retrieving revision 1.79
diff -u -r1.79 security.c
--- dlls/advapi32/security.c 19 Aug 2004 19:01:12 -0000 1.79
+++ dlls/advapi32/security.c 24 Aug 2004 13:12:04 -0000
@@ -27,6 +27,7 @@
#include "winerror.h"
#include "rpcnterr.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "ntstatus.h"
#include "ntsecapi.h"
Index: dlls/kernel/change.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/change.c,v
retrieving revision 1.6
diff -u -r1.6 change.c
--- dlls/kernel/change.c 13 May 2004 20:21:25 -0000 1.6
+++ dlls/kernel/change.c 24 Aug 2004 12:43:12 -0000
@@ -28,6 +28,7 @@
#include "winbase.h"
#include "winerror.h"
#include "ntstatus.h"
+#include "ddk/ntddk.h"
#include "kernel_private.h"
#include "wine/windef16.h"
#include "wine/server.h"
Index: dlls/kernel/computername.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/computername.c,v
retrieving revision 1.10
diff -u -r1.10 computername.c
--- dlls/kernel/computername.c 10 Aug 2004 23:43:21 -0000 1.10
+++ dlls/kernel/computername.c 24 Aug 2004 12:43:33 -0000
@@ -40,6 +40,7 @@
#include "winerror.h"
#include "winnls.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "wine/unicode.h"
#include "wine/exception.h"
Index: dlls/kernel/console.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/console.c,v
retrieving revision 1.34
diff -u -r1.34 console.c
--- dlls/kernel/console.c 10 Aug 2004 23:43:21 -0000 1.34
+++ dlls/kernel/console.c 24 Aug 2004 12:45:28 -0000
@@ -44,6 +44,7 @@
#include "winnls.h"
#include "winerror.h"
#include "wincon.h"
+#include "ddk/ntddk.h"
#include "wine/winbase16.h"
#include "wine/server.h"
#include "wine/exception.h"
Index: dlls/kernel/local16.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/local16.c,v
retrieving revision 1.7
diff -u -r1.7 local16.c
--- dlls/kernel/local16.c 9 Jan 2004 22:18:50 -0000 1.7
+++ dlls/kernel/local16.c 24 Aug 2004 12:50:16 -0000
@@ -40,6 +40,7 @@
#include "stackframe.h"
#include "toolhelp.h"
#include "kernel_private.h"
+#include "winternl.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(local);
Index: dlls/kernel/ne_module.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/ne_module.c,v
retrieving revision 1.25
diff -u -r1.25 ne_module.c
--- dlls/kernel/ne_module.c 10 Aug 2004 23:43:21 -0000 1.25
+++ dlls/kernel/ne_module.c 24 Aug 2004 12:50:31 -0000
@@ -44,6 +44,7 @@
#include "stackframe.h"
#include "excpt.h"
#include "kernel_private.h"
+#include "winternl.h"
#include "wine/unicode.h"
#include "wine/exception.h"
#include "wine/debug.h"
Index: dlls/kernel/path.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/path.c,v
retrieving revision 1.14
diff -u -r1.14 path.c
--- dlls/kernel/path.c 2 Jun 2004 21:32:55 -0000 1.14
+++ dlls/kernel/path.c 24 Aug 2004 12:51:35 -0000
@@ -35,6 +35,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "kernel_private.h"
Index: dlls/kernel/profile.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/profile.c,v
retrieving revision 1.13
diff -u -r1.13 profile.c
--- dlls/kernel/profile.c 16 Jul 2004 02:45:00 -0000 1.13
+++ dlls/kernel/profile.c 24 Aug 2004 12:52:48 -0000
@@ -30,7 +30,7 @@
#include "winnls.h"
#include "winerror.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/winbase16.h"
#include "wine/unicode.h"
#include "wine/server.h"
Index: dlls/kernel/relay16.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/relay16.c,v
retrieving revision 1.8
diff -u -r1.8 relay16.c
--- dlls/kernel/relay16.c 17 Nov 2003 20:31:30 -0000 1.8
+++ dlls/kernel/relay16.c 24 Aug 2004 12:53:00 -0000
@@ -33,6 +33,7 @@
#include "stackframe.h"
#include "builtin16.h"
#include "kernel_private.h"
+#include "winternl.h"
#include "wine/unicode.h"
#include "wine/library.h"
#include "wine/debug.h"
Index: dlls/kernel/resource.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/resource.c,v
retrieving revision 1.8
diff -u -r1.8 resource.c
--- dlls/kernel/resource.c 10 Aug 2004 23:43:21 -0000 1.8
+++ dlls/kernel/resource.c 24 Aug 2004 21:37:02 -0000
@@ -30,6 +30,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "wownt32.h"
#include "wine/winbase16.h"
Index: dlls/kernel/sync.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/sync.c,v
retrieving revision 1.59
diff -u -r1.59 sync.c
--- dlls/kernel/sync.c 18 Aug 2004 00:04:58 -0000 1.59
+++ dlls/kernel/sync.c 24 Aug 2004 12:53:30 -0000
@@ -44,7 +44,7 @@
#include "winerror.h"
#include "winnls.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/server.h"
#include "wine/unicode.h"
Index: dlls/kernel/time.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/time.c,v
retrieving revision 1.42
diff -u -r1.42 time.c
--- dlls/kernel/time.c 28 Apr 2004 03:53:19 -0000 1.42
+++ dlls/kernel/time.c 24 Aug 2004 12:53:55 -0000
@@ -40,6 +40,7 @@
#include "winbase.h"
#include "winreg.h"
#include "ntstatus.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "winerror.h"
#include "winnls.h"
Index: dlls/kernel/version.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/version.c,v
retrieving revision 1.3
diff -u -r1.3 version.c
--- dlls/kernel/version.c 19 May 2004 03:22:56 -0000 1.3
+++ dlls/kernel/version.c 24 Aug 2004 12:54:23 -0000
@@ -34,6 +34,7 @@
#include "wingdi.h"
#include "winuser.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "winerror.h"
#include "wine/winbase16.h"
Index: dlls/kernel/virtual.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/virtual.c,v
retrieving revision 1.3
diff -u -r1.3 virtual.c
--- dlls/kernel/virtual.c 21 May 2004 20:58:44 -0000 1.3
+++ dlls/kernel/virtual.c 24 Aug 2004 12:54:43 -0000
@@ -37,6 +37,7 @@
#include "winbase.h"
#include "winnls.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "winerror.h"
#include "wine/exception.h"
Index: dlls/kernel/volume.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/volume.c,v
retrieving revision 1.20
diff -u -r1.20 volume.c
--- dlls/kernel/volume.c 10 Aug 2004 23:43:21 -0000 1.20
+++ dlls/kernel/volume.c 24 Aug 2004 12:55:11 -0000
@@ -33,6 +33,7 @@
#include "winbase.h"
#include "winreg.h"
#include "winnls.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "ntstatus.h"
#include "winioctl.h"
Index: dlls/kernel/vxd.c
===================================================================
RCS file: /var/cvs/wine/dlls/kernel/vxd.c,v
retrieving revision 1.15
diff -u -r1.15 vxd.c
--- dlls/kernel/vxd.c 18 Aug 2004 00:04:58 -0000 1.15
+++ dlls/kernel/vxd.c 24 Aug 2004 12:55:41 -0000
@@ -32,6 +32,7 @@
#include <string.h>
#include <stdarg.h>
+#include "ddk/ntddk.h"
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
Index: dlls/mapi32/util.c
===================================================================
RCS file: /var/cvs/wine/dlls/mapi32/util.c,v
retrieving revision 1.3
diff -u -r1.3 util.c
--- dlls/mapi32/util.c 1 May 2004 02:39:34 -0000 1.3
+++ dlls/mapi32/util.c 24 Aug 2004 13:16:04 -0000
@@ -26,7 +26,7 @@
#include "winbase.h"
#include "winreg.h"
#include "winerror.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "objbase.h"
#include "shlwapi.h"
#include "wine/debug.h"
Index: dlls/msvcrt/except.c
===================================================================
RCS file: /var/cvs/wine/dlls/msvcrt/except.c,v
retrieving revision 1.32
diff -u -r1.32 except.c
--- dlls/msvcrt/except.c 22 Aug 2004 02:07:13 -0000 1.32
+++ dlls/msvcrt/except.c 24 Aug 2004 13:20:57 -0000
@@ -33,6 +33,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "wine/exception.h"
#include "msvcrt.h"
Index: dlls/msvcrt/scanf.c
===================================================================
RCS file: /var/cvs/wine/dlls/msvcrt/scanf.c,v
retrieving revision 1.7
diff -u -r1.7 scanf.c
--- dlls/msvcrt/scanf.c 25 Jun 2004 01:19:15 -0000 1.7
+++ dlls/msvcrt/scanf.c 24 Aug 2004 13:22:24 -0000
@@ -28,7 +28,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "msvcrt.h"
#include "wine/debug.h"
Index: dlls/ntdll/rtlbitmap.c
===================================================================
RCS file: /var/cvs/wine/dlls/ntdll/rtlbitmap.c,v
retrieving revision 1.10
diff -u -r1.10 rtlbitmap.c
--- dlls/ntdll/rtlbitmap.c 23 Aug 2004 18:52:54 -0000 1.10
+++ dlls/ntdll/rtlbitmap.c 24 Aug 2004 13:23:25 -0000
@@ -35,7 +35,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
Index: dlls/ntdll/tests/rtlbitmap.c
===================================================================
RCS file: /var/cvs/wine/dlls/ntdll/tests/rtlbitmap.c,v
retrieving revision 1.8
diff -u -r1.8 rtlbitmap.c
--- dlls/ntdll/tests/rtlbitmap.c 23 Aug 2004 18:52:54 -0000 1.8
+++ dlls/ntdll/tests/rtlbitmap.c 24 Aug 2004 13:46:56 -0000
@@ -21,7 +21,9 @@
* in later versions of ntdll.
*/
-#include "ntdll_test.h"
+#include <ddk/ntddk.h>
+#include <windef.h>
+#include <wine/test.h>
/* Function ptrs for ordinal calls */
static HMODULE hntdll = 0;
@@ -43,8 +45,11 @@
static ULONG (WINAPI *pRtlFindLongestRunSet)(PRTL_BITMAP,PULONG);
static ULONG (WINAPI *pRtlFindLongestRunClear)(PRTL_BITMAP,PULONG);
-static BYTE buff[256];
-static RTL_BITMAP bm;
+/* On Windows ntddk.h is incompatible with winbase.h so we need to provide
+ * our own prototypes here.
+ */
+HMODULE WINAPI LoadLibraryA(LPCSTR);
+FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
static void InitFunctionPtrs()
{
@@ -71,7 +76,11 @@
pRtlFindLongestRunClear = (void *)GetProcAddress(hntdll, "RtlFindLongestRunClear");
}
}
+
+static BYTE buff[256];
+static RTL_BITMAP bm;
+
static void test_RtlInitializeBitMap(void)
{
bm.SizeOfBitMap = 0;
Index: dlls/ole32/compobj_private.h
===================================================================
RCS file: /var/cvs/wine/dlls/ole32/compobj_private.h,v
retrieving revision 1.18
diff -u -r1.18 compobj_private.h
--- dlls/ole32/compobj_private.h 13 Aug 2004 00:44:22 -0000 1.18
+++ dlls/ole32/compobj_private.h 24 Aug 2004 13:01:07 -0000
@@ -33,7 +33,7 @@
#include "wtypes.h"
#include "dcom.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
/* Windows maps COINIT values to 0x80 for apartment threaded, 0x140
* for free threaded, and 0 for uninitialized apartments. There is
Index: dlls/ole32/hglobalstream.c
===================================================================
RCS file: /var/cvs/wine/dlls/ole32/hglobalstream.c,v
retrieving revision 1.25
diff -u -r1.25 hglobalstream.c
--- dlls/ole32/hglobalstream.c 23 Aug 2004 19:39:50 -0000 1.25
+++ dlls/ole32/hglobalstream.c 24 Aug 2004 13:02:00 -0000
@@ -38,7 +38,7 @@
#include "ole2.h"
#include "winerror.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/debug.h"
Index: dlls/ole32/stg_stream.c
===================================================================
RCS file: /var/cvs/wine/dlls/ole32/stg_stream.c,v
retrieving revision 1.21
diff -u -r1.21 stg_stream.c
--- dlls/ole32/stg_stream.c 23 Aug 2004 19:39:50 -0000 1.21
+++ dlls/ole32/stg_stream.c 24 Aug 2004 13:02:21 -0000
@@ -35,7 +35,7 @@
#include "winbase.h"
#include "winerror.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/debug.h"
#include "storage32.h"
Index: dlls/winedos/int21.c
===================================================================
RCS file: /var/cvs/wine/dlls/winedos/int21.c,v
retrieving revision 1.68
diff -u -r1.68 int21.c
--- dlls/winedos/int21.c 18 Aug 2004 00:04:58 -0000 1.68
+++ dlls/winedos/int21.c 24 Aug 2004 13:10:06 -0000
@@ -36,7 +36,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/winbase16.h"
#include "dosexe.h"
#include "winerror.h"
Index: dlls/winedos/ioports.c
===================================================================
RCS file: /var/cvs/wine/dlls/winedos/ioports.c,v
retrieving revision 1.8
diff -u -r1.8 ioports.c
--- dlls/winedos/ioports.c 17 Sep 2003 22:45:46 -0000 1.8
+++ dlls/winedos/ioports.c 24 Aug 2004 13:10:42 -0000
@@ -34,6 +34,7 @@
#include "winbase.h"
#include "winnls.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "dosexe.h"
#include "vga.h"
Index: dlls/winedos/ppdev.c
===================================================================
RCS file: /var/cvs/wine/dlls/winedos/ppdev.c,v
retrieving revision 1.3
diff -u -r1.3 ppdev.c
--- dlls/winedos/ppdev.c 1 Mar 2004 21:32:02 -0000 1.3
+++ dlls/winedos/ppdev.c 24 Aug 2004 13:11:06 -0000
@@ -41,6 +41,7 @@
#include "winerror.h"
#include "winbase.h"
#include "winreg.h"
+#include "ddk/ntddk.h"
#include "winternl.h"
#include "miscemu.h"
Index: include/module.h
===================================================================
RCS file: /var/cvs/wine/include/module.h,v
retrieving revision 1.107
diff -u -r1.107 module.h
--- include/module.h 3 Jun 2004 00:25:08 -0000 1.107
+++ include/module.h 24 Aug 2004 12:33:14 -0000
@@ -27,7 +27,7 @@
#include <winreg.h>
#include <wine/windef16.h>
#include <wine/winbase16.h>
-#include <winternl.h>
+#include <ddk/ntddk.h>
#include <pshpack1.h>
Index: include/thread.h
===================================================================
RCS file: /var/cvs/wine/include/thread.h,v
retrieving revision 1.96
diff -u -r1.96 thread.h
--- include/thread.h 10 May 2004 19:58:48 -0000 1.96
+++ include/thread.h 24 Aug 2004 12:32:07 -0000
@@ -26,7 +26,7 @@
#include <winbase.h>
#include <winreg.h>
#define WINE_NO_TEB
-#include <winternl.h>
+#include <ddk/ntddk.h>
#include <wine/windef16.h>
struct _SECURITY_ATTRIBUTES;
Index: include/windef.h
===================================================================
RCS file: /var/cvs/wine/include/windef.h,v
retrieving revision 1.92
diff -u -r1.92 windef.h
--- include/windef.h 16 Aug 2004 20:07:06 -0000 1.92
+++ include/windef.h 24 Aug 2004 21:12:29 -0000
@@ -178,6 +178,7 @@
typedef unsigned long DWORD, *PDWORD, *LPDWORD;
typedef unsigned long ULONG, *PULONG;
typedef float FLOAT, *PFLOAT;
+typedef char *PSZ;
/* Macros to map Winelib names to the correct implementation name */
/* Note that Winelib is purely Win32. */
Index: include/winternl.h
===================================================================
RCS file: /var/cvs/wine/include/winternl.h,v
retrieving revision 1.89
diff -u -r1.89 winternl.h
--- include/winternl.h 23 Aug 2004 18:52:54 -0000 1.89
+++ include/winternl.h 24 Aug 2004 12:47:43 -0000
@@ -32,178 +32,77 @@
* Fundamental types and data structures
*/
-typedef LONG NTSTATUS;
+#ifndef WINTERNL_TYPES
+#define WINTERNL_TYPES
-typedef CONST char *PCSZ;
+typedef LONG NTSTATUS;
+typedef const char *PCSZ;
-typedef short CSHORT;
-typedef CSHORT *PCSHORT;
-
-typedef struct _STRING {
- USHORT Length;
- USHORT MaximumLength;
- PCHAR Buffer;
+typedef struct _STRING
+{
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
} STRING, *PSTRING;
-
-typedef STRING ANSI_STRING;
-typedef PSTRING PANSI_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; /* bytes */
- USHORT MaximumLength; /* bytes */
- PWSTR Buffer;
+typedef STRING ANSI_STRING, *PANSI_STRING;
+typedef STRING *PCANSI_STRING;
+typedef STRING OEM_STRING, *POEM_STRING;
+
+typedef struct _UNICODE_STRING
+{
+ USHORT Length; /* bytes */
+ USHORT MaximumLength; /* bytes */
+ PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
+typedef const UNICODE_STRING *PCUNICODE_STRING;
-typedef const UNICODE_STRING *PCUNICODE_STRING;
-
-typedef struct _CLIENT_ID
-{
- HANDLE UniqueProcess;
- HANDLE UniqueThread;
-} CLIENT_ID, *PCLIENT_ID;
-
-typedef struct _CURDIR
-{
- UNICODE_STRING DosPath;
- PVOID Handle;
-} CURDIR, *PCURDIR;
-
-typedef struct RTL_DRIVE_LETTER_CURDIR
-{
- USHORT Flags;
- USHORT Length;
- ULONG TimeStamp;
- UNICODE_STRING DosPath;
-} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
-
-typedef struct tagRTL_BITMAP {
- ULONG SizeOfBitMap; /* Number of bits in the bitmap */
- PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
-} RTL_BITMAP, *PRTL_BITMAP;
-
-typedef const RTL_BITMAP *PCRTL_BITMAP;
-
-typedef struct tagRTL_BITMAP_RUN {
- ULONG StartingIndex; /* Bit position at which run starts */
- ULONG NumberOfBits; /* Size of the run in bits */
-} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
-
-typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
-
-typedef struct _RTL_USER_PROCESS_PARAMETERS
-{
- ULONG AllocationSize;
- ULONG Size;
- ULONG Flags;
- ULONG DebugFlags;
- HANDLE hConsole;
- ULONG ProcessGroup;
- HANDLE hStdInput;
- HANDLE hStdOutput;
- HANDLE hStdError;
- CURDIR CurrentDirectory;
- UNICODE_STRING DllPath;
- UNICODE_STRING ImagePathName;
- UNICODE_STRING CommandLine;
- PWSTR Environment;
- ULONG dwX;
- ULONG dwY;
- ULONG dwXSize;
- ULONG dwYSize;
- ULONG dwXCountChars;
- ULONG dwYCountChars;
- ULONG dwFillAttribute;
- ULONG dwFlags;
- ULONG wShowWindow;
- UNICODE_STRING WindowTitle;
- UNICODE_STRING Desktop;
- UNICODE_STRING ShellInfo;
- UNICODE_STRING RuntimeInfo;
- RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
-} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+#endif
-/* value for Flags field (FIXME: not the correct name) */
-#define PROCESS_PARAMS_FLAG_NORMALIZED 1
+typedef const STRING *PCOEM_STRING;
-typedef struct _PEB_LDR_DATA
-{
- ULONG Length;
- BOOLEAN Initialized;
- PVOID SsHandle;
- LIST_ENTRY InLoadOrderModuleList;
- LIST_ENTRY InMemoryOrderModuleList;
- LIST_ENTRY InInitializationOrderModuleList;
-} PEB_LDR_DATA, *PPEB_LDR_DATA;
/***********************************************************************
* PEB data structure
*/
+
+#ifndef __WINESRC__
+/* Yes, this type is incompatible with the one defined in ddk/ntddk.h! */
typedef struct _PEB
{
- BYTE Reserved1[2]; /* 00 */
- BYTE BeingDebugged; /* 02 */
- BYTE Reserved2[5]; /* 03 */
- HMODULE ImageBaseAddress; /* 08 */
- PPEB_LDR_DATA LdrData; /* 0c */
- RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10 */
- PVOID __pad_14; /* 14 */
- HANDLE ProcessHeap; /* 18 */
- BYTE __pad_1c[36]; /* 1c */
- PRTL_BITMAP TlsBitmap; /* 40 */
- ULONG TlsBitmapBits[2]; /* 44 */
- BYTE __pad_4c[24]; /* 4c */
- ULONG NumberOfProcessors; /* 64 */
- BYTE __pad_68[128]; /* 68 */
- PVOID Reserved3[59]; /* e8 */
- ULONG SessionId; /* 1d4 */
+ BYTE Reserved1[2];
+ BYTE BeingDebugged;
+ BYTE Reserved2[229];
+ PVOID Reserved3[59];
+ ULONG SessionId;
} PEB, *PPEB;
+#endif
/***********************************************************************
* TEB data structure
*/
-#if defined(_NTSYSTEM_) || defined(_KERNEL32_) /* hack, should go away */
-# define WINE_NO_TEB
-#endif
-
-#ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */
-# ifndef WINE_TEB_DEFINED
-# define WINE_TEB_DEFINED
+#if !defined(__WINESRC__) && !defined(WINE_NO_TEB)
+/* Yes, this type is incompatible with the one defined in ddk/ntddk.h! */
typedef struct _TEB
{
- NT_TIB Tib; /* 000 */
- PVOID EnvironmentPointer; /* 01c */
- CLIENT_ID ClientId; /* 020 */
- PVOID ActiveRpcHandle; /* 028 */
- PVOID ThreadLocalStoragePointer; /* 02c */
- PPEB Peb; /* 030 */
- ULONG LastErrorValue; /* 034 */
- BYTE __pad038[140]; /* 038 */
- ULONG CurrentLocale; /* 0c4 */
- BYTE __pad0c8[1752]; /* 0c8 */
- PVOID Reserved2[278]; /* 7a0 */
- UNICODE_STRING StaticUnicodeString; /* bf8 used by advapi32 */
- WCHAR StaticUnicodeBuffer[261]; /* c00 used by advapi32 */
- PVOID DeallocationStack; /* e0c */
- PVOID TlsSlots[64]; /* e10 */
- LIST_ENTRY TlsLinks; /* f10 */
- PVOID Reserved4[26]; /* f18 */
- PVOID ReservedForOle; /* f80 Windows 2000 only */
- PVOID Reserved5[4]; /* f84 */
- PVOID TlsExpansionSlots; /* f94 */
+ BYTE Reserved1[1952];
+ PVOID Reserved2[412];
+ PVOID TlsSlots[64];
+ BYTE Reserved3[8];
+ PVOID Reserved4[26];
+ PVOID ReservedForOle;
+ PVOID Reserved5[4];
+ PVOID TlsExpansionSlots;
} TEB, *PTEB;
-# endif /* WINE_TEB_DEFINED */
-#endif /* WINE_NO_TEB */
+#endif
+
/***********************************************************************
* Enums
*/
+#ifndef FILE_INFORMATION_CLASS_DEFINED
+#define FILE_INFORMATION_CLASS_DEFINED
typedef enum _FILE_INFORMATION_CLASS {
FileDirectoryInformation = 1,
FileFullDirectoryInformation,
@@ -243,206 +142,10 @@
FileTrackingInformation,
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+#endif
-typedef struct _FILE_DIRECTORY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- WCHAR FileName[ANYSIZE_ARRAY];
-} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
-
-typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- WCHAR FileName[ANYSIZE_ARRAY];
-} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
- FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
-
-typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- CHAR ShortNameLength;
- WCHAR ShortName[12];
- WCHAR FileName[ANYSIZE_ARRAY];
-} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
- FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
-
-typedef struct _FILE_BASIC_INFORMATION {
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- ULONG FileAttributes;
-} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
-
-typedef struct _FILE_STANDARD_INFORMATION {
- LARGE_INTEGER AllocationSize;
- LARGE_INTEGER EndOfFile;
- ULONG NumberOfLinks;
- BOOLEAN DeletePending;
- BOOLEAN Directory;
-} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
-
-typedef struct _FILE_INTERNAL_INFORMATION {
- LARGE_INTEGER IndexNumber;
-} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
-
-typedef struct _FILE_EA_INFORMATION {
- ULONG EaSize;
-} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
-
-typedef struct _FILE_ACCESS_INFORMATION {
- ACCESS_MASK AccessFlags;
-} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
-
-typedef struct _FILE_NAME_INFORMATION {
- ULONG FileNameLength;
- WCHAR FileName[1];
-} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
-
-typedef struct _FILE_RENAME_INFORMATION {
- BOOLEAN Replace;
- HANDLE RootDir;
- ULONG FileNameLength;
- WCHAR FileName[1];
-} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
-
-typedef struct _FILE_NAMES_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- ULONG FileNameLength;
- WCHAR FileName[1];
-} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
-
-typedef struct _FILE_DISPOSITION_INFORMATION {
- BOOLEAN DoDeleteFile;
-} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
-
-typedef struct _FILE_POSITION_INFORMATION {
- LARGE_INTEGER CurrentByteOffset;
-} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
-
-typedef struct _FILE_ALIGNMENT_INFORMATION {
- ULONG AlignmentRequirement;
-} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
-
-typedef struct _FILE_ALLOCATION_INFORMATION {
- LARGE_INTEGER AllocationSize;
-} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
-
-typedef struct _FILE_END_OF_FILE_INFORMATION {
- LARGE_INTEGER EndOfFile;
-} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
-
-typedef struct _FILE_NETWORK_OPEN_INFORMATION {
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER AllocationSize;
- LARGE_INTEGER EndOfFile;
- ULONG FileAttributes;
-} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
-
-typedef struct _FILE_FULL_EA_INFORMATION {
- ULONG NextEntryOffset;
- UCHAR Flags;
- UCHAR EaNameLength;
- USHORT EaValueLength;
- CHAR EaName[1];
-} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
-
-typedef struct _FILE_MODE_INFORMATION {
- ULONG Mode;
-} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
-
-typedef struct _FILE_STREAM_INFORMATION
-{
- ULONG NextEntryOffset;
- ULONG StreamNameLength;
- LARGE_INTEGER StreamSize;
- LARGE_INTEGER StreamAllocationSize;
- WCHAR StreamName[1];
-} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
-
-typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
-{
- ULONG FileAttributes;
- ULONG ReparseTag;
-} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
-
-typedef struct _FILE_ALL_INFORMATION
-{
- FILE_BASIC_INFORMATION BasicInformation;
- FILE_STANDARD_INFORMATION StandardInformation;
- FILE_INTERNAL_INFORMATION InternalInformation;
- FILE_EA_INFORMATION EaInformation;
- FILE_ACCESS_INFORMATION AccessInformation;
- FILE_POSITION_INFORMATION PositionInformation;
- FILE_MODE_INFORMATION ModeInformation;
- FILE_ALIGNMENT_INFORMATION AlignmentInformation;
- FILE_NAME_INFORMATION NameInformation;
-} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
-
-typedef enum _FSINFOCLASS {
- FileFsVolumeInformation = 1,
- FileFsLabelInformation,
- FileFsSizeInformation,
- FileFsDeviceInformation,
- FileFsAttributeInformation,
- FileFsControlInformation,
- FileFsFullSizeInformation,
- FileFsObjectIdInformation,
- FileFsMaximumInformation
-} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
-
-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 {
- ObjectBasicInformation,
- ObjectNameInformation,
- ObjectTypeInformation,
- ObjectAllInformation,
- ObjectDataInformation
-} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
-
+#ifndef PROCESSINFOCLASS_DEFINED
+#define PROCESSINFOCLASS_DEFINED
typedef enum _PROCESSINFOCLASS {
ProcessBasicInformation = 0,
ProcessQuotaLimits = 1,
@@ -473,13 +176,9 @@
ProcessWow64Information = 26,
MaxProcessInfoClass
} PROCESSINFOCLASS;
+#endif
-typedef enum _SECTION_INHERIT {
- ViewShare = 1,
- ViewUnmap = 2
-} SECTION_INHERIT;
-
-typedef enum SYSTEM_INFORMATION_CLASS {
+typedef enum _SYSTEM_INFORMATION_CLASS {
SystemBasicInformation = 0,
Unknown1,
SystemPerformanceInformation = 2,
@@ -536,11 +235,8 @@
SystemInformationClassMax
} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
-typedef enum _TIMER_TYPE {
- NotificationTimer,
- SynchronizationTimer
-} TIMER_TYPE;
-
+#ifndef THREADINFOCLASS_DEFINED
+#define THREADINFOCLASS_DEFINED
typedef enum _THREADINFOCLASS {
ThreadBasicInformation,
ThreadTimes,
@@ -561,17 +257,7 @@
ThreadIsIoPending,
MaxThreadInfoClass
} THREADINFOCLASS;
-
-typedef struct _THREAD_BASIC_INFORMATION
-{
- NTSTATUS ExitStatus;
- PVOID TebBaseAddress;
- CLIENT_ID ClientId;
- ULONG AffinityMask;
- LONG Priority;
- LONG BasePriority;
-} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
-
+#endif
typedef enum _WINSTATIONINFOCLASS {
WinStationInformation = 8
@@ -665,6 +351,8 @@
* Types and data structures
*/
+#ifndef IO_STATUS_BLOCK_DEFINED
+#define IO_STATUS_BLOCK_DEFINED
typedef struct _IO_STATUS_BLOCK {
union {
NTSTATUS Status;
@@ -673,73 +361,12 @@
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+#endif
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;
-
+#ifndef OBJECT_ATTRIBUTES_DEFINED
+#define OBJECT_ATTRIBUTES_DEFINED
typedef struct _OBJECT_ATTRIBUTES {
ULONG Length;
HANDLE RootDirectory;
@@ -748,28 +375,23 @@
PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
typedef struct _OBJECT_DATA_INFORMATION {
BOOLEAN InheritHandle;
BOOLEAN ProtectFromClose;
} OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
+#ifndef __WINESRC__
+/* Yes, this type is incompatible with the one defined in ddk/ntddk.h! */
typedef struct _PROCESS_BASIC_INFORMATION {
-#ifdef __WINESRC__
- 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;
+#endif
typedef struct _PROCESS_INFO {
DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/
@@ -996,37 +618,12 @@
#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;
-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);
typedef struct _LDR_RESOURCE_INFO
@@ -1104,89 +701,19 @@
ULONG NumberOfExclusiveWaiters;
} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
-typedef struct _PORT_MESSAGE_HEADER {
- USHORT DataSize;
- USHORT MessageSize;
- USHORT MessageType;
- USHORT VirtualRangesOffset;
- CLIENT_ID ClientId;
- ULONG MessageId;
- ULONG SectionSize;
-} PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
-
/***********************************************************************
* Defines
*/
-/* flags for NtCreateFile and NtOpenFile */
-#define FILE_DIRECTORY_FILE 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
-#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
-#define FILE_NO_EA_KNOWLEDGE 0x00000200
-#define FILE_OPEN_FOR_RECOVERY 0x00000400
-#define FILE_RANDOM_ACCESS 0x00000800
-#define FILE_DELETE_ON_CLOSE 0x00001000
-#define FILE_OPEN_BY_FILE_ID 0x00002000
-#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
-#define FILE_NO_COMPRESSION 0x00008000
-#define FILE_RESERVE_OPFILTER 0x00100000
-#define FILE_TRANSACTED_MODE 0x00200000
-#define FILE_OPEN_OFFLINE_FILE 0x00400000
-
-#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
-#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
-
-/* status for NtCreateFile or NtOpenFile */
-#define FILE_SUPERSEDED 0
-#define FILE_OPENED 1
-#define FILE_CREATED 2
-#define FILE_OVERWRITTEN 3
-#define FILE_EXISTS 4
-#define FILE_DOES_NOT_EXIST 5
-
-/* disposition for NtCreateFile */
-#define FILE_SUPERSEDE 0
-#define FILE_OPEN 1
-#define FILE_CREATE 2
-#define FILE_OPEN_IF 3
-#define FILE_OVERWRITE 4
-#define FILE_OVERWRITE_IF 5
-#define FILE_MAXIMUM_DISPOSITION 5
-
-/* Characteristics of a File System */
-#define FILE_REMOVABLE_MEDIA 0x00000001
-#define FILE_READ_ONLY_DEVICE 0x00000002
-#define FILE_FLOPPY_DISKETTE 0x00000004
-#define FILE_WRITE_ONE_MEDIA 0x00000008
-#define FILE_REMOTE_DEVICE 0x00000010
-#define FILE_DEVICE_IS_MOUNTED 0x00000020
-#define FILE_VIRTUAL_VOLUME 0x00000040
-
#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)
typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
-typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
/* DbgPrintEx default levels */
@@ -1235,14 +762,11 @@
NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG);
-NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
NTSTATUS WINAPI NtDeleteKey(HKEY);
NTSTATUS WINAPI NtDeleteValueKey(HKEY,const UNICODE_STRING *);
NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
-NTSTATUS WINAPI NtEnumerateKey(HKEY,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
-NTSTATUS WINAPI NtEnumerateValueKey(HKEY,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,ULONG);
NTSTATUS WINAPI NtFlushKey(HKEY);
@@ -1250,12 +774,10 @@
NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
-NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,const OBJECT_ATTRIBUTES *);
NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
-NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,ULONG,const LARGE_INTEGER*,ULONG*,SECTION_INHERIT,ULONG,ULONG);
NTSTATUS WINAPI NtNotifyChangeKey(HKEY,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);
@@ -1263,32 +785,25 @@
NTSTATUS WINAPI NtOpenKey(PHKEY,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
-NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG,ULONG*);
NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
-NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
-NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
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 NtQueryInstallUILanguage(LANGID*);
-NTSTATUS WINAPI NtQueryKey(HKEY,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSTATUS WINAPI NtQueryMultipleValueKey(HKEY,PVALENTW,ULONG,PVOID,ULONG,PULONG);
-NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, 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(HKEY,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
-NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
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 NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
@@ -1306,7 +821,6 @@
NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
NTSTATUS WINAPI NtSetInformationKey(HKEY,const int,PVOID,ULONG);
-NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
@@ -1342,61 +856,37 @@
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 RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
-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);
DWORD WINAPI RtlComputeCrc32(DWORD,PBYTE,INT);
NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
-LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
-ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
void WINAPI RtlCopyLuid(PLUID,const LUID*);
void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
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);
NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
-NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
- const UNICODE_STRING*,const UNICODE_STRING*,
- const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
- const UNICODE_STRING*,const UNICODE_STRING*,
- const UNICODE_STRING*);
-NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
-NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
DWORD WINAPI RtlDeleteSecurityObject(DWORD);
-PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
HANDLE WINAPI RtlDestroyHeap(HANDLE);
-void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
-BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
void WINAPI RtlDumpResource(LPRTL_RWLOCK);
NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
-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*);
NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
@@ -1404,33 +894,13 @@
BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
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);
NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
-LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
-LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
-LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
-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);
NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
-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);
NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
-void WINAPI RtlFreeAnsiString(PANSI_STRING);
BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
void WINAPI RtlFreeOemString(POEM_STRING);
DWORD WINAPI RtlFreeSid(PSID);
@@ -1448,7 +918,6 @@
NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
-NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
@@ -1456,49 +925,33 @@
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 RtlInitString(PSTRING,PCSZ);
void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
-void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
-
-NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
-NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_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 RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
DWORD WINAPI RtlLengthRequiredSid(DWORD);
-ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
DWORD WINAPI RtlLengthSid(PSID);
NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
BOOLEAN WINAPI RtlLockHeap(HANDLE);
NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
-void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
-PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
-ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
-ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
@@ -1506,7 +959,6 @@
DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHKEY);
BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
-BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
@@ -1525,12 +977,9 @@
void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,
PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
-void WINAPI RtlSetAllBits(PRTL_BITMAP);
-void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
-NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
@@ -1542,17 +991,12 @@
LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
-void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
-BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
-void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
-ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
-NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
@@ -1565,21 +1009,15 @@
void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
#endif
-WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
-NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(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);
-CHAR WINAPI RtlUpperChar(CHAR);
-void WINAPI RtlUpperString(STRING *,const STRING *);
-NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
BOOLEAN WINAPI RtlValidAcl(PACL);
BOOLEAN WINAPI RtlValidSid(PSID);
BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
-NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
@@ -1595,49 +1033,6 @@
* 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->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
- return TRUE;
- return FALSE;
-}
-
-/* These are implemented as __fastcall, so we can't let Winelib apps link with them */
-inline static USHORT RtlUshortByteSwap(USHORT s)
-{
- return (s >> 8) | (s << 8);
-}
-inline static ULONG RtlUlongByteSwap(ULONG i)
-{
-#if defined(__i386__) && defined(__GNUC__)
- ULONG ret;
- __asm__("bswap %0" : "=r" (ret) : "0" (i) );
- return ret;
-#else
- return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
-#endif
-}
/*************************************************************************
* Loader functions and structures.
Index: misc/registry.c
===================================================================
RCS file: /var/cvs/wine/misc/registry.c,v
retrieving revision 1.148
diff -u -r1.148 registry.c
--- misc/registry.c 18 Aug 2004 00:04:58 -0000 1.148
+++ misc/registry.c 24 Aug 2004 12:40:08 -0000
@@ -64,6 +64,7 @@
#include "winbase.h"
#include "winerror.h"
#include "winioctl.h"
+#include "ddk/ntddk.h"
#include "ntddscsi.h"
#include "wine/winbase16.h"
Index: server/fd.c
===================================================================
RCS file: /var/cvs/wine/server/fd.c,v
retrieving revision 1.22
diff -u -r1.22 fd.c
--- server/fd.c 18 Aug 2004 00:04:58 -0000 1.22
+++ server/fd.c 24 Aug 2004 13:28:29 -0000
@@ -46,7 +46,7 @@
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
/* Because of the stupid Posix locking semantics, we need to keep
* track of all file descriptors referencing a given file, and not
Index: server/file.c
===================================================================
RCS file: /var/cvs/wine/server/file.c,v
retrieving revision 1.88
diff -u -r1.88 file.c
--- server/file.c 18 Aug 2004 00:04:58 -0000 1.88
+++ server/file.c 24 Aug 2004 13:28:49 -0000
@@ -44,7 +44,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "file.h"
#include "handle.h"
Index: server/registry.c
===================================================================
RCS file: /var/cvs/wine/server/registry.c,v
retrieving revision 1.59
diff -u -r1.59 registry.c
--- server/registry.c 14 May 2004 00:45:11 -0000 1.59
+++ server/registry.c 24 Aug 2004 13:33:08 -0000
@@ -47,7 +47,7 @@
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "wine/library.h"
struct notify
Index: server/serial.c
===================================================================
RCS file: /var/cvs/wine/server/serial.c,v
retrieving revision 1.35
diff -u -r1.35 serial.c
--- server/serial.c 18 Aug 2004 00:04:58 -0000 1.35
+++ server/serial.c 24 Aug 2004 13:34:51 -0000
@@ -47,7 +47,7 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "file.h"
#include "handle.h"
Index: server/trace.c
===================================================================
RCS file: /var/cvs/wine/server/trace.c,v
retrieving revision 1.212
diff -u -r1.212 trace.c
--- server/trace.c 18 Aug 2004 00:04:58 -0000 1.212
+++ server/trace.c 24 Aug 2004 13:36:12 -0000
@@ -34,7 +34,7 @@
#include "winbase.h"
#include "wincon.h"
#include "winreg.h"
-#include "winternl.h"
+#include "ddk/ntddk.h"
#include "request.h"
#include "unicode.h"
--- /dev/null 2004-08-10 11:44:31.000000000 +0200
+++ include/ddk/ntddk.h 2004-08-24 19:13:16.000000000 +0200
@@ -0,0 +1,841 @@
+/*
+ * Device driver APIs and data structures
+ *
+ * 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 _NTDDK_
+#define _NTDDK_
+
+#include <excpt.h>
+#include <ddk/ntdef.h>
+#include <ntstatus.h>
+/* #include <bugcodes.h> */
+/* #include <ntiologc.h> */
+
+
+/***********************************************************************
+ * Defines
+ */
+
+/* flags for NtCreateFile and NtOpenFile */
+#define FILE_DIRECTORY_FILE 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
+#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
+#define FILE_NO_EA_KNOWLEDGE 0x00000200
+#define FILE_OPEN_FOR_RECOVERY 0x00000400
+#define FILE_RANDOM_ACCESS 0x00000800
+#define FILE_DELETE_ON_CLOSE 0x00001000
+#define FILE_OPEN_BY_FILE_ID 0x00002000
+#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
+#define FILE_NO_COMPRESSION 0x00008000
+#define FILE_RESERVE_OPFILTER 0x00100000
+#define FILE_OPEN_REPARSE_POINT 0x00200000
+#define FILE_OPEN_NO_RECALL 0x00400000
+#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
+
+#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
+
+/* status for NtCreateFile or NtOpenFile */
+#define FILE_SUPERSEDED 0
+#define FILE_OPENED 1
+#define FILE_CREATED 2
+#define FILE_OVERWRITTEN 3
+#define FILE_EXISTS 4
+#define FILE_DOES_NOT_EXIST 5
+
+/* disposition for NtCreateFile */
+#define FILE_SUPERSEDE 0
+#define FILE_OPEN 1
+#define FILE_CREATE 2
+#define FILE_OPEN_IF 3
+#define FILE_OVERWRITE 4
+#define FILE_OVERWRITE_IF 5
+#define FILE_MAXIMUM_DISPOSITION 5
+
+/* Characteristics of a File System */
+#define FILE_REMOVABLE_MEDIA 0x00000001
+#define FILE_READ_ONLY_DEVICE 0x00000002
+#define FILE_FLOPPY_DISKETTE 0x00000004
+#define FILE_WRITE_ONCE_MEDIA 0x00000008
+#define FILE_REMOTE_DEVICE 0x00000010
+#define FILE_DEVICE_IS_MOUNTED 0x00000020
+#define FILE_VIRTUAL_VOLUME 0x00000040
+#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
+#define FILE_DEVICE_SECURE_OPEN 0x00000100
+
+
+/***********************************************************************
+ * Enums
+ */
+
+#ifndef FILE_INFORMATION_CLASS_DEFINED
+#define FILE_INFORMATION_CLASS_DEFINED
+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;
+#endif
+
+typedef struct _FILE_DIRECTORY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ WCHAR FileName[ANYSIZE_ARRAY];
+} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ WCHAR FileName[ANYSIZE_ARRAY];
+} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
+ FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
+
+typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ CHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[ANYSIZE_ARRAY];
+} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
+ FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+typedef struct _FILE_BASIC_INFORMATION {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ ULONG FileAttributes;
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
+
+typedef struct _FILE_STANDARD_INFORMATION {
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG NumberOfLinks;
+ BOOLEAN DeletePending;
+ BOOLEAN Directory;
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
+
+typedef struct _FILE_INTERNAL_INFORMATION {
+ LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+typedef struct _FILE_EA_INFORMATION {
+ ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+typedef struct _FILE_ACCESS_INFORMATION {
+ ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
+
+typedef struct _FILE_NAME_INFORMATION {
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+typedef struct _FILE_RENAME_INFORMATION {
+ BOOLEAN Replace;
+ HANDLE RootDir;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+typedef struct _FILE_NAMES_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
+
+typedef struct _FILE_DISPOSITION_INFORMATION {
+ BOOLEAN DoDeleteFile;
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
+
+typedef struct _FILE_POSITION_INFORMATION {
+ LARGE_INTEGER CurrentByteOffset;
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
+
+typedef struct _FILE_ALIGNMENT_INFORMATION {
+ ULONG AlignmentRequirement;
+} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
+
+typedef struct _FILE_ALLOCATION_INFORMATION {
+ LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+typedef struct _FILE_END_OF_FILE_INFORMATION {
+ LARGE_INTEGER EndOfFile;
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
+
+typedef struct _FILE_NETWORK_OPEN_INFORMATION {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
+
+typedef struct _FILE_FULL_EA_INFORMATION {
+ ULONG NextEntryOffset;
+ UCHAR Flags;
+ UCHAR EaNameLength;
+ USHORT EaValueLength;
+ CHAR EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+typedef struct _FILE_MODE_INFORMATION {
+ ULONG Mode;
+} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
+
+typedef struct _FILE_STREAM_INFORMATION
+{
+ ULONG NextEntryOffset;
+ ULONG StreamNameLength;
+ LARGE_INTEGER StreamSize;
+ LARGE_INTEGER StreamAllocationSize;
+ WCHAR StreamName[1];
+} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
+
+typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
+{
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
+
+typedef struct _FILE_ALL_INFORMATION
+{
+ FILE_BASIC_INFORMATION BasicInformation;
+ FILE_STANDARD_INFORMATION StandardInformation;
+ FILE_INTERNAL_INFORMATION InternalInformation;
+ FILE_EA_INFORMATION EaInformation;
+ FILE_ACCESS_INFORMATION AccessInformation;
+ FILE_POSITION_INFORMATION PositionInformation;
+ FILE_MODE_INFORMATION ModeInformation;
+ FILE_ALIGNMENT_INFORMATION AlignmentInformation;
+ FILE_NAME_INFORMATION NameInformation;
+} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
+
+typedef enum _FSINFOCLASS {
+ FileFsVolumeInformation = 1,
+ FileFsLabelInformation,
+ FileFsSizeInformation,
+ FileFsDeviceInformation,
+ FileFsAttributeInformation,
+ FileFsControlInformation,
+ FileFsFullSizeInformation,
+ FileFsObjectIdInformation,
+ FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+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 {
+ ObjectBasicInformation,
+ ObjectNameInformation,
+ ObjectTypeInformation,
+ ObjectAllInformation,
+ ObjectDataInformation
+} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
+
+#ifndef PROCESSINFOCLASS_DEFINED
+#define PROCESSINFOCLASS_DEFINED
+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;
+#endif
+
+typedef enum _SECTION_INHERIT {
+ ViewShare = 1,
+ ViewUnmap = 2
+} SECTION_INHERIT;
+
+typedef enum _TIMER_TYPE {
+ NotificationTimer,
+ SynchronizationTimer
+} TIMER_TYPE;
+
+#ifndef THREADINFOCLASS_DEFINED
+#define THREADINFOCLASS_DEFINED
+typedef enum _THREADINFOCLASS {
+ ThreadBasicInformation,
+ ThreadTimes,
+ ThreadPriority,
+ ThreadBasePriority,
+ ThreadAffinityMask,
+ ThreadImpersonationToken,
+ ThreadDescriptorTableEntry,
+ ThreadEnableAlignmentFaultFixup,
+ ThreadEventPair_Reusable,
+ ThreadQuerySetWin32StartAddress,
+ ThreadZeroTlsCell,
+ ThreadPerformanceCount,
+ ThreadAmILastThread,
+ ThreadIdealProcessor,
+ ThreadPriorityBoost,
+ ThreadSetTlsArrayAddress,
+ ThreadIsIoPending,
+ MaxThreadInfoClass
+} THREADINFOCLASS;
+#endif
+
+
+/***********************************************************************
+ * Types and data structures
+ */
+
+typedef struct _CLIENT_ID
+{
+ HANDLE UniqueProcess;
+ HANDLE UniqueThread;
+} CLIENT_ID, *PCLIENT_ID;
+
+typedef struct tagRTL_BITMAP {
+ ULONG SizeOfBitMap; /* Number of bits in the bitmap */
+ PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
+} RTL_BITMAP, *PRTL_BITMAP;
+
+typedef const RTL_BITMAP *PCRTL_BITMAP;
+
+typedef struct tagRTL_BITMAP_RUN {
+ ULONG StartingIndex; /* Bit position at which run starts */
+ ULONG NumberOfBits; /* Size of the run in bits */
+} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
+
+typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
+
+typedef struct _TIME_FIELDS
+{ CSHORT Year;
+ CSHORT Month;
+ CSHORT Day;
+ CSHORT Hour;
+ CSHORT Minute;
+ CSHORT Second;
+ CSHORT Milliseconds;
+ CSHORT Weekday;
+} TIME_FIELDS, *PTIME_FIELDS;
+
+#ifndef IO_STATUS_BLOCK_DEFINED
+#define IO_STATUS_BLOCK_DEFINED
+typedef struct _IO_STATUS_BLOCK {
+ union {
+ NTSTATUS Status;
+ PVOID Pointer;
+ } DUMMYUNIONNAME;
+
+ ULONG_PTR Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+#endif
+
+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 _PORT_MESSAGE_HEADER {
+ USHORT DataSize;
+ USHORT MessageSize;
+ USHORT MessageType;
+ USHORT VirtualRangesOffset;
+ CLIENT_ID ClientId;
+ ULONG MessageId;
+ ULONG SectionSize;
+} PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
+
+/* Yes, this type is incompatible with the one defined in winternl.h! */
+typedef struct _PROCESS_BASIC_INFORMATION {
+ DWORD ExitStatus;
+ DWORD PebBaseAddress;
+ DWORD AffinityMask;
+ DWORD BasePriority;
+ ULONG UniqueProcessId;
+ ULONG InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
+
+typedef void (__stdcall *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
+
+typedef struct _THREAD_BASIC_INFORMATION
+{
+ NTSTATUS ExitStatus;
+ PVOID TebBaseAddress;
+ CLIENT_ID ClientId;
+ ULONG AffinityMask;
+ LONG Priority;
+ LONG BasePriority;
+} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
+
+typedef struct _VM_COUNTERS {
+ SIZE_T PeakVirtualSize;
+ SIZE_T VirtualSize;
+ ULONG PageFaultCount;
+ SIZE_T PeakWorkingSetSize;
+ SIZE_T WorkingSetSize;
+ SIZE_T QuotaPeakPagedPoolUsage;
+ SIZE_T QuotaPagedPoolUsage;
+ SIZE_T QuotaPeakNonPagedPoolUsage;
+ SIZE_T QuotaNonPagedPoolUsage;
+ SIZE_T PagefileUsage;
+ SIZE_T PeakPagefileUsage;
+} VM_COUNTERS, *PVM_COUNTERS;
+
+
+/***********************************************************************
+ * PEB data structure
+ */
+
+typedef struct _PEB_LDR_DATA
+{
+ ULONG Length;
+ BOOLEAN Initialized;
+ PVOID SsHandle;
+ LIST_ENTRY InLoadOrderModuleList;
+ LIST_ENTRY InMemoryOrderModuleList;
+ LIST_ENTRY InInitializationOrderModuleList;
+} PEB_LDR_DATA, *PPEB_LDR_DATA;
+
+typedef struct _CURDIR
+{
+ UNICODE_STRING DosPath;
+ PVOID Handle;
+} CURDIR, *PCURDIR;
+
+typedef struct RTL_DRIVE_LETTER_CURDIR
+{
+ USHORT Flags;
+ USHORT Length;
+ ULONG TimeStamp;
+ UNICODE_STRING DosPath;
+} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS
+{
+ ULONG AllocationSize;
+ ULONG Size;
+ ULONG Flags;
+ ULONG DebugFlags;
+ HANDLE hConsole;
+ ULONG ProcessGroup;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+ CURDIR CurrentDirectory;
+ UNICODE_STRING DllPath;
+ UNICODE_STRING ImagePathName;
+ UNICODE_STRING CommandLine;
+ PWSTR Environment;
+ ULONG dwX;
+ ULONG dwY;
+ ULONG dwXSize;
+ ULONG dwYSize;
+ ULONG dwXCountChars;
+ ULONG dwYCountChars;
+ ULONG dwFillAttribute;
+ ULONG dwFlags;
+ ULONG wShowWindow;
+ UNICODE_STRING WindowTitle;
+ UNICODE_STRING Desktop;
+ UNICODE_STRING ShellInfo;
+ UNICODE_STRING RuntimeInfo;
+ RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+
+/* value for Flags field (FIXME: not the correct name) */
+#define PROCESS_PARAMS_FLAG_NORMALIZED 1
+
+typedef struct _PEB
+{
+ UCHAR Reserved1[2]; /* 00 */
+ UCHAR BeingDebugged; /* 02 */
+ UCHAR Reserved2[5]; /* 03 */
+ HMODULE ImageBaseAddress; /* 08 */
+ PPEB_LDR_DATA LdrData; /* 0c */
+ RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10 */
+ PVOID __pad_14; /* 14 */
+ HANDLE ProcessHeap; /* 18 */
+ UCHAR __pad_1c[36]; /* 1c */
+ PRTL_BITMAP TlsBitmap; /* 40 */
+ ULONG TlsBitmapBits[2]; /* 44 */
+ UCHAR __pad_4c[24]; /* 4c */
+ ULONG NumberOfProcessors; /* 64 */
+ UCHAR __pad_68[128]; /* 68 */
+ PVOID Reserved3[59]; /* e8 */
+ ULONG SessionId; /* 1d4 */
+} PEB, *PPEB;
+
+
+/***********************************************************************
+ * TEB data structure
+ */
+#if defined(_NTSYSTEM_) || defined(_KERNEL32_) /* hack, should go away */
+# define WINE_NO_TEB
+#endif
+
+#ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */
+# ifndef WINE_TEB_DEFINED
+# define WINE_TEB_DEFINED
+typedef struct _TEB
+{
+ NT_TIB Tib; /* 000 */
+ PVOID EnvironmentPointer; /* 01c */
+ CLIENT_ID ClientId; /* 020 */
+ PVOID ActiveRpcHandle; /* 028 */
+ PVOID ThreadLocalStoragePointer; /* 02c */
+ PPEB Peb; /* 030 */
+ ULONG LastErrorValue; /* 034 */
+ UCHAR __pad038[140]; /* 038 */
+ ULONG CurrentLocale; /* 0c4 */
+ UCHAR __pad0c8[1752]; /* 0c8 */
+ PVOID Reserved2[278]; /* 7a0 */
+ UNICODE_STRING StaticUnicodeString; /* bf8 used by advapi32 */
+ WCHAR StaticUnicodeBuffer[261]; /* c00 used by advapi32 */
+ PVOID DeallocationStack; /* e0c */
+ PVOID TlsSlots[64]; /* e10 */
+ LIST_ENTRY TlsLinks; /* f10 */
+ PVOID Reserved4[26]; /* f18 */
+ PVOID ReservedForOle; /* f80 Windows 2000 only */
+ PVOID Reserved5[4]; /* f84 */
+ PVOID TlsExpansionSlots; /* f94 */
+} TEB, *PTEB;
+# endif /* WINE_TEB_DEFINED */
+#endif /* WINE_NO_TEB */
+
+
+/***********************************************************************
+ * Inline functions
+ */
+
+#define NtCurrentProcess() ((HANDLE)-1)
+#define NtCurrentProcess() ((HANDLE)-1)
+
+inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
+{
+ if (lpBits && ulBit < lpBits->SizeOfBitMap &&
+ lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
+ return TRUE;
+ return FALSE;
+}
+
+#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
+#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
+#define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
+#define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
+#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 RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
+
+
+/* These are implemented as __fastcall, so we can't let Winelib apps link with them */
+inline static USHORT RtlUshortByteSwap(USHORT s)
+{
+ return (s >> 8) | (s << 8);
+}
+
+inline static ULONG RtlUlongByteSwap(ULONG i)
+{
+#if defined(__i386__) && defined(__GNUC__)
+ ULONG ret;
+ __asm__("bswap %0" : "=r" (ret) : "0" (i) );
+ return ret;
+#else
+ return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
+#endif
+}
+
+
+/***********************************************************************
+ * Function declarations
+ */
+
+NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
+NTSTATUS WINAPI NtEnumerateKey(HKEY,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS WINAPI NtEnumerateValueKey(HKEY,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
+NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,ULONG,const LARGE_INTEGER*,ULONG*,SECTION_INHERIT,ULONG,ULONG);
+NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
+NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
+NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
+NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
+NTSTATUS WINAPI NtQueryKey(HKEY,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
+NTSTATUS WINAPI NtQueryValueKey(HKEY,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
+NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
+
+NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
+NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
+NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
+BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
+BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
+
+NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
+void WINAPI RtlClearAllBits(PRTL_BITMAP);
+void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
+LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
+LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
+ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
+void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
+NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
+ const UNICODE_STRING*,const UNICODE_STRING*,
+ const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
+ const UNICODE_STRING*,const UNICODE_STRING*,
+ const UNICODE_STRING*);
+NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
+
+PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
+void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
+BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
+
+LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
+ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
+UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
+BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
+BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
+LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
+LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,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 RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
+ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
+CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
+ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
+ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
+CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
+ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
+ULONG WINAPI RtlFindNextForwardRunSet(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);
+void WINAPI RtlFreeAnsiString(PANSI_STRING);
+void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
+
+NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
+
+void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
+void WINAPI RtlInitString(PSTRING,PCSZ);
+void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
+void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
+NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
+NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
+
+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);
+ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
+
+void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
+
+PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
+ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
+ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
+
+BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+
+void WINAPI RtlSetAllBits(PRTL_BITMAP);
+void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
+NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
+
+BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
+void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
+void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
+
+ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
+NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
+NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
+WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
+NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
+CHAR WINAPI RtlUpperChar(CHAR);
+void WINAPI RtlUpperString(STRING *,const STRING *);
+
+NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
+
+#endif
--- /dev/null 2004-08-10 11:44:31.000000000 +0200
+++ include/ddk/ntdef.h 2004-08-24 19:12:54.000000000 +0200
@@ -0,0 +1,111 @@
+/*
+ * Device driver APIs and data structures
+ *
+ * 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 _NTDEF_
+#define _NTDEF_
+
+#include <ctype.h>
+#include <basetsd.h>
+
+/* We should duplicate the definition of many types from windef.h and
+ * winnt.h. However that creates too many conflicts with the other headers.
+ */
+#include <windef.h>
+
+
+/***********************************************************************
+ * Types and data structures
+ */
+
+#ifndef WINTERNL_TYPES
+#define WINTERNL_TYPES
+
+typedef LONG NTSTATUS;
+typedef const char *PCSZ;
+
+typedef struct _STRING
+{
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+typedef STRING ANSI_STRING, *PANSI_STRING;
+typedef STRING *PCANSI_STRING;
+typedef STRING OEM_STRING, *POEM_STRING;
+
+typedef struct _UNICODE_STRING
+{
+ USHORT Length; /* bytes */
+ USHORT MaximumLength; /* bytes */
+ PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef const UNICODE_STRING *PCUNICODE_STRING;
+
+#endif
+
+typedef short CSHORT, *PCSHORT;
+typedef ULONG CLONG, *PCLONG;
+typedef NTSTATUS *PNTSTATUS;
+typedef STRING CANSI_STRING;
+
+#ifndef OBJECT_ATTRIBUTES_DEFINED
+#define OBJECT_ATTRIBUTES_DEFINED
+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;
+#endif
+
+
+/***********************************************************************
+ * Defines
+ */
+
+#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
+
+
+/***********************************************************************
+ * 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)
+
+
+#endif
More information about the wine-patches
mailing list