Browse Source

* Second part of 64-bit Windows fixes and updates from Mantis #23074.

git-svn-id: trunk@26807 -
sergei 11 years ago
parent
commit
5e762cc6ea
4 changed files with 247 additions and 109 deletions
  1. 14 9
      rtl/win/wininc/base.inc
  2. 16 16
      rtl/win/wininc/func.inc
  3. 9 9
      rtl/win/wininc/redef.inc
  4. 208 75
      rtl/win/wininc/struct.inc

+ 14 - 9
rtl/win/wininc/base.inc

@@ -111,6 +111,7 @@
      HDC = HANDLE;
      HDDEDATA = HANDLE;
      HDESK = HANDLE;
+     HDEVNOTIFY = HANDLE;
      HDROP = HANDLE;
      HDWP = HANDLE;
      HENHMETAFILE = HANDLE;
@@ -197,6 +198,10 @@
      LPWSTR = Pwidechar;
      NWPSTR = Pwidechar;
 
+     LPPSTR = ^LPSTR;
+     LPPWSTR = ^LPWSTR;
+     LPPTSTR = ^LPTSTR;
+
      PWINBOOL = ^WINBOOL;
      PBOOLEAN = ^BYTE {$ifndef VER2_2} deprecated {$endif};
 
@@ -604,7 +609,7 @@
 
      LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
 
-     EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;stdcall;
+     EDITSTREAMCALLBACK = function (_para1:DWORD_PTR; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;stdcall;
 
      LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT_PTR;stdcall;
 
@@ -618,7 +623,7 @@
 
      PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;stdcall;
 
-     LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);stdcall;
+     LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPPTSTR);stdcall;
 
      PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;stdcall;
 
@@ -632,11 +637,11 @@
 
      PROC = FARPROC;
 
-     ENUMRESTYPEPROC = function (hModule:HANDLE; lpszType:LPTSTR; lParam:LONG_PTR):WINBOOL;stdcall;
+     ENUMRESTYPEPROC = function (hModule:HMODULE; lpszType:LPTSTR; lParam:LONG_PTR):WINBOOL;stdcall;
 
-     ENUMRESNAMEPROC = function (hModule:HANDLE; lpszType:LPCTSTR; lpszName:LPTSTR; lParam:LONG_PTR):WINBOOL;stdcall;
+     ENUMRESNAMEPROC = function (hModule:HMODULE; lpszType:LPCTSTR; lpszName:LPTSTR; lParam:LONG_PTR):WINBOOL;stdcall;
 
-     ENUMRESLANGPROC = function (hModule:HANDLE; lpszType:LPCTSTR; lpszName:LPCTSTR; wIDLanguage:WORD; lParam:LONG_PTR):WINBOOL;stdcall;
+     ENUMRESLANGPROC = function (hModule:HMODULE; lpszType:LPCTSTR; lpszName:LPCTSTR; wIDLanguage:WORD; lParam:LONG_PTR):WINBOOL;stdcall;
 
      DESKTOPENUMPROC = FARPROC;
 
@@ -644,7 +649,7 @@
 
      ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;stdcall;
 
-     SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);stdcall;
+     SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:ULONG_PTR; _para4:LRESULT);stdcall;
 
      TIMERPROC = procedure (hWnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD); stdcall;
 
@@ -652,9 +657,9 @@
 
      DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;stdcall;
 
-     PROPENUMPROCEXA = function (_para1:HWND; _para2:LPCSTR;  _para3:HANDLE; _para4:DWORD):WINBOOL;stdcall;
-     PROPENUMPROCEXW = function (_para1:HWND; _para2:LPCWSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;stdcall;
-     PROPENUMPROCEX  = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;stdcall;
+     PROPENUMPROCEXA = function (_para1:HWND; _para2:LPCSTR;  _para3:HANDLE; _para4:DWORD_PTR):WINBOOL;stdcall;
+     PROPENUMPROCEXW = function (_para1:HWND; _para2:LPCWSTR; _para3:HANDLE; _para4:DWORD_PTR):WINBOOL;stdcall;
+     PROPENUMPROCEX  = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD_PTR):WINBOOL;stdcall;
 
      PROPENUMPROCA = function (_para1:HWND; _para2:LPCSTR;  _para3:HANDLE):WINBOOL;stdcall;
      PROPENUMPROCW = function (_para1:HWND; _para2:LPCWSTR; _para3:HANDLE):WINBOOL;stdcall;

+ 16 - 16
rtl/win/wininc/func.inc

@@ -60,10 +60,10 @@ procedure FreeLibraryAndExitThread(hLibModule:HMODULE; dwExitCode:DWORD); extern
 function DisableThreadLibraryCalls(hLibModule:HMODULE):WINBOOL; external 'kernel32' name 'DisableThreadLibraryCalls';
 function GetProcAddress(hModule:HINST; lpProcName:LPCSTR):FARPROC; external 'kernel32' name 'GetProcAddress';
 function GetVersion:DWORD; external 'kernel32' name 'GetVersion';
-function GlobalAlloc(uFlags:UINT; dwBytes:DWORD):HGLOBAL; external 'kernel32' name 'GlobalAlloc';
+function GlobalAlloc(uFlags:UINT; dwBytes:PTRUINT):HGLOBAL; external 'kernel32' name 'GlobalAlloc';
 function GlobalDiscard(hglbMem:HGLOBAL):HGLOBAL;
-function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL; external 'kernel32' name 'GlobalReAlloc';
-function GlobalSize(hMem:HGLOBAL):DWORD; external 'kernel32' name 'GlobalSize';
+function GlobalReAlloc(hMem:HGLOBAL; dwBytes:PTRUINT; uFlags:UINT):HGLOBAL; external 'kernel32' name 'GlobalReAlloc';
+function GlobalSize(hMem:HGLOBAL):PTRUINT; external 'kernel32' name 'GlobalSize';
 function GlobalFlags(hMem:HGLOBAL):UINT; external 'kernel32' name 'GlobalFlags';
 function GlobalLock(hMem:HGLOBAL):LPVOID; external 'kernel32' name 'GlobalLock';
 function GlobalHandle(pMem:LPCVOID):HGLOBAL; external 'kernel32' name 'GlobalHandle';
@@ -75,9 +75,9 @@ procedure GlobalUnfix(hMem:HGLOBAL); external 'kernel32' name 'GlobalUnfix';
 function GlobalWire(hMem:HGLOBAL):LPVOID; external 'kernel32' name 'GlobalWire';
 function GlobalUnWire(hMem:HGLOBAL):WINBOOL; external 'kernel32' name 'GlobalUnWire';
 procedure GlobalMemoryStatus(lpBuffer:LPMEMORYSTATUS); external 'kernel32' name 'GlobalMemoryStatus';
-function LocalAlloc(uFlags:UINT; uBytes:UINT):HLOCAL; external 'kernel32' name 'LocalAlloc';
+function LocalAlloc(uFlags:UINT; uBytes:PTRUINT):HLOCAL; external 'kernel32' name 'LocalAlloc';
 function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
