Implemented the RtlImage* functions, and use them to replace the
PE_HEADER macro.

diff --git a/misc/version.c b/misc/version.c
index a7c7656..0db7996 100644
--- a/misc/version.c
+++ b/misc/version.c
@@ -29,6 +29,7 @@
 #include "winreg.h"
 #include "wingdi.h"
 #include "winuser.h"
+#include "ntddk.h"
 #include "wine/winbase16.h"
 #include "module.h"
 #include "wine/debug.h"
@@ -352,11 +353,11 @@
  */
 static DWORD VERSION_GetSystemDLLVersion( HMODULE hmod )
 {
-    IMAGE_DATA_DIRECTORY *dir = PE_HEADER(hmod)->OptionalHeader.DataDirectory
-                                + IMAGE_DIRECTORY_ENTRY_IMPORT;
-    if (dir->Size && dir->VirtualAddress)
+    DWORD size;
+    IMAGE_IMPORT_DESCRIPTOR *pe_imp;
+
+    if ((pe_imp = RtlImageDirectoryEntryToData( hmod, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &size )))
     {
-        IMAGE_IMPORT_DESCRIPTOR *pe_imp = (IMAGE_IMPORT_DESCRIPTOR *)((char *)hmod + dir->VirtualAddress);
         for ( ; pe_imp->Name; pe_imp++)
         {
 	    char * name = (char *)hmod + (unsigned int)pe_imp->Name;
@@ -364,7 +365,7 @@
 
 	    if (!strncasecmp(name, "ntdll", 5))
 	    {
-	      switch(PE_HEADER(hmod)->OptionalHeader.MajorOperatingSystemVersion) {
+	      switch(RtlImageNtHeader(hmod)->OptionalHeader.MajorOperatingSystemVersion) {
 		  case 3:
 			  MESSAGE("WARNING: very old native DLL (NT 3.x) used, might cause instability.\n");
 			  return NT351;
@@ -405,12 +406,14 @@
 	WINE_MODREF *wm;
 	DWORD WinVersion = NB_WINDOWS_VERSIONS;
 	PIMAGE_OPTIONAL_HEADER ophd;
+        IMAGE_NT_HEADERS *nt;
 
 	/* First check the native dlls provided. These have to be
 	from one windows version */
 	for ( wm = MODULE_modref_list; wm; wm=wm->next )
 	{
-	  ophd = &(PE_HEADER(wm->module)->OptionalHeader);
+          nt = RtlImageNtHeader(wm->module);
+          ophd = &nt->OptionalHeader;
 
 	  TRACE("%s: %02x.%02x/%02x.%02x/%02x.%02x/%02x.%02x\n",
 	    wm->modname,
@@ -449,7 +452,8 @@
 	if(WinVersion != NB_WINDOWS_VERSIONS) return WinVersion;
 
 	/* we are using no external system dlls, look at the exe */
-	ophd = &(PE_HEADER(GetModuleHandleA(NULL))->OptionalHeader);
+        nt = RtlImageNtHeader(GetModuleHandleA(NULL));
+        ophd = &nt->OptionalHeader;
 
 	TRACE("%02x.%02x/%02x.%02x/%02x.%02x/%02x.%02x\n",
 	    ophd->MajorLinkerVersion, ophd->MinorLinkerVersion,