-function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL; external 'kernel32' name 'LocalReAlloc';
+function LocalReAlloc(hMem:HLOCAL; uBytes:PTRUINT; uFlags:UINT):HLOCAL; external 'kernel32' name 'LocalReAlloc';
 function LocalLock(hMem:HLOCAL):LPVOID; external 'kernel32' name 'LocalLock';
 function LocalHandle(pMem:LPCVOID):HLOCAL; external 'kernel32' name 'LocalHandle';
 function LocalUnlock(hMem:HLOCAL):WINBOOL; external 'kernel32' name 'LocalUnlock';
@@ -86,7 +86,7 @@ function LocalFlags(hMem:HLOCAL):UINT; external 'kernel32' name 'LocalFlags';
 function LocalFree(hMem:HLOCAL):HLOCAL; external 'kernel32' name 'LocalFree';
 function LocalShrink(hMem:HLOCAL; cbNewSize:UINT):UINT; external 'kernel32' name 'LocalShrink';
 function LocalCompact(uMinFree:UINT):UINT; external 'kernel32' name 'LocalCompact';
-function FlushInstructionCache(hProcess:HANDLE; lpBaseAddress:LPCVOID; dwSize:DWORD):WINBOOL; external 'kernel32' name 'FlushInstructionCache';
+function FlushInstructionCache(hProcess:HANDLE; lpBaseAddress:LPCVOID; dwSize:PTRUINT):WINBOOL; external 'kernel32' name 'FlushInstructionCache';
 function VirtualAlloc(lpAddress:LPVOID; dwSize:PTRUINT; flAllocationType:DWORD; flProtect:DWORD):LPVOID; external 'kernel32' name 'VirtualAlloc';
 function VirtualAllocEx(hProcess:THandle;lpAddress:LPVOID;dwsize:PTRUINT;flAllocationType :DWORD;flProtect:DWORD):LPVOID; external 'kernel32' name 'VirtualAllocEx';
 function VirtualAllocExNuma(hProcess:THandle;lpAddress:LPVOID;dwsize:PTRUINT;flAllocationType :DWORD;flProtect:DWORD;nndPreferred:DWORD):LPVOID; external 'kernel32' name 'VirtualAllocExNuma';
@@ -94,11 +94,11 @@ function VirtualFree(lpAddress:LPVOID; dwSize:PTRUINT; dwFreeType:DWORD):WINBOOL
 function VirtualFreeEx(hProcess:THandle;lpAddress:LPVOID; dwSize:PTRUINT; dwFreeType:DWORD):WINBOOL; external 'kernel32' name 'VirtualFreeEx';
 function VirtualProtect(lpAddress:LPVOID; dwSize:PTRUINT; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL; external 'kernel32' name 'VirtualProtect';
 function VirtualQuery(lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:PTRUINT):PTRUINT; external 'kernel32' name 'VirtualQuery';
-function VirtualProtectEx(hProcess:HANDLE; lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL; external 'kernel32' name 'VirtualProtectEx';
+function VirtualProtectEx(hProcess:HANDLE; lpAddress:LPVOID; dwSize:PTRUINT; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL; external 'kernel32' name 'VirtualProtectEx';
 function VirtualQueryEx(hProcess:HANDLE; lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:PTRUINT):PTRUINT; external 'kernel32' name 'VirtualQueryEx';
 function HeapCreate(flOptions:DWORD; dwInitialSize:PTRUINT; dwMaximumSize:PTRUINT):HANDLE; external 'kernel32' name 'HeapCreate';
 function HeapDestroy(hHeap:HANDLE):WINBOOL; external 'kernel32' name 'HeapDestroy';
-function HeapAlloc(hHeap:HANDLE; dwFlags:DWORD; dwBytes:DWORD):LPVOID; external 'kernel32' name 'HeapAlloc';
+function HeapAlloc(hHeap:HANDLE; dwFlags:DWORD; dwBytes:PTRUINT):LPVOID; external 'kernel32' name 'HeapAlloc';
 function HeapReAlloc(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID; dwBytes:PTRUINT):LPVOID; external 'kernel32' name 'HeapReAlloc';
 function HeapFree(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID):WINBOOL; external 'kernel32' name 'HeapFree';
 function HeapSize(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPCVOID):PTRUINT; external 'kernel32' name 'HeapSize';
@@ -111,8 +111,8 @@ function HeapUnlock(hHeap:HANDLE):WINBOOL; external 'kernel32' name 'HeapUnlock'
 function HeapWalk(hHeap:HANDLE; lpEntry:LPPROCESS_HEAP_ENTRY):WINBOOL; external 'kernel32' name 'HeapWalk';
 function GetProcessAffinityMask(hProcess:HANDLE; lpProcessAffinityMask:PDWORD_PTR; lpSystemAffinityMask:PDWORD_PTR):WINBOOL; external 'kernel32' name 'GetProcessAffinityMask';
 function GetProcessTimes(hProcess:HANDLE; lpCreationTime:LPFILETIME; lpExitTime:LPFILETIME; lpKernelTime:LPFILETIME; lpUserTime:LPFILETIME):WINBOOL; external 'kernel32' name 'GetProcessTimes';
-function GetProcessWorkingSetSize(hProcess:HANDLE; lpMinimumWorkingSetSize:LPDWORD; lpMaximumWorkingSetSize:LPDWORD):WINBOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
-function SetProcessWorkingSetSize(hProcess:HANDLE; dwMinimumWorkingSetSize:DWORD; dwMaximumWorkingSetSize:DWORD):WINBOOL; external 'kernel32' name 'SetProcessWorkingSetSize';
+function GetProcessWorkingSetSize(hProcess:HANDLE; lpMinimumWorkingSetSize:PPTRUINT; lpMaximumWorkingSetSize:PPTRUINT):WINBOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
+function SetProcessWorkingSetSize(hProcess:HANDLE; dwMinimumWorkingSetSize:PTRUINT; dwMaximumWorkingSetSize:PTRUINT):WINBOOL; external 'kernel32' name 'SetProcessWorkingSetSize';
 function OpenProcess(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; dwProcessId:DWORD):HANDLE; external 'kernel32' name 'OpenProcess';
 function GetCurrentProcess:HANDLE; external 'kernel32' name 'GetCurrentProcess';
 function GetCurrentProcessId:DWORD; external 'kernel32' name 'GetCurrentProcessId';
@@ -123,7 +123,7 @@ function GetExitCodeProcess(hProcess:HANDLE; lpExitCode:LPDWORD):WINBOOL; extern
 procedure FatalExit(ExitCode:longint); external 'kernel32' name 'FatalExit';
 procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; lpArguments:LPDWORD); external 'kernel32' name 'RaiseException';
 function UnhandledExceptionFilter(ExceptionInfo:lpemptyrecord):LONG; external 'kernel32' name 'UnhandledExceptionFilter';
-function CreateRemoteThread(hProcess:HANDLE; lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:DWORD; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID;
+function CreateRemoteThread(hProcess:HANDLE; lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:PTRUINT; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID;
   dwCreationFlags:DWORD; lpThreadId:LPDWORD):HANDLE; external 'kernel32' name 'CreateRemoteThread';
 function GetCurrentThread:HANDLE; external 'kernel32' name 'GetCurrentThread';
 function GetCurrentThreadId:DWORD; external 'kernel32' name 'GetCurrentThreadId';
@@ -139,8 +139,8 @@ function GetLastError:DWORD; external 'kernel32' name 'GetLastError';
 procedure SetLastError(dwErrCode:DWORD); external 'kernel32' name 'SetLastError';
 function CreateIoCompletionPort(FileHandle:HANDLE; ExistingCompletionPort:HANDLE; CompletionKey:ULONG_PTR; NumberOfConcurrentThreads:DWORD):HANDLE; external 'kernel32' name 'CreateIoCompletionPort';
 function SetErrorMode(uMode:UINT):UINT; external 'kernel32' name 'SetErrorMode';
-function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external 'kernel32' name 'ReadProcessMemory';
-function WriteProcessMemory(hProcess:HANDLE; lpBaseAddress:LPVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesWritten:LPDWORD):WINBOOL; external 'kernel32' name 'WriteProcessMemory';
+function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:PTRUINT; lpNumberOfBytesRead:PPTRUINT):WINBOOL; external 'kernel32' name 'ReadProcessMemory';
+function WriteProcessMemory(hProcess:HANDLE; lpBaseAddress:LPVOID; lpBuffer:LPVOID; nSize:PTRUINT; lpNumberOfBytesWritten:PPTRUINT):WINBOOL; external 'kernel32' name 'WriteProcessMemory';
 function GetThreadContext(hThread:HANDLE; lpContext:LPCONTEXT):WINBOOL; external 'kernel32' name 'GetThreadContext';
 function SuspendThread(hThread:HANDLE):DWORD; external 'kernel32' name 'SuspendThread';
 function ResumeThread(hThread:HANDLE):DWORD; external 'kernel32' name 'ResumeThread';
@@ -372,8 +372,8 @@ function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor:PSECURITY_DESCRIPTOR; pA
 function SetKernelObjectSecurity(Handle:HANDLE; SecurityInformation:SECURITY_INFORMATION; SecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external 'advapi32' name 'SetKernelObjectSecurity';
 function FindNextChangeNotification(hChangeHandle:HANDLE):WINBOOL; external 'kernel32' name 'FindNextChangeNotification';
 function FindCloseChangeNotification(hChangeHandle:HANDLE):WINBOOL; external 'kernel32' name 'FindCloseChangeNotification';
-function VirtualLock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL; external 'kernel32' name 'VirtualLock';
-function VirtualUnlock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL; external 'kernel32' name 'VirtualUnlock';
+function VirtualLock(lpAddress:LPVOID; dwSize:PTRUINT):WINBOOL; external 'kernel32' name 'VirtualLock';
+function VirtualUnlock(lpAddress:LPVOID; dwSize:PTRUINT):WINBOOL; external 'kernel32' name 'VirtualUnlock';
 function MapViewOfFileEx(hFileMappingObject:HANDLE; dwDesiredAccess:DWORD; dwFileOffsetHigh:DWORD; dwFileOffsetLow:DWORD; dwNumberOfBytesToMap:SIZE_T;lpBaseAddress:LPVOID):LPVOID; external 'kernel32' name 'MapViewOfFileEx';
 function SetPriorityClass(hProcess:HANDLE; dwPriorityClass:DWORD):WINBOOL; external 'kernel32' name 'SetPriorityClass';
 function GetPriorityClass(hProcess:HANDLE):DWORD; external 'kernel32' name 'GetPriorityClass';
@@ -926,7 +926,7 @@ function ImageList_GetImageInfo(himl:HIMAGELIST; i:longint; var pImageInfo:IMAGE
 function ImageList_Merge(himl1:HIMAGELIST; i1:longint; himl2:HIMAGELIST; i2:longint; dx:longint;dy:longint):HIMAGELIST; external 'comctl32' name 'ImageList_Merge';
 function ImageList_SetImageCount(himl: HIMAGELIST; uNewCount: UINT): Integer; external 'comctl32.dll' name 'ImageList_SetImageCount';
 
-function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINST;wBMID:UINT; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint;dxBitmap:longint;
+function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINST;wBMID:UINT_PTR; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint;dxBitmap:longint;
   dyBitmap:longint; uStructSize:UINT):HWND; external 'comctl32' name 'CreateToolbarEx';
 function CreateMappedBitmap(hInstance:HINST; idBitmap:longint; wFlags:UINT; lpColorMap:LPCOLORMAP; iNumMaps:longint):HBITMAP; external 'comctl32' name 'CreateMappedBitmap';
 procedure MenuHelp(uMsg:UINT; wParam:WPARAM; lParam:LPARAM; hMainMenu:HMENU; hInst:HINST;hwndStatus:HWND; var lpwIDs:UINT); external 'comctl32' name 'MenuHelp';

+ 9 - 9
rtl/win/wininc/redef.inc

@@ -349,9 +349,9 @@ function CreateProcessA(lpApplicationName: LPCSTR; lpCommandLine: LPCSTR; lpProc
 function CreateProcessW(lpApplicationName: LPWSTR; lpCommandLine: LPWSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPWSTR;
   const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; external 'kernel32' name 'CreateProcessW';
 //function CreateRectRgnIndirect(const p1: TRect): HRGN; external 'gdi32' name 'CreateRectRgnIndirect';
-function CreateRemoteThread(hProcess: THandle; lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle;
+function CreateRemoteThread(hProcess: THandle; lpThreadAttributes: Pointer; dwStackSize: PTRUINT; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle;
   external 'kernel32' name 'CreateRemoteThread';
-function CreateThread(lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; external 'kernel32' name 'CreateThread';
+function CreateThread(lpThreadAttributes: Pointer; dwStackSize: PTRUINT; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; external 'kernel32' name 'CreateThread';
 function DdeSetQualityOfService(hWndClient: HWnd; const pqosNew: TSecurityQualityOfService; pqosPrev: PSecurityQualityOfService): BOOL;external 'user32' name 'DdeSetQualityOfService';
 function DdeConnect(_para1:DWORD; _para2:HSZ; _para3:HSZ; var _para4:CONVCONTEXT):HCONV; external 'user32' name 'DdeConnect';
 //function DeleteAce(var pAcl: TACL; dwAceIndex: DWORD): BOOL; external 'advapi32' name 'DeleteAce';
@@ -410,7 +410,7 @@ function FindFirstFileW(lpFileName: LPWSTR; var lpFindFileData: TWIN32FindDataW)
 function FindNextFile(hFindFile: THandle; var lpFindFileData: TWIN32FindData): BOOL;external 'kernel32' name 'FindNextFileA';
 function FindNextFileA(hFindFile: THandle; var lpFindFileData: TWIN32FindDataA): BOOL; external 'kernel32' name 'FindNextFileA';
 function FindNextFileW(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; external 'kernel32' name 'FindNextFileW';
-//function FlushInstructionCache(hProcess: THandle; const lpBaseAddress: Pointer; dwSize: DWORD): BOOL; external 'kernel32' name 'FlushInstructionCache';
+//function FlushInstructionCache(hProcess: THandle; const lpBaseAddress: Pointer; dwSize: PTRUINT): BOOL; external 'kernel32' name 'FlushInstructionCache';
 //function FlushViewOfFile(const lpBaseAddress: Pointer; dwNumberOfBytesToFlush: DWORD): BOOL; external 'kernel32' name 'FlushViewOfFile';
 //function FrameRect(hDC: HDC; const lprc: TRect; hbr: HBRUSH): Integer; external 'user32' name 'FrameRect';
 //function GetAce(const pAcl: TACL; dwAceIndex: DWORD; var pAce: Pointer): BOOL; external 'advapi32' name 'GetAce';
@@ -571,7 +571,7 @@ function GetProcessPriorityBoost(hThread: THandle; var DisablePriorityBoost: Boo
 {$endif NO_SMART_LINK}
 function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; external 'kernel32' name 'GetProcessShutdownParameters';
 function GetProcessTimes(hProcess: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external 'kernel32' name 'GetProcessTimes';
-function GetProcessWorkingSetSize(hProcess: THandle; var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: DWORD): BOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
+function GetProcessWorkingSetSize(hProcess: THandle; var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: PTRUINT): BOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
 function GetQueuedCompletionStatus(CompletionPort: THandle; var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR; var lpOverlapped: POverlapped; dwMilliseconds: DWORD): BOOL; external 'kernel32' name 'GetQueuedCompletionStatus';
 function PostQueuedCompletionStatus(CompletionPort: THandle; NumberOfBytesTransferred:dword; dwCompletionKey: ULONG_PTR; lpOverlapped: POverlapped): BOOL; external 'kernel32' name 'PostQueuedCompletionStatus';
 function GetRasterizerCaps(var p1: TRasterizerStatus; p2: UINT): BOOL; external 'gdi32' name 'GetRasterizerCaps';
@@ -766,7 +766,7 @@ function ReadEventLog(hEventLog: THandle; dwReadFlags, dwRecordOffset: DWORD; lp
 function ReadEventLogA(hEventLog: THandle; dwReadFlags, dwRecordOffset: DWORD; lpBuffer: Pointer; nNumberOfBytesToRead: DWORD; var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; external 'advapi32' name 'ReadEventLogA';
 function ReadEventLogW(hEventLog: THandle; dwReadFlags, dwRecordOffset: DWORD; lpBuffer: Pointer; nNumberOfBytesToRead: DWORD; var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; external 'advapi32' name 'ReadEventLogW';
 function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; external 'kernel32' name 'ReadFile';
-function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; external 'kernel32' name 'ReadProcessMemory';
+function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: PTRUINT; var lpNumberOfBytesRead: PTRUINT): BOOL; external 'kernel32' name 'ReadProcessMemory';
 //function RectInRegion(RGN: HRGN; const p2: TRect): BOOL; external 'gdi32' name 'RectInRegion';
 //function RectVisible(DC: HDC; const Rect: TRect): BOOL; external 'gdi32' name 'RectVisible';
 function RegConnectRegistry(lpMachineName: PChar; hKey: HKEY; var phkResult: HKEY): Longint;external 'advapi32' name 'RegConnectRegistryA';
@@ -906,9 +906,9 @@ function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
 function VerQueryValue(pBlock: Pointer; lpSubBlock: PChar; var lplpBuffer: Pointer; var puLen: UINT): BOOL;external 'version' name 'VerQueryValueA';
 function VerQueryValueA(pBlock: Pointer; lpSubBlock: LPCSTR; var lplpBuffer: Pointer; var puLen: UINT): BOOL; external 'version' name 'VerQueryValueA';
 function VerQueryValueW(pBlock: Pointer; lpSubBlock: LPWSTR; var lplpBuffer: Pointer; var puLen: UINT): BOOL; external 'version' name 'VerQueryValueW';
-function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; var lpflOldProtect:DWORD):WINBOOL; external 'kernel32' name 'VirtualProtect';
-function VirtualQuery(lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external 'kernel32' name 'VirtualQuery';
-function VirtualQueryEx(hProcess: THandle; lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external 'kernel32' name 'VirtualQueryEx';
+function VirtualProtect(lpAddress:LPVOID; dwSize:PTRUINT; flNewProtect:DWORD; var lpflOldProtect:DWORD):WINBOOL; external 'kernel32' name 'VirtualProtect';
+function VirtualQuery(lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: PTRUINT): PTRUINT; external 'kernel32' name 'VirtualQuery';
+function VirtualQueryEx(hProcess: THandle; lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: PTRUINT): PTRUINT; external 'kernel32' name 'VirtualQueryEx';
 function WaitCommEvent(hFile: THandle; var lpEvtMask: DWORD; lpOverlapped: POverlapped): BOOL; external 'kernel32' name 'WaitCommEvent';
 function WaitForDebugEvent(var lpDebugEvent: TDebugEvent; dwMilliseconds: DWORD): BOOL; external 'kernel32' name 'WaitForDebugEvent';
 function wglDescribeLayerPlane(DC: HDC; iPixelFormat, iLayerPlane: Integer; nBytes: Cardinal; var pfd: TLayerPlaneDescriptor): BOOL;external 'opengl32' name 'wglDescribeLayerPlane';
@@ -977,7 +977,7 @@ function WriteFileEx(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToWrite: D
 function WritePrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID; uSizeStruct: UINT; szFile: LPCSTR): BOOL; external 'kernel32' name 'WritePrivateProfileStructA';
 function WritePrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID; uSizeStruct: UINT; szFile: LPCWSTR): BOOL; external 'kernel32' name 'WritePrivateProfileStructW';
 function WritePrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID; uSizeStruct: UINT; szFile: LPCTSTR): BOOL; external 'kernel32' name 'WritePrivateProfileStructA';
-function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; external 'kernel32' name 'WriteProcessMemory';
+function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: PTRUINT; var lpNumberOfBytesWritten: PTRUINT): BOOL; external 'kernel32' name 'WriteProcessMemory';
 function SHFileOperation(Var para1: SHFILEOPSTRUCT):longint; external 'shell32' name 'SHFileOperation';
 // these are old Win16 funcs that under win32 are aliases for several char* funcs.
 // exist under Win32 (even in SDK's from 2002), but are officially "depreciated"

+ 208 - 75
rtl/win/wininc/struct.inc

@@ -432,8 +432,8 @@ Const
      BROWSEINFO = record
           hwndOwner : HWND;
           pidlRoot : LPCITEMIDLIST;
-          pszDisplayName : LPSTR;
-          lpszTitle : LPCSTR;
+          pszDisplayName : LPTSTR;
+          lpszTitle : LPCTSTR;
           ulFlags : UINT;
           lpfn : BFFCALLBACK;
           lParam : LPARAM;
@@ -734,7 +734,7 @@ Const
           lpLogFont : LPLOGFONT;
           iPointSize : WINT;
           Flags : DWORD;
-          rgbColors : DWORD;
+          rgbColors : COLORREF;
           lCustData : LPARAM;
           lpfnHook : LPCFHOOKPROC;
           lpTemplateName : LPCTSTR;
@@ -952,6 +952,7 @@ Const
           itemData1 : ULONG_PTR;
           itemID2 : UINT;
           itemData2 : ULONG_PTR;
+          dwLocaleID : DWORD;
        end;
      tagCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
      TCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
@@ -1480,7 +1481,7 @@ Const
      SECURITY_QUALITY_OF_SERVICE = record
           Length : DWORD;
           ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
-          ContextTrackingMode : WINBOOL;
+          ContextTrackingMode : WINBOOL;    // SECURITY_CONTEXT_TRACKING_MODE
           EffectiveOnly : BOOLEAN;
        end;
      PSECURITY_QUALITY_OF_SERVICE = ^SECURITY_QUALITY_OF_SERVICE;
@@ -1586,7 +1587,7 @@ Const
           idIcon : longint;
           idName : longint;
           idInfo : longint;
-          lData : LONG;
+          lData : LONG_PTR;
        end;
      tagCPLINFO = CPLINFO;
      TCPLINFO = CPLINFO;
@@ -1777,8 +1778,8 @@ Const
   type
 
      DDEML_MSG_HOOK_DATA = record
-          uiLo : UINT;
-          uiHi : UINT;
+          uiLo : UINT_PTR;
+          uiHi : UINT_PTR;
           cbData : DWORD;
           Data : array[0..7] of DWORD;
        end;
@@ -2013,11 +2014,11 @@ Const
      PDEVBROADCASTHDR = ^DEV_BROADCAST_HDR;
 
      DEV_BROADCAST_OEM = record
-          dbco_size : ULONG;
-          dbco_devicetype : ULONG;
-          dbco_reserved : ULONG;
-          dbco_identifier : ULONG;
-          dbco_suppfunc : ULONG;
+          dbco_size : DWORD;
+          dbco_devicetype : DWORD;
+          dbco_reserved : DWORD;
+          dbco_identifier : DWORD;
+          dbco_suppfunc : DWORD;
        end;
      PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
      _DEV_BROADCAST_OEM = DEV_BROADCAST_OEM;
@@ -2025,10 +2026,10 @@ Const
      PDEVBROADCASTOEM = ^DEV_BROADCAST_OEM;
 
      DEV_BROADCAST_PORT = record
-          dbcp_size : ULONG;
-          dbcp_devicetype : ULONG;
-          dbcp_reserved : ULONG;
-          dbcp_name : array[0..0] of char;
+          dbcp_size : DWORD;
+          dbcp_devicetype : DWORD;
+          dbcp_reserved : DWORD;
+          dbcp_name : array[0..0] of TCHAR;
        end;
      PDEV_BROADCAST_PORT = ^DEV_BROADCAST_PORT;
      _DEV_BROADCAST_PORT = DEV_BROADCAST_PORT;
@@ -2044,11 +2045,11 @@ Const
      PDEVBROADCASTUSERDEFINED = ^_DEV_BROADCAST_USERDEFINED;
 
      DEV_BROADCAST_VOLUME = record
-          dbcv_size : ULONG;
-          dbcv_devicetype : ULONG;
-          dbcv_reserved : ULONG;
-          dbcv_unitmask : ULONG;
-          dbcv_flags : USHORT;
+          dbcv_size : DWORD;
+          dbcv_devicetype : DWORD;
+          dbcv_reserved : DWORD;
+          dbcv_unitmask : DWORD;
+          dbcv_flags : WORD;
        end;
      PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
      _DEV_BROADCAST_VOLUME = DEV_BROADCAST_VOLUME;
@@ -2242,9 +2243,14 @@ Const
           BytesWritten : LARGE_INTEGER;
           ReadTime : LARGE_INTEGER;
           WriteTime : LARGE_INTEGER;
+          IdleTime : LARGE_INTEGER;
           ReadCount : DWORD;
           WriteCount : DWORD;
           QueueDepth : DWORD;
+          SplitCount : DWORD;
+          QueryTime : LARGE_INTEGER;
+          StorageDeviceNumber : DWORD;
+          StorageManagerName : array [0..7] of WCHAR;
        end;
      _DISK_PERFORMANCE = DISK_PERFORMANCE;
      TDISKPERFORMANCE = DISK_PERFORMANCE;
@@ -2485,7 +2491,7 @@ Const
      PDRIVERINFO3 = ^DRIVER_INFO_3;
 
      EDITSTREAM = record
-          dwCookie : DWORD;
+          dwCookie : DWORD_PTR;
           dwError : DWORD;
           pfnCallback : EDITSTREAMCALLBACK;
        end;
@@ -2561,6 +2567,7 @@ Const
           crBkColorSrc : COLORREF;
           iUsageSrc : DWORD;
           offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
           offBitsSrc : DWORD;
           cbBitsSrc : DWORD;
        end;
@@ -2829,11 +2836,11 @@ Const
      PEMREXTCREATEFONTINDIRECTW = ^EMREXTCREATEFONTINDIRECTW;
 
      EXTLOGPEN = record
-          elpPenStyle : UINT;
-          elpWidth : UINT;
+          elpPenStyle : DWORD;
+          elpWidth : DWORD;
           elpBrushStyle : UINT;
           elpColor : COLORREF;
-          elpHatch : ULONG_ptr;
+          elpHatch : ULONG_PTR;
           elpNumEntries : DWORD;
           elpStyleEntry : array[0..0] of DWORD;
        end;
@@ -3574,6 +3581,14 @@ Const
           nPalEntries : DWORD;
           szlDevice : SIZEL;
           szlMillimeters : SIZEL;
+// #if (WINVER >= 0x0400)
+          cbPixelFormat : DWORD;
+          offPixelFormat : DWORD;
+          bOpenGL : DWORD;
+// #endif
+// #if (WINVER >= 0x0500)
+          szlMicrometers : SIZEL;
+// #endif
        end;
      LPENHMETAHEADER = ^ENHMETAHEADER;
      tagENHMETAHEADER = ENHMETAHEADER;
@@ -3627,8 +3642,8 @@ Const
 
      ENUMLOGFONT = record
           elfLogFont : LOGFONT;
-          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of TCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of TCHAR;
        end;
      tagENUMLOGFONT = ENUMLOGFONT;
      TENUMLOGFONT = ENUMLOGFONT;
@@ -3636,9 +3651,9 @@ Const
 
      ENUMLOGFONTEX = record
           elfLogFont : LOGFONT;
-          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-          elfScript : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of TCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of TCHAR;
+          elfScript : array[0..(LF_FACESIZE)-1] of TCHAR;
        end;
      tagENUMLOGFONTEX = ENUMLOGFONTEX;
      TENUMLOGFONTEX = ENUMLOGFONTEX;
@@ -3927,10 +3942,10 @@ Const
           lpOrder : ^UINT;
           lpDx : ^WINT;
           lpCaretPos : ^WINT;
-          lpClass : LPTSTR;
-          lpGlyphs : ^UINT;
+          lpClass : LPSTR;           { Unicode-independent, i.e. not LPTSTR }
+          lpGlyphs : LPWSTR;         { Unicode-independent }
           nGlyphs : UINT;
-          nMaxFit : UINT;
+          nMaxFit : WINT;
        end;
      LPGCP_RESULTS = ^GCP_RESULTS;
      tagGCP_RESULTS = GCP_RESULTS;
@@ -4043,6 +4058,8 @@ Const
           iCtrlId : longint;
           hItemHandle : HANDLE;
           dwContextId : DWORD_PTR;
+ // NOTE:  this is defined as DWORD in http://msdn.microsoft.com/en-us/library/windows/desktop/bb773313%28v=vs.85%29.asp
+// but mingw has it as DWORD_PTR, so we will use that
           MousePos : POINT;
        end;
      LPHELPINFO = ^HELPINFO;
@@ -4465,6 +4482,8 @@ Const
           pt : POINT;
           flags : UINT;
           iItem : longint;
+          iSubItem : longint;
+          iGroup : longint;
        end;
      _LV_HITTESTINFO = LV_HITTESTINFO;
      TLVHITTESTINFO = LV_HITTESTINFO;
@@ -4739,8 +4758,8 @@ Const
           hsz1 : HSZ;
           hsz2 : HSZ;
           hData : HDDEDATA;
-          dwData1 : DWORD;
-          dwData2 : DWORD;
+          dwData1 : ULONG_PTR;
+          dwData2 : ULONG_PTR;
           cc : CONVCONTEXT;
           cbData : DWORD;
           Data : array[0..7] of DWORD;
@@ -4860,7 +4879,7 @@ Const
           pt : POINT;
           hwnd : HWND;
           wHitTestCode : UINT;
-          dwExtraInfo : DWORD;
+          dwExtraInfo : ULONG_PTR;
        end;
      LPMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
      tagMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
@@ -4886,10 +4905,10 @@ Const
           cbSize : UINT;
           hwndOwner : HWND;
           hInstance : HINST;
-          lpszText : LPCSTR;
-          lpszCaption : LPCSTR;
+          lpszText : LPCTSTR;
+          lpszCaption : LPCTSTR;
           dwStyle : DWORD;
-          lpszIcon : LPCSTR;
+          lpszIcon : LPCTSTR;
           dwContextHelpId : DWORD_PTR;
           lpfnMsgBoxCallback : MSGBOXCALLBACK;
           dwLanguageId : DWORD;
@@ -5015,7 +5034,7 @@ Const
           dwSize : DWORD;
           dwFlags : DWORD;
           dwHelpContext : DWORD;
-          lData : LONG;
+          lpData : LONG_PTR;
           hIcon : HICON;
           szName : array[0..31] of AnsiCHAR;
           szInfo : array[0..63] of AnsiCHAR;
@@ -5232,6 +5251,7 @@ Const
           lfMenuFont : LOGFONT;
           lfStatusFont : LOGFONT;
           lfMessageFont : LOGFONT;
+          //iPaddedBorderWidth : longint;     // WINVER >= 0x0600
        end;
      LPNONCLIENTMETRICS = ^NONCLIENTMETRICS;
      tagNONCLIENTMETRICS = NONCLIENTMETRICS;
@@ -5780,8 +5800,8 @@ Const
      TPRINTDLG = packed record
           lStructSize : DWORD;
           hwndOwner : HWND;
-          hDevMode : HANDLE;
-          hDevNames : HANDLE;
+          hDevMode : HGLOBAL;
+          hDevNames : HGLOBAL;
           hDC : HDC;
           Flags : DWORD;
           nFromPage : WORD;
@@ -5790,13 +5810,13 @@ Const
           nMaxPage : WORD;
           nCopies : WORD;
           hInstance : HINST;
-          lCustData : DWORD;
+          lCustData : LPARAM;
           lpfnPrintHook : LPPRINTHOOKPROC;
           lpfnSetupHook : LPSETUPHOOKPROC;
           lpPrintTemplateName : LPCTSTR;
           lpSetupTemplateName : LPCTSTR;
-          hPrintTemplate : HANDLE;
-          hSetupTemplate : HANDLE;
+          hPrintTemplate : HGLOBAL;
+          hSetupTemplate : HGLOBAL;
        end;
      LPPRINTDLG = ^TPRINTDLG;
      PPRINTDLG = ^TPRINTDLG;
@@ -5955,11 +5975,15 @@ Const
           cbOverhead : BYTE;
           iRegionIndex : BYTE;
           wFlags : WORD;
-          dwCommittedSize : DWORD;
-          dwUnCommittedSize : DWORD;
-          lpFirstBlock : LPVOID;
-          lpLastBlock : LPVOID;
-          hMem : HANDLE;
+          case longint of
+            0 : (hMem : HANDLE;
+                 dwReserved : array [0..2] of DWORD;
+                );
+            1 : (dwCommittedSize : DWORD;
+                 dwUnCommittedSize : DWORD;
+                 lpFirstBlock : LPVOID;
+                 lpLastBlock : LPVOID;
+                );
        end;
      LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAPENTRY;
      _PROCESS_HEAP_ENTRY = PROCESS_HEAPENTRY;
@@ -6181,12 +6205,46 @@ Const
         RASCONN  = RASCONNA;
      {$endif}
 
+     { actually: in_addr }
+     RASIPV4ADDR = record
+       case longint of
+         0 : (s_b1 : BYTE;
+              s_b2 : BYTE;
+              s_b3 : BYTE;
+              s_b4 : BYTE;
+             );
+         1 : (s_w1 : USHORT;
+              s_w2 : USHORT;
+             );
+         2 : (S_addr : ULONG;);
+     end;
+
+     { actually: in6_addr }
+     RASIPV6ADDR = record
+       case longint of
+         0 : (rbyte : array[0..15] of BYTE);
+         1 : (rword : array[0..7] of USHORT);
+     end;
+
+     RASTUNNELENDPOINT = record
+       dwType : DWORD;
+       case longint of
+         0 : (ipv4 : RASIPV4ADDR);
+         1 : (ipv6 : RASIPV6ADDR);
+     end;
+
+     RASCONNSUBSTATE = longint;   //enumerated type
+
      RASCONNSTATUSA = record
           dwSize : DWORD;
           rasconnstate : RASCONNSTATE;
           dwError : DWORD;
           szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of AnsiCHAR;
           szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of AnsiCHAR;
+          szPhoneNumber : array[0..(RAS_MaxPhoneNumber + 1)-1] of AnsiCHAR; // http://msdn.microsoft.com/en-us/library/windows/desktop/aa376728%28v=vs.85%29.aspx
+          localEndPoint : RASTUNNELENDPOINT;
+          remoteEndPoint : RASTUNNELENDPOINT;
+          rasconnsubstate : RASCONNSUBSTATE;
        end;
      _RASCONNSTATUSA = RASCONNSTATUSA;
      TRASCONNSTATUSA = RASCONNSTATUSA;
@@ -6198,6 +6256,10 @@ Const
           dwError : DWORD;
           szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of WideCHAR;
           szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of WideCHAR;
+          szPhoneNumber : array[0..(RAS_MaxPhoneNumber + 1)-1] of WideCHAR; // http://msdn.microsoft.com/en-us/library/windows/desktop/aa376728%28v=vs.85%29.aspx
+          localEndPoint : RASTUNNELENDPOINT;
+          remoteEndPoint : RASTUNNELENDPOINT;
+          rasconnsubstate : RASCONNSUBSTATE;
        end;
      _RASCONNSTATUSW = RASCONNSTATUSW;
      TRASCONNSTATUSW = RASCONNSTATUSW;
@@ -6232,6 +6294,9 @@ Const
           szUserName : array[0..(UNLEN + 1)-1] of AnsiCHAR;
           szPassword : array[0..(PWLEN + 1)-1] of AnsiCHAR;
           szDomain : array[0..(DNLEN + 1)-1] of AnsiCHAR;
+          dwSubEntry : DWORD; // http://msdn.microsoft.com/en-us/library/windows/desktop/aa377238%28v=vs.85%29.aspx
+          dwCallbackId : ULONG_PTR;
+          dwIfIndex : DWORD;
        end;
      _RASDIALPARAMSA = RASDIALPARAMSA;
      TRASDIALPARAMSA = RASDIALPARAMSA;
@@ -6245,6 +6310,9 @@ Const
           szUserName : array[0..(UNLEN + 1)-1] of WCHAR;
           szPassword : array[0..(PWLEN + 1)-1] of WCHAR;
           szDomain : array[0..(DNLEN + 1)-1] of WCHAR;
+          dwSubEntry : DWORD; // http://msdn.microsoft.com/en-us/library/windows/desktop/aa377238%28v=vs.85%29.aspx
+          dwCallbackId : ULONG_PTR;
+          dwIfIndex : DWORD;
        end;
      _RASDIALPARAMSW = RASDIALPARAMSW;
      TRASDIALPARAMSW = RASDIALPARAMSW;
@@ -6264,6 +6332,9 @@ Const
      RASENTRYNAMEA = record
           dwSize : DWORD;
           szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of AnsiCHAR;
+          { Winver>=0x500 members }
+          dwFlags : DWORD;
+          szPhonebookPath : array[0..(MAX_PATH + 1)-1] of AnsiCHAR;
        end;
      _RASENTRYNAMEA = RASENTRYNAMEA;
      TRASENTRYNAMEA = RASENTRYNAMEA;
@@ -6272,6 +6343,9 @@ Const
      RASENTRYNAMEW = record
           dwSize : DWORD;
           szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of WCHAR;
+          { Winver>=0x500 members }
+          dwFlags : DWORD;
+          szPhonebookPath : array[0..(MAX_PATH + 1)-1] of WCHAR;
        end;
      _RASENTRYNAMEW = RASENTRYNAMEW;
      TRASENTRYNAMEW = RASENTRYNAMEW;
@@ -6501,7 +6575,7 @@ Const
      Pselchange = ^SELCHANGE;
 
      SERIALKEYS = record
-          cbSize : DWORD;
+          cbSize : UINT;
           dwFlags : DWORD;
           lpszActivePort : LPSTR;
           lpszPort : LPSTR;
@@ -6574,8 +6648,8 @@ Const
           hIcon : HICON;
           iIcon : longint;
           dwAttributes : DWORD;
-          szDisplayName : array[0..(MAX_PATH)-1] of char;
-          szTypeName : array[0..79] of char;
+          szDisplayName : array[0..(MAX_PATH)-1] of TCHAR;
+          szTypeName : array[0..79] of TCHAR;
        end;
      _SHFILEINFO = SHFILEINFO;
      TSHFILEINFO = SHFILEINFO;
@@ -6588,12 +6662,12 @@ Const
      SHFILEOPSTRUCT = record
           hwnd : HWND;
           wFunc : UINT;
-          pFrom : LPCSTR;
-          pTo : LPCSTR;
+          pFrom : LPCSTR;   // PCZZTSTR
+          pTo : LPCSTR;     // PCZZTSTR
           fFlags : FILEOP_FLAGS;
           fAnyOperationsAborted : WINBOOL;
           hNameMappings : LPVOID;
-          lpszProgressTitle : LPCSTR;
+          lpszProgressTitle : LPCSTR;   // PCTSTR
        end;
      LPSHFILEOPSTRUCT = ^SHFILEOPSTRUCT;
      _SHFILEOPSTRUCT = SHFILEOPSTRUCT;
@@ -6703,7 +6777,7 @@ Const
 
      STYLEBUF = record
           dwStyle : DWORD;
-          szDescription : array[0..31] of CHAR;
+          szDescription : array[0..31] of TCHAR;
        end;
      LPSTYLEBUF = ^STYLEBUF;
      _tagSTYLEBUF = STYLEBUF;
@@ -6743,6 +6817,7 @@ Const
 			 );
                  1 : (
                       wProcessorArchitecture : WORD;
+                      wReserved : WORD;
                     );
        end;
      LPSYSTEM_INFO = ^SYSTEM_INFO;
@@ -6766,6 +6841,7 @@ Const
 
      TAPE_ERASE = record
           _Type : ULONG;
+          Immediate : BOOLEAN;
        end;
      _TAPE_ERASE = TAPE_ERASE;
      TTAPEERASE = TAPE_ERASE;
@@ -6791,8 +6867,8 @@ Const
      TAPE_GET_MEDIA_PARAMETERS = record
           Capacity : LARGE_INTEGER;
           Remaining : LARGE_INTEGER;
-          BlockSize : DWORD;
-          PartitionCount : DWORD;
+          BlockSize : ULONG;
+          PartitionCount : ULONG;
           WriteProtected : BOOLEAN;
        end;
      _TAPE_GET_MEDIA_PARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
@@ -6811,6 +6887,7 @@ Const
 
      TAPE_PREPARE = record
           Operation : ULONG;
+          Immediate : BOOLEAN;
        end;
      _TAPE_PREPARE = TAPE_PREPARE;
      TTAPEPREPARE = TAPE_PREPARE;
@@ -6839,6 +6916,7 @@ Const
           Partition : ULONG;
           OffsetLow : ULONG;
           OffsetHigh : ULONG;
+          Immediate : BOOLEAN;
        end;
      _TAPE_SET_POSITION = TAPE_SET_POSITION;
      TTAPESETPOSITION = TAPE_SET_POSITION;
@@ -6847,6 +6925,7 @@ Const
      TAPE_WRITE_MARKS = record
           _Type : ULONG;
           Count : ULONG;
+          Immediate : BOOLEAN;
        end;
      _TAPE_WRITE_MARKS = TAPE_WRITE_MARKS;
      TTAPEWRITEMARKS = TAPE_WRITE_MARKS;
@@ -6854,7 +6933,7 @@ Const
 
      TBADDBITMAP = record
           hInst : HINST;
-          nID : UINT;
+          nID : UINT_PTR;
        end;
      LPTBADDBITMAP = ^TBADDBITMAP;
      TTBADDBITMAP = TBADDBITMAP;
@@ -6865,8 +6944,13 @@ Const
           idCommand : longint;
           fsState : BYTE;
           fsStyle : BYTE;
-          dwData : DWORD;
-          iString : longint;
+{$ifdef _WIN64}
+          bReserved : array[0..5] of BYTE;
+{$else}
+          bReserved : array[0..1] of BYTE;
+{$endif}
+          dwData : DWORD_PTR;
+          iString : INT_PTR;
        end;
      LPTBBUTTON = ^TBBUTTON;
      LPCTBBUTTON = ^TBBUTTON;
@@ -6966,7 +7050,7 @@ Const
      PTOGGLEKEYS = ^TOGGLEKEYS;
 
      TOKEN_SOURCE = record
-          SourceName : array[0..7] of CHAR;
+          SourceName : array[0..7] of CHAR;  // 0..(TOKEN_SOURCE_LENGTH-1)
           SourceIdentifier : LUID;
        end;
      _TOKEN_SOURCE = TOKEN_SOURCE;
@@ -7056,6 +7140,8 @@ Const
           rect : RECT;
           hinst : HINST;
           lpszText : LPTSTR;
+          lParam : LPARAM;
+          lpReserved : LPVOID;
        end;
      LPTOOLINFO = ^TOOLINFO;
      TTOOLINFO = TOOLINFO;
@@ -7064,9 +7150,10 @@ Const
      TOOLTIPTEXT = record
           hdr : NMHDR;
           lpszText : LPTSTR;
-          szText : array[0..79] of char;
+          szText : array[0..79] of TCHAR;
           hinst : HINST;
           uFlags : UINT;
+          lParam : LPARAM;
        end;
      LPTOOLTIPTEXT = ^TOOLTIPTEXT;
      TTOOLTIPTEXT = TOOLTIPTEXT;
@@ -7139,10 +7226,26 @@ Const
      TTVHITTESTINFO = TV_HITTESTINFO;
      PTVHITTESTINFO = ^TV_HITTESTINFO;
 
+     TVITEMEX = record
+          mask : UINT;
+          hItem : HTREEITEM;
+          state : UINT;
+          stateMask : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          iSelectedImage : longint;
+          cChildren : longint;
+          lParam : LPARAM;
+          iIntegral : longint;
+       end;
+
      TV_INSERTSTRUCT = record
           hParent : HTREEITEM;
           hInsertAfter : HTREEITEM;
-          item : TV_ITEM;
+          case longint of
+          0 : (item : TV_ITEM;);
+          1 : (itemex : TVITEMEX;);
        end;
      LPTV_INSERTSTRUCT = ^TV_INSERTSTRUCT;
      _TV_INSERTSTRUCT = TV_INSERTSTRUCT;
@@ -7195,7 +7298,7 @@ Const
      VALENT = record
           ve_valuename : LPTSTR;
           ve_valuelen : DWORD;
-          ve_valueptr : DWORD;
+          ve_valueptr : DWORD_PTR;
           ve_type : DWORD;
        end;
      TVALENT = VALENT;
@@ -7291,7 +7394,7 @@ Const
           dwStreamAttributes : DWORD;
           Size : LARGE_INTEGER;
           dwStreamNameSize : DWORD;
-          cStreamName : ^WCHAR;
+          cStreamName : array[0..0] of WCHAR;  // really array[0..(dwStreamNameSize)] of WCHAR
        end;
      _WIN32_STREAM_ID = WIN32_STREAM_ID;
      TWIN32STREAMID = WIN32_STREAM_ID;
@@ -7314,7 +7417,7 @@ Const
           lpfnWndProc : WNDPROC;
           cbClsExtra : longint;
           cbWndExtra : longint;
-          hInstance : HANDLE;
+          hInstance : HINST;
           hIcon : HICON;
           hCursor : HCURSOR;
           hbrBackground : HBRUSH;
@@ -7331,7 +7434,7 @@ Const
           lpfnWndProc : WNDPROC;
           cbClsExtra : longint;
           cbWndExtra : longint;
-          hInstance : HANDLE;
+          hInstance : HINST;
           hIcon : HICON;
           hCursor : HCURSOR;
           hbrBackground : HBRUSH;
@@ -7362,7 +7465,7 @@ Const
           lpfnWndProc : WNDPROC;
           cbClsExtra : longint;
           cbWndExtra : longint;
-          hInstance : HANDLE;
+          hInstance : HINST;
           hIcon : HICON;
           hCursor : HCURSOR;
           hbrBackground : HBRUSH;
@@ -7381,7 +7484,7 @@ Const
           lpfnWndProc : WNDPROC;
           cbClsExtra : longint;
           cbWndExtra : longint;
-          hInstance : HANDLE;
+          hInstance : HINST;
           hIcon : HICON;
           hCursor : HCURSOR;
           hbrBackground : HBRUSH;
@@ -7438,7 +7541,7 @@ Const
           dwProviderVersion : DWORD;
           dwStatus : DWORD;
           dwCharacteristics : DWORD;
-          dwHandle : DWORD;
+          dwHandle : ULONG_PTR;
           wNetType : WORD;
           dwPrinters : DWORD;
           dwDrives : DWORD;
@@ -7710,7 +7813,17 @@ Const
           uFlags: UINT;
           uCallbackMessage: UINT;
           hIcon: HICON;
-          szTip: array [0..63] of Char;
+          szTip: array [0..127] of AnsiChar;
+          dwState : DWORD;
+          dwStateMask : DWORD;
+          szInfo : array[0..255] of AnsiChar;
+          case longint of
+            0 : (uTimeout : UINT;);
+            1 : (uVersion : UINT;
+                 szInfoTitle : array[0..63] of AnsiChar;
+                 dwInfoFlags : DWORD;
+                 //guidItem : TGUID;     // #if (_WIN32_IE >= 0x600)}
+                );
      end;
      _NOTIFYICONDATA = _NOTIFYICONDATAA;
 
@@ -7721,7 +7834,17 @@ Const
          uFlags: UINT;
          uCallbackMessage: UINT;
          hIcon: HICON;
-         szTip: array [0..63] of Word;
+         szTip: array [0..127] of WCHAR;
+         dwState : DWORD;
+         dwStateMask : DWORD;
+         szInfo : array[0..255] of WCHAR;
+         case longint of
+           0 : (uTimeout : UINT;);
+           1 : (uVersion : UINT;
+                szInfoTitle : array[0..63] of WCHAR;
+                dwInfoFlags : DWORD;
+                //guidItem : TGUID;     // #if (_WIN32_IE >= 0x600)}
+               );
      end;
      TNotifyIconDataA = _NOTIFYICONDATAA;
      TNotifyIconDataW = _NOTIFYICONDATAW;
@@ -7941,8 +8064,13 @@ const
   IMAGE_ROM_OPTIONAL_HDR_MAGIC  = $107;
 
 type
+{$ifdef _WIN64}
+  IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER64;
+  PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER64;
+{$else}
   IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
   PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
+{$endif}
   TImageOptionalHeader = IMAGE_OPTIONAL_HEADER;
   PImageOptionalHeader = PIMAGE_OPTIONAL_HEADER;
 
@@ -7980,10 +8108,15 @@ type
   TImageRomHeaders = IMAGE_ROM_HEADERS;
   PImageRomHeaders = PIMAGE_ROM_HEADERS;
 
+{$ifdef _WIN64}
+  IMAGE_NT_HEADERS = IMAGE_NT_HEADERS64;
+  PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS64;
+{$else}
   IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32;
   PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32;
+{$endif}
 
-  TImageNtHeaders = IMAGE_NT_HEADERS32;
+  TImageNtHeaders = IMAGE_NT_HEADERS;
   PImageNtHeaders = PIMAGE_NT_HEADERS;
 
   _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);