[KERNEL32]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Mon, 19 Jul 2010 18:52:18 +0000 (18:52 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Mon, 19 Jul 2010 18:52:18 +0000 (18:52 +0000)
Merge r34770, r36475, r36990, r37019, r43852, r43952, r43954, r43979, r43981, r46868 from amd64 branch:
- Multiple ULONG / SIZE_T fixes
- Use UlongToHandle / HandleToUlong to convert between DWORD ProcessId and ClientId.UniqueProcess
- implement amd64 version of _dump_context
- Make IsConsoleHandle 64bit safe
- Update kernel32.pspec with a lot of Win7 (commented out) and some amd64 specific exports, add some more comments and fix sorting
- Implement amd64 version of BaseThreadStartupThunk and BaseProcessStartThunk
- Stub amd64 version of SwitchToFiber
- Implement amd64 version of BasepInitializeContext

svn path=/trunk/; revision=48119

15 files changed:
reactos/dll/win32/kernel32/debug/debugger.c
reactos/dll/win32/kernel32/except/except.c
reactos/dll/win32/kernel32/include/kernel32.h
reactos/dll/win32/kernel32/kernel32.pspec
reactos/dll/win32/kernel32/kernel32.rbuild
reactos/dll/win32/kernel32/misc/dllmain.c
reactos/dll/win32/kernel32/misc/toolhelp.c
reactos/dll/win32/kernel32/misc/utils.c
reactos/dll/win32/kernel32/process/proc.c
reactos/dll/win32/kernel32/process/procsup.c
reactos/dll/win32/kernel32/process/session.c
reactos/dll/win32/kernel32/thread/amd64/fiber.S [new file with mode: 0644]
reactos/dll/win32/kernel32/thread/amd64/thread.S [new file with mode: 0644]
reactos/dll/win32/kernel32/thread/fiber.c
reactos/dll/win32/kernel32/thread/thread.c

index 83c8a8d..2604a4c 100644 (file)
@@ -232,11 +232,11 @@ ProcessIdToHandle(IN DWORD dwProcessId)
     CLIENT_ID ClientId;
 
     /* If we don't have a PID, look it up */
-    if (dwProcessId == MAXDWORD) dwProcessId = (DWORD)CsrGetProcessId();
+    if (dwProcessId == MAXDWORD) dwProcessId = (DWORD_PTR)CsrGetProcessId();
 
     /* Open a handle to the process */
     ClientId.UniqueThread = NULL;
-    ClientId.UniqueProcess = (HANDLE)dwProcessId;
+    ClientId.UniqueProcess = UlongToHandle(dwProcessId);
     InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
     Status = NtOpenProcess(&Handle,
                            PROCESS_ALL_ACCESS,
index a0e3221..d46a51c 100644 (file)
@@ -124,10 +124,11 @@ _module_name_from_addr(const void* addr, void **module_start_addr,
    return psz;
 }
 
-#ifdef _M_IX86
+
 static VOID
 _dump_context(PCONTEXT pc)
 {
+#ifdef _M_IX86
    /*
     * Print out the CPU registers
     */
@@ -138,14 +139,19 @@ _dump_context(PCONTEXT pc)
    DbgPrint("EDX: %.8x   EBP: %.8x   ESI: %.8x   ESP: %.8x\n", pc->Edx,
            pc->Ebp, pc->Esi, pc->Esp);
    DbgPrint("EDI: %.8x   EFLAGS: %.8x\n", pc->Edi, pc->EFlags);
-}
+#elif defined(_M_AMD64)
+   DbgPrint("CS:RIP %x:%I64x\n", pc->SegCs&0xffff, pc->Rip );
+   DbgPrint("DS %x ES %x FS %x GS %x\n", pc->SegDs&0xffff, pc->SegEs&0xffff,
+           pc->SegFs&0xffff, pc->SegGs&0xfff);
+   DbgPrint("RAX: %I64x   RBX: %I64x   RCX: %I64x RDI: %I64x\n", pc->Rax, pc->Rbx, pc->Rcx, pc->Rdi);
+   DbgPrint("RDX: %I64x   RBP: %I64x   RSI: %I64x   RSP: %I64x\n", pc->Rdx, pc->Rbp, pc->Rsi, pc->Rsp);
+   DbgPrint("R8: %I64x   R9: %I64x   R10: %I64x   R11: %I64x\n", pc->R8, pc->R9, pc->R10, pc->R11);
+   DbgPrint("R12: %I64x   R13: %I64x   R14: %I64x   R15: %I64x\n", pc->R12, pc->R13, pc->R14, pc->R15);
+   DbgPrint("EFLAGS: %.8x\n", pc->EFlags);
 #else
 #warning Unknown architecture
-static VOID
-_dump_context(PCONTEXT pc)
-{
-}
 #endif
+}
 
 static LONG
 BasepCheckForReadOnlyResource(IN PVOID Ptr)
@@ -275,7 +281,7 @@ UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
    LONG RetValue;
    HANDLE DebugPort = NULL;
    NTSTATUS ErrCode;
-   ULONG ErrorParameters[4];
+   ULONG_PTR ErrorParameters[4];
    ULONG ErrorResponse;
    PEXCEPTION_RECORD ExceptionRecord = ExceptionInfo->ExceptionRecord;
 
@@ -326,7 +332,7 @@ UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
 
    /* Save exception code and address */
    ErrorParameters[0] = (ULONG)ExceptionRecord->ExceptionCode;
-   ErrorParameters[1] = (ULONG)ExceptionRecord->ExceptionAddress;
+   ErrorParameters[1] = (ULONG_PTR)ExceptionRecord->ExceptionAddress;
 
    if ((NTSTATUS)ExceptionRecord->ExceptionCode == STATUS_ACCESS_VIOLATION)
    {
index 5966978..4d3f032 100755 (executable)
@@ -31,7 +31,7 @@
 #endif
 
 #define IsConsoleHandle(h) \
-  (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
+  (((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
 
 #define HANDLE_DETACHED_PROCESS    (HANDLE)-2
 #define HANDLE_CREATE_NEW_CONSOLE  (HANDLE)-3
@@ -110,8 +110,8 @@ BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
 NTSTATUS
 WINAPI
 BasepCreateStack(HANDLE hProcess,
-                 ULONG StackReserve,
-                 ULONG StackCommit,
+                 SIZE_T StackReserve,
+                 SIZE_T StackCommit,
                  PINITIAL_TEB InitialTeb);
                  
 VOID
index f477aae..f0130a9 100644 (file)
@@ -7,14 +7,21 @@
 @ stdcall AddAtomW(wstr)
 @ stdcall AddConsoleAliasA(str str str) ;check
 @ stdcall AddConsoleAliasW(wstr wstr wstr) ;check
+;@ stdcall -arch=x86_64 AddIntegrityLabelToBoundaryDescriptor ; Win 7
 @ stdcall AddLocalAlternateComputerNameA(str ptr)
 @ stdcall AddLocalAlternateComputerNameW(wstr ptr)
 @ stdcall AddRefActCtx(ptr)
+;@ stdcall AddSIDToBoundaryDescriptor ; Win 7
+;@ stdcall AddSecureMemoryCacheCallback ; Win 7
 @ stdcall AddVectoredContinueHandler(long ptr) ntdll.RtlAddVectoredContinueHandler
 @ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler
+;@ stdcall AdjustCalendarDate ; Win 7
 @ stdcall AllocConsole()
-@ stub AllocLSCallback ; missing in XP SP3 and 2003 R2
+@ stub AllocLSCallback ; missing in XP SP3 and 2003 R2 and Win 7
 @ stdcall AllocateUserPhysicalPages(long ptr ptr)
+;@ stdcall AllocateUserPhysicalPagesNuma ; Win 7
+;@ stdcall ApplicationRecoveryFinished ; Win 7
+;@ stdcall ApplicationRecoveryInProgress ; Win 7
 @ stdcall AreFileApisANSI()
 @ stdcall AssignProcessToJobObject(ptr ptr)
 @ stdcall AttachConsole(long)
 @ stdcall BackupSeek(ptr long long ptr ptr ptr)
 @ stdcall BackupWrite(ptr ptr long ptr long long ptr)
 @ stdcall BaseCheckAppcompatCache(long long long ptr) ;check
+;@ stdcall BaseCheckAppcompatCacheEx ; Win7
 @ stub BaseCheckRunApp
-@ stdcall BaseCleanupAppcompatCache()
+@ stdcall BaseCleanupAppcompatCache() ; missing in Win 7
 @ stdcall BaseCleanupAppcompatCacheSupport(ptr)
+;@ stdcall BaseDllReadWriteIniFile ; Win 7
 @ stdcall BaseDumpAppcompatCache()
 @ stdcall BaseFlushAppcompatCache()
-@ stdcall BaseInitAppcompatCache()
+;@ stdcall BaseFormatObjectAttributes ; Win 7
+;@ stdcall BaseFormatTimeOut ; Win 7
+;@ stdcall BaseGenerateAppCompatData ; Win 7
+;@ stdcall BaseGetNamedObjectDirectory ; Win 7
+@ stdcall BaseInitAppcompatCache() ; missing in Win 7
 @ stdcall BaseInitAppcompatCacheSupport()
-@ stdcall BaseProcessInitPostImport()
+;@ stdcall BaseIsAppcompatInfrastructureDisabled ; Win 7
+@ stdcall BaseProcessInitPostImport() ; missing in Win 7
 @ stdcall BaseQueryModuleData(str str ptr ptr ptr) ;check
+;@ stdcall BaseThreadInitThunk ; Win 7
+;@ stdcall BaseSetLastNTError ; Win 7, not 64 bit
 @ stdcall BaseUpdateAppcompatCache(long long long)
+;@ stdcall BaseVerifyUnicodeString ; Win 7
+;@ stdcall Basep8BitStringToDynamicUnicodeString ; Win 7
+;@ stdcall BasepAllocateActivationContextActivationBlock ; Win 7
+;@ stdcall BasepAnsiStringToDynamicUnicodeString ; Win 7
+;@ stdcall BasepCheckAppCompat ; Win 7
+;@ stdcall BasepCheckBadapp ; Win 7
 @ stub BasepCheckWinSaferRestrictions
-@ stub BasepDebugDump ; missing in XP SP3
+@ stub BasepDebugDump ; missing in XP SP3 and Win 7
+;@ stdcall BasepFreeActivationContextActivationBlock ; Win 7
+;@ stdcall BasepFreeAppCompatData ; Win 7
+;@ stdcall BasepMapModuleHandle ; Win 7
 @ stdcall Beep(long long)
 @ stdcall BeginUpdateResourceA(str long)
 @ stdcall BeginUpdateResourceW(wstr long)
 @ stdcall BuildCommDCBW(wstr ptr)
 @ stdcall CallNamedPipeA(str ptr long ptr long ptr long)
 @ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long)
+;@ stdcall CallbackMayRunLong ; Win 7
 @ stdcall CancelDeviceWakeupRequest(long)
 @ stdcall CancelIo(long)
 @ stdcall CancelIoEx(long ptr)
 @ stdcall CancelSynchronousIo(long)
+;@ stdcall CancelThreadpoolIo(ptr) ntdll.TpCancelAsyncIoOperation; Win 7
 @ stdcall CancelTimerQueueTimer(long long)
 @ stdcall CancelWaitableTimer(long)
 @ stdcall ChangeTimerQueueTimer(ptr ptr long long)
+;@ stdcall CheckElevation ; Win 7
+;@ stdcall CheckElevationEnabled ; Win 7
+;@ stdcall CheckForReadOnlyResource ; Win 7
 @ stdcall CheckNameLegalDOS8Dot3A(str str long long long)
 @ stdcall CheckNameLegalDOS8Dot3W(wstr str long long long)
 @ stdcall CheckRemoteDebuggerPresent(long ptr)
 @ stdcall ClearCommError(long ptr ptr)
 @ stdcall CloseConsoleHandle(long)
 @ stdcall CloseHandle(long)
+;@ stdcall ClosePrivateNamespace ; Win 7
 @ stdcall CloseProfileUserMapping()
-@ stub CloseSystemHandle ; missing in XP SP3
+@ stub CloseSystemHandle ; missing in XP SP3 and Win 7
+;@ stdcall CloseThreadpool(ptr) ntdll.TpReleasePool ; Win 7
+;@ stdcall CloseThreadpoolCleanupGroup(ptr) ntdll.TpReleaseCleanupGroup ; Win 7
+;@ stdcall CloseThreadpoolCleanupGroupMembers(ptr long ptr) ntdll.TpReleaseCleanupGroupMembers ; Win 7
+;@ stdcall CloseThreadpoolIo ntdll.TpReleaseIoCompletion ; Win 7
+;@ stdcall CloseThreadpoolTimer ntdll.TpReleaseTimer ; Win 7
+;@ stdcall CloseThreadpoolWait ntdll.TpReleaseWait ; Win 7
+;@ stdcall CloseThreadpoolWork ntdll.TpReleaseWork ; Win 7
 @ stdcall CmdBatNotification(long)
 @ stdcall CommConfigDialogA(str long ptr)
 @ stdcall CommConfigDialogW(wstr long ptr)
+;@ stdcall CompareCalendarDates ; Win 7
 @ stdcall CompareFileTime(ptr ptr)
 @ stdcall CompareStringA(long long str long str long)
+;@ stdcall CompareStringEx ; Win 7
+;@ stdcall CompareStringOrdinal ; Win 7
 @ stdcall CompareStringW(long long wstr long wstr long)
 @ stdcall ConnectNamedPipe(long ptr)
 @ stdcall ConsoleMenuControl(long long long)
-@ stub ConsoleSubst ; missing in XP SP3
+@ stub ConsoleSubst ; missing in XP SP3 and Win 7
 @ stdcall ContinueDebugEvent(long long long)
+;@ stdcall ConvertCalDateTimeToSystemTime ; Win 7
 @ stdcall ConvertDefaultLocale (long)
 @ stdcall ConvertFiberToThread()
+;@ stdcall ConvertNLSDayOfWeekToWin32DayOfWeek ; Win 7
+;@ stdcall ConvertSystemTimeToCalDateTime ; Win 7
 @ stdcall ConvertThreadToFiber(ptr)
 @ stdcall ConvertThreadToFiberEx(ptr long)
+;@ stdcall CopyExtendedContext ; Win 7
 @ stdcall CopyFileA(str str long)
 @ stdcall CopyFileExA (str str ptr ptr ptr long)
 @ stdcall CopyFileExW (wstr wstr ptr ptr ptr long)
+;@ stdcall CopyFileTransactedA ; Win 7
+;@ stdcall CopyFileTransactedW ; Win 7
 @ stdcall CopyFileW(wstr wstr long)
 @ stdcall CopyLZFile(long long) LZCopy
 @ stdcall CreateActCtxA(ptr)
 @ stdcall CreateActCtxW(ptr)
+;@ stdcall CreateBoundaryDescriptorA ; Win 7
+;@ stdcall CreateBoundaryDescriptorW ; Win 7
 @ stdcall CreateConsoleScreenBuffer(long long ptr long ptr)
 @ stdcall CreateDirectoryA(str ptr)
 @ stdcall CreateDirectoryExA(str str ptr)
 @ stdcall CreateDirectoryExW(wstr wstr ptr)
+;@ stdcall CreateDirectoryTransactedA ; Win 7
+;@ stdcall CreateDirectoryTransactedW ; Win 7
 @ stdcall CreateDirectoryW(wstr ptr)
 @ stdcall CreateEventA(ptr long long str)
 @ stdcall CreateEventExA(ptr str long long)
 @ stdcall CreateFiberEx(long long long ptr ptr)
 @ stdcall CreateFileA(str long long ptr long long long)
 @ stdcall CreateFileMappingA(long ptr long long long str)
+;@ stdcall CreateFileMappingNumaA ; Win 7
+;@ stdcall CreateFileMappingNumaW ; Win 7
 @ stdcall CreateFileMappingW(long ptr long long long wstr)
+;@ stdcall CreateFileTransactedA ; Win 7
+;@ stdcall CreateFileTransactedW ; Win 7
 @ stdcall CreateFileW(wstr long long ptr long long long)
 @ stdcall CreateHardLinkA(str str ptr)
+;@ stdcall CreateHardLinkTransactedA ; Win 7
+;@ stdcall CreateHardLinkTransactedW ; Win 7
 @ stdcall CreateHardLinkW(wstr wstr ptr)
 @ stdcall CreateIoCompletionPort(long long long long)
 @ stdcall CreateJobObjectA(ptr str)
 @ stdcall CreateJobObjectW(ptr wstr)
 @ stdcall CreateJobSet(long ptr long)
-@ stub CreateKernelThread ; missing in XP SP3
+@ stub CreateKernelThread ; missing in XP SP3 and Win 7
 @ stdcall CreateMailslotA(ptr long long ptr)
 @ stdcall CreateMailslotW(ptr long long ptr)
 @ stdcall CreateMemoryResourceNotification(long)
 @ stdcall CreateMutexW(ptr long wstr)
 @ stdcall CreateNamedPipeA(str long long long long long long ptr)
 @ stdcall CreateNamedPipeW(wstr long long long long long long ptr)
-@ stdcall CreateNlsSecurityDescriptor(ptr long long)
+@ stdcall CreateNlsSecurityDescriptor(ptr long long) ; missing in Win 7
 @ stdcall CreatePipe(ptr ptr ptr long)
+;@ stdcall CreatePrivateNamespaceA ; Win 7
+;@ stdcall CreatePrivateNamespaceW ; Win 7
 @ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr)
+;@ stdcall CreateProcessAsUserW ; Win 7
 @ stdcall CreateProcessInternalA(ptr str str ptr ptr long long ptr str ptr ptr long)
 @ stdcall CreateProcessInternalW(ptr wstr wstr ptr ptr long long ptr wstr ptr ptr long)
-@ stdcall CreateProcessInternalWSecure()
+@ stdcall CreateProcessInternalWSecure() ; missing in Win 7
 @ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr)
 @ stdcall CreateRemoteThread(long ptr long ptr long long ptr)
+;@ stdcall CreateRemoteThreadEx api-ms-win-core-processthreads-l1-1-0.CreateRemoteThreadEx ; Win 7
 @ stdcall CreateSemaphoreA(ptr long long str)
 @ stdcall CreateSemaphoreExA(ptr long long str long long)
 @ stdcall CreateSemaphoreExW(ptr long long wstr long long)
 @ stdcall CreateSemaphoreW(ptr long long wstr)
 @ stdcall CreateSocketHandle()
 @ stdcall CreateSymbolicLinkA(str str long)
+;@ stdcall CreateSymbolicLinkTransactedA ; Win 7
+;@ stdcall CreateSymbolicLinkTransactedW ; Win 7
 @ stdcall CreateSymbolicLinkW(wstr wstr long)
 @ stdcall CreateTapePartition(long long long long)
 @ stdcall CreateThread(ptr long ptr long long ptr)
+;@ stdcall CreateThreadpool ; Win 7
+;@ stdcall CreateThreadpoolCleanupGroup ; Win 7
+;@ stdcall CreateThreadpoolIo ; Win 7
+;@ stdcall CreateThreadpoolTimer ; Win 7
+;@ stdcall CreateThreadpoolWait ; Win 7
+;@ stdcall CreateThreadpoolWork ; Win 7
 @ stdcall CreateTimerQueue ()
 @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long)
 @ stdcall CreateToolhelp32Snapshot(long long)
-@ stdcall CreateVirtualBuffer(long long long)
+;@ stdcall arch=x86_64 CreateUmsCompletionList
+;@ stdcall arch=x86_64 CreateUmsThreadContext
+@ stdcall CreateVirtualBuffer(long long long) ; missing in Win 7
 @ stdcall CreateWaitableTimerA(ptr long str)
 @ stdcall CreateWaitableTimerExA(ptr str long long)
 @ stdcall CreateWaitableTimerExW(ptr wstr long long)
 @ stdcall DefineDosDeviceW(long wstr wstr)
 @ stdcall DelayLoadFailureHook(str str)
 @ stdcall DeleteAtom(long)
+;@ stdcall DeleteBoundaryDescriptor ntdll.RtlDeleteBoundaryDescriptor ; Win 7
 @ stdcall DeleteCriticalSection(ptr) ntdll.RtlDeleteCriticalSection
 @ stdcall DeleteFiber(ptr)
 @ stdcall DeleteFileA(str)
+;@ stdcall DeleteFileTransactedA ; Win 7
+;@ stdcall DeleteFileTransactedW ; Win 7
 @ stdcall DeleteFileW(wstr)
+;@ stdcall DeleteProcThreadAttributeList api-ms-win-core-processthreads-l1-1-0.DeleteProcThreadAttributeList ; Win 7
 @ stdcall DeleteTimerQueue(long)
 @ stdcall DeleteTimerQueueEx (long long)
 @ stdcall DeleteTimerQueueTimer(long long long)
+;@ stdcall -arch=x86_64 DeleteUmsCompletionList
+;@ stdcall -arch=x86_64 DeleteUmsThreadContext
 @ stdcall DeleteVolumeMountPointA(str) ;check
 @ stdcall DeleteVolumeMountPointW(wstr) ;check
+;@ stdcall -arch=x86_64 DequeueUmsCompletionListItems
 @ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr)
 @ stdcall DisableThreadLibraryCalls(long)
+;@ stdcall DisableThreadProfiling ; Win 7
+;@ stdcall DisassociateCurrentThreadFromCallback ntdll.TpDisassociateCallback ; Win 7
 @ stdcall DisconnectNamedPipe(long)
 @ stdcall DnsHostnameToComputerNameA (str ptr ptr)
 @ stdcall DnsHostnameToComputerNameW (wstr ptr ptr)
 @ stdcall DosPathToSessionPathW(long wstr wstr)
 @ stdcall DuplicateConsoleHandle(long long long long)
 @ stdcall DuplicateHandle(long long long ptr long long long)
+;@ stdcall EnableThreadProfiling ; Win 7
 @ stdcall EncodePointer(ptr) ntdll.RtlEncodePointer
 @ stdcall EncodeSystemPointer(ptr) ntdll.RtlEncodeSystemPointer
 @ stdcall EndUpdateResourceA(long long)
 @ stdcall EndUpdateResourceW(long long)
 @ stdcall EnterCriticalSection(ptr) ntdll.RtlEnterCriticalSection
+;@ stdcall -arch=x86_64 EnterUmsSchedulingMode
 @ stdcall EnumCalendarInfoA(ptr long long long)
 @ stdcall EnumCalendarInfoExA(ptr long long long)
+;@ stdcall EnumCalendarInfoExEx ; Win 7
 @ stdcall EnumCalendarInfoExW(ptr long long long)
 @ stdcall EnumCalendarInfoW(ptr long long long)
 @ stdcall EnumDateFormatsA(ptr long long)
 @ stdcall EnumDateFormatsExA(ptr long long)
+;@ stdcall EnumDateFormatsExEx ; Win 7
 @ stdcall EnumDateFormatsExW(ptr long long)
 @ stdcall EnumDateFormatsW(ptr long long)
 @ stdcall EnumLanguageGroupLocalesA(ptr long long ptr)
 @ stdcall EnumLanguageGroupLocalesW(ptr long long ptr)
 @ stdcall EnumResourceLanguagesA(long str str ptr long)
+;@ stdcall EnumResourceLanguagesExA ; Win 7
+;@ stdcall EnumResourceLanguagesExW ; Win 7
 @ stdcall EnumResourceLanguagesW(long wstr wstr ptr long)
 @ stdcall EnumResourceNamesA(long str ptr long)
+;@ stdcall EnumResourceNamesExA ; Win 7
+;@ stdcall EnumResourceNamesExW ; Win 7
 @ stdcall EnumResourceNamesW(long wstr ptr long)
 @ stdcall EnumResourceTypesA(long ptr long)
+;@ stdcall EnumResourceTypesExA ; Win 7
+;@ stdcall EnumResourceTypesExW ; Win 7
 @ stdcall EnumResourceTypesW(long ptr long)
 @ stdcall EnumSystemCodePagesA(ptr long)
 @ stdcall EnumSystemCodePagesW(ptr long)
+;@ stdcall EnumSystemFirmwareTables ; Win 7
 @ stdcall EnumSystemGeoID(long long ptr)
 @ stdcall EnumSystemLanguageGroupsA(ptr long ptr)
 @ stdcall EnumSystemLanguageGroupsW(ptr long ptr)
 @ stdcall EnumSystemLocalesA(ptr long)
+;@ stdcall EnumSystemLocalesEx ; Win 7
 @ stdcall EnumSystemLocalesW(ptr long)
 @ stdcall EnumTimeFormatsA(ptr long long)
+;@ stdcall EnumTimeFormatsEx ; Win 7
 @ stdcall EnumTimeFormatsW(ptr long long)
 @ stdcall EnumUILanguagesA(ptr long long)
 @ stdcall EnumUILanguagesW(ptr long long)
 @ stdcall EnumerateLocalComputerNamesW(ptr long wstr ptr)
 @ stdcall EraseTape(ptr long long)
 @ stdcall EscapeCommFunction(long long)
-@ stdcall ExitProcess(long)
-@ stdcall ExitThread(long)
+@ stdcall ExitProcess(long) ; FIXME: ntdll.RtlExitUserProcess
+@ stdcall ExitThread(long) ; FIXME: ntdll.RtlExitUserThread
 @ stdcall ExitVDM(long long)
 @ stdcall ExpandEnvironmentStringsA(str ptr long)
 @ stdcall ExpandEnvironmentStringsW(wstr ptr long)
 @ stdcall ExpungeConsoleCommandHistoryA(long)
 @ stdcall ExpungeConsoleCommandHistoryW(long)
-@ stdcall ExtendVirtualBuffer(long long)
+@ stdcall ExtendVirtualBuffer(long long) ; missing in Win 7
 @ stdcall FatalAppExitA(long str)
 @ stdcall FatalAppExitW(long wstr)
 @ stdcall FatalExit(long)
 @ stdcall FindFirstFileA(str ptr)
 @ stdcall FindFirstFileExA(str long ptr long ptr long)
 @ stdcall FindFirstFileExW(wstr long ptr long ptr long)
+;@ stdcall FindFirstFileNameTransactedW ; Win 7
+;@ stdcall FindFirstFileNameW ; Win 7
+;@ stdcall FindFirstFileTransactedA ; Win 7
+;@ stdcall FindFirstFileTransactedW ; Win 7
 @ stdcall FindFirstFileW(wstr ptr)
+;@ stdcall FindFirstStreamTransactedW ; Win 7
 @ stdcall FindFirstStreamW(wstr ptr ptr long)
 @ stdcall FindFirstVolumeA(ptr long)
 @ stdcall FindFirstVolumeMountPointA(str ptr long)
 @ stdcall FindFirstVolumeMountPointW(wstr ptr long)
 @ stdcall FindFirstVolumeW(ptr long)
+;@ stdcall FindNLSString ; Win 7
+;@ stdcall FindNLSStringEx ; Win 7
 @ stdcall FindNextChangeNotification(long)
 @ stdcall FindNextFileA(long ptr)
+;@ stdcall FindNextFileNameW ; Win 7
 @ stdcall FindNextFileW(long ptr)
+;@ stdcall FindNextStreamW ; Win 7
 @ stdcall FindNextVolumeA(long ptr long)
 @ stdcall FindNextVolumeMountPointA(long str long)
 @ stdcall FindNextVolumeMountPointW(long wstr long)
 @ stdcall FindResourceExA(long str str long)
 @ stdcall FindResourceExW(long wstr wstr long)
 @ stdcall FindResourceW(long wstr wstr)
+;@ stdcall FindStringOrdinal ; Win 7
 @ stdcall FindVolumeClose(ptr)
 @ stdcall FindVolumeMountPointClose(ptr)
 ;@ stdcall FlsAlloc(ptr) ; missing in XP SP3
 @ stdcall FlushConsoleInputBuffer(long)
 @ stdcall FlushFileBuffers(long)
 @ stdcall FlushInstructionCache(long long long)
+;@ stdcall FlushProcessWriteBuffers ntdll.NtFlushProcessWriteBuffers ; Win 7
 @ stdcall FlushViewOfFile(ptr long)
 @ stdcall FoldStringA(long str long ptr long)
 @ stdcall FoldStringW(long wstr long ptr long)
 @ stdcall FreeEnvironmentStringsW(ptr)
 @ stdcall FreeLibrary(long)
 @ stdcall FreeLibraryAndExitThread(long long)
+;@ stdcall FreeLibraryWhenCallbackReturns ntdll.TpCallbackUnloadDllOnCompletion ; Win 7
 @ stdcall FreeResource(long)
 @ stdcall FreeUserPhysicalPages(long long long)
-@ stdcall FreeVirtualBuffer(ptr)
+@ stdcall FreeVirtualBuffer(ptr) ; missing in Win 7
 @ stdcall GenerateConsoleCtrlEvent(long long)
 @ stdcall GetACP()
+;@ stdcall GetActiveProcessorCount ; Win 7
+;@ stdcall GetActiveProcessorGroupCount ; Win 7
+;@ stdcall GetApplicationRecoveryCallback ; Win 7
+;@ stdcall GetApplicationRestartSettings ; Win 7
 @ stdcall GetAtomNameA(long ptr long)
 @ stdcall GetAtomNameW(long ptr long)
 @ stdcall GetBinaryType(str ptr) GetBinaryTypeA
 @ stdcall GetBinaryTypeA(str ptr)
 @ stdcall GetBinaryTypeW(wstr ptr)
-@ stdcall GetCPFileNameFromRegistry(long wstr long) ;check
+@ stdcall GetCPFileNameFromRegistry(long wstr long) ;check missing in Win 7
 @ stdcall GetCPInfo(long ptr)
 @ stdcall GetCPInfoExA(long long ptr)
 @ stdcall GetCPInfoExW(long long ptr)
+;@ stdcall GetCalendarDateFormat ; Win 7
+;@ stdcall GetCalendarDateFormatEx ; Win 7
+;@ stdcall GetCalendarDaysInMonth ; Win 7
+;@ stdcall GetCalendarDifferenceInDays ; Win 7
 @ stdcall GetCalendarInfoA(long long long ptr long ptr)
+;@ stdcall GetCalendarInfoEx ; Win 7
 @ stdcall GetCalendarInfoW(long long long ptr long ptr)
+;@ stdcall GetCalendarMonthsInYear ; Win 7
+;@ stdcall GetCalendarSupportedDateRange ; Win 7
+;@ stdcall GetCalendarWeekNumber ; Win 7
 @ stdcall GetComPlusPackageInstallStatus()
 @ stdcall GetCommConfig(long ptr long)
 @ stdcall GetCommMask(long ptr)
 @ stdcall GetCommandLineA()
 @ stdcall GetCommandLineW()
 @ stdcall GetCompressedFileSizeA(long ptr)
+;@ stdcall GetCompressedFileSizeTransactedA ; Win 7
+;@ stdcall GetCompressedFileSizeTransactedW ; Win 7
 @ stdcall GetCompressedFileSizeW(long ptr)
 @ stdcall GetComputerNameA(ptr ptr)
 @ stdcall GetComputerNameExA(long ptr ptr)
 @ stdcall GetConsoleKeyboardLayoutNameW(ptr)
 @ stdcall GetConsoleMode(long ptr)
 @ stdcall GetConsoleNlsMode(long ptr)
+;@ stdcall GetConsoleOriginalTitleA ; Win 7
+;@ stdcall GetConsoleOriginalTitleW ; Win 7
 @ stdcall GetConsoleOutputCP()
 @ stdcall GetConsoleProcessList(ptr long) ; missing in XP SP3
 @ stdcall GetConsoleScreenBufferInfo(long ptr)
+;@ stdcall GetConsoleScreenBufferInfoEx ; Win 7
 @ stdcall GetConsoleSelectionInfo(ptr)
 @ stdcall GetConsoleTitleA(ptr long)
 @ stdcall GetConsoleTitleW(ptr long)
 @ stdcall GetConsoleWindow()
 @ stdcall GetCurrencyFormatA(long long str ptr str long)
+;@ stdcall GetCurrencyFormatEx ; Win 7
 @ stdcall GetCurrencyFormatW(long long str ptr str long)
 @ stdcall GetCurrentActCtx(ptr)
 @ stdcall GetCurrentConsoleFont(long long ptr)
+;@ stdcall GetCurrentConsoleFontEx ; Win 7
 @ stdcall GetCurrentDirectoryA(long ptr)
 @ stdcall GetCurrentDirectoryW(long ptr)
 @ stdcall GetCurrentProcess()
 @ stdcall GetCurrentProcessId()
 @ stdcall GetCurrentProcessorNumber() ntdll.RtlGetCurrentProcessorNumber
+;@ stdcall GetCurrentProcessorNumberEx ntdll.RtlGetCurrentProcessorNumberEx ; Win 7
 @ stdcall GetCurrentThread()
 @ stdcall GetCurrentThreadId()
+;@ stdcall GetCurrentUmsThread
 @ stdcall GetDateFormatA(long long ptr str ptr long)
+;@ stdcall GetDateFormatEx ; Win 7
 @ stdcall GetDateFormatW(long long ptr wstr ptr long)
-@ stub GetDaylightFlag ; missing in XP SP3
+@ stub GetDaylightFlag ; missing in XP SP3 and Win 7
 @ stdcall GetDefaultCommConfigA(str ptr long)
 @ stdcall GetDefaultCommConfigW(wstr ptr long)
-@ stdcall GetDefaultSortkeySize(ptr)
+@ stdcall GetDefaultSortkeySize(ptr) ; missing in Win 7
 @ stdcall GetDevicePowerState(long ptr)
 @ stdcall GetDiskFreeSpaceA(str ptr ptr ptr ptr)
 @ stdcall GetDiskFreeSpaceExA (str ptr ptr ptr)
 @ stdcall GetDllDirectoryW(long ptr)
 @ stdcall GetDriveTypeA(str)
 @ stdcall GetDriveTypeW(wstr)
+;@ stdcall GetDurationFormat ; Win 7
+;@ stdcall GetDurationFormatEx ; Win 7
+;@ stdcall GetDynamicTimeZoneInformation ; Win 7
+;@ stdcall GetEnabledExtendedFeatures api-ms-win-core-xstate-l1-1-0.RtlGetEnabledExtendedFeatures ; Win 7
 @ stdcall GetEnvironmentStrings()
 @ stdcall GetEnvironmentStringsA() GetEnvironmentStrings
 @ stdcall GetEnvironmentStringsW()
 @ stdcall GetEnvironmentVariableA(str ptr long)
 @ stdcall GetEnvironmentVariableW(wstr ptr long)
+;@ stdcall GetEraNameCountedString ; Win 7
 @ stdcall GetErrorMode()
 @ stdcall GetExitCodeProcess(long ptr)
 @ stdcall GetExitCodeThread(long ptr)
 @ stdcall GetExpandedNameA(str ptr)
 @ stdcall GetExpandedNameW(wstr ptr)
+;@ stdcall GetExtendedContextLength ; Win 7
+;@ stdcall GetExtendedFeaturesMask api-ms-win-core-xstate-l1-1-0.RtlGetExtendedFeaturesMask ; Win 7
 @ stdcall GetFileAttributesA(str)
-@ stdcall GetFileAttributesByHandle(long ptr long)
+@ stdcall GetFileAttributesByHandle(long ptr long) ; missing in Win 7
 @ stdcall GetFileAttributesExA(str long ptr)
 @ stdcall GetFileAttributesExW(wstr long ptr)
+;@ stdcall GetFileAttributesTransactedA ; Win 7
+;@ stdcall GetFileAttributesTransactedW ; Win 7
 @ stdcall GetFileAttributesW(wstr)
 @ stdcall GetFileBandwidthReservation(long ptr ptr ptr ptr ptr)
 @ stdcall GetFileInformationByHandle(long ptr)
+;@ stdcall GetFileInformationByHandleEx ; Win 7
+;@ stdcall GetFileMUIInfo ; Win 7
+;@ stdcall GetFileMUIPath ; Win 7
 @ stdcall GetFileSize(long ptr)
 @ stdcall GetFileSizeEx(long ptr)
 @ stdcall GetFileTime(long ptr ptr ptr)
 @ stdcall GetFirmwareEnvironmentVariableA(str str ptr long)
 @ stdcall GetFirmwareEnvironmentVariableW(wstr wstr ptr long)
 @ stdcall GetFullPathNameA(str long ptr ptr)
+;@ stdcall GetFullPathNameTransactedA ; Win 7
+;@ stdcall GetFullPathNameTransactedW ; Win 7
 @ stdcall GetFullPathNameW(wstr long ptr ptr)
 @ stdcall GetGeoInfoA(long long ptr long long)
 @ stdcall GetGeoInfoW(long long ptr long long)
-@ stdcall GetHandleContext(long)
+@ stdcall GetHandleContext(long) ; missing on x64
 @ stdcall GetHandleInformation(long ptr)
-@ stub GetSCallbackTarget ; missing in XP SP3
-@ stub GetSCallbackTemplate ; missing in XP SP3
+@ stub GetSCallbackTarget ; missing in XP SP3 and Win 7
+@ stub GetSCallbackTemplate ; missing in XP SP3 and Win 7
 @ stdcall GetLargePageMinimum()
 @ stdcall GetLargestConsoleWindowSize(long)
 @ stdcall GetLastError() ntdll.RtlGetLastWin32Error
-@ stdcall GetLinguistLangSize(ptr)
+@ stdcall GetLinguistLangSize(ptr) ; missing in Win 7
 @ stdcall GetLocalTime(ptr)
 @ stdcall GetLocaleInfoA(long long ptr long)
+@ stdcall GetLocaleInfoEx(wstr long wstr long) ; Vista+
 @ stdcall GetLocaleInfoW(long long ptr long)
-@ stdcall GetLocaleInfoEx(wstr long wstr long)
 @ stdcall GetLogicalDriveStringsA(long ptr)
 @ stdcall GetLogicalDriveStringsW(long ptr)
 @ stdcall GetLogicalDrives()
 @ stdcall GetLogicalProcessorInformation(ptr ptr)
+;@ stdcall GetLogicalProcessorInformationEx api-ms-win-core-sysinfo-l1-1-0.GetLogicalProcessorInformationEx ; Win 7
 @ stdcall GetLongPathNameA (str long long)
+;@ stdcall GetLongPathNameTransactedA ; Win 7
+;@ stdcall GetLongPathNameTransactedW ; Win 7
 @ stdcall GetLongPathNameW (wstr long long)
 @ stdcall GetMailslotInfo(long ptr ptr ptr ptr)
+;@ stdcall GetMaximumProcessorCount ; Win 7
+;@ stdcall GetMaximumProcessorGroupCount ; Win 7
 @ stdcall GetModuleFileNameA(long ptr long)
 @ stdcall GetModuleFileNameW(long ptr long)
 @ stdcall GetModuleHandleA(str)
 @ stdcall GetModuleHandleExA(long ptr ptr)
 @ stdcall GetModuleHandleExW(long ptr ptr)
 @ stdcall GetModuleHandleW(wstr)
+;@ stdcall GetNLSVersion ; Win 7
+;@ stdcall GetNLSVersionEx ; Win 7
+;@ stdcall GetNamedPipeAttribute ; Win 7
+;@ stdcall GetNamedPipeClientComputerNameA ; Win 7
+;@ stdcall GetNamedPipeClientComputerNameW ; Win 7
+;@ stdcall GetNamedPipeClientProcessId ; Win 7
+;@ stdcall GetNamedPipeClientSessionId ; Win 7
 @ stdcall GetNamedPipeHandleStateA(long ptr ptr ptr ptr str long)
 @ stdcall GetNamedPipeHandleStateW(long ptr ptr ptr ptr wstr long)
 @ stdcall GetNamedPipeInfo(long ptr ptr ptr ptr)
+;@ stdcall GetNamedPipeServerProcessId ; Win 7
+;@ stdcall GetNamedPipeServerSessionId ; Win 7
 @ stdcall GetNativeSystemInfo(ptr)
+;@ stdcall -arch=x86_64 GetNextUmsListItem
 @ stdcall GetNextVDMCommand(long)
-@ stdcall GetNlsSectionName(long long double str str double)
-@ stdcall GetNumaAvailableMemory(ptr double ptr)
+@ stdcall GetNlsSectionName(long long double str str double) ; missing in Win 7
+@ stdcall GetNumaAvailableMemory(ptr double ptr) ; missing in Win 7
 @ stdcall GetNumaAvailableMemoryNode(double ptr)
+;@ stdcall GetNumaAvailableMemoryNodeEx ; Win 7
 @ stdcall GetNumaHighestNodeNumber(ptr)
+;@ stdcall GetNumaNodeNumberFromHandle ; Win 7
 @ stdcall GetNumaNodeProcessorMask(double ptr)
-@ stdcall GetNumaProcessorMap(ptr double ptr)
+;@ stdcall GetNumaNodeProcessorMaskEx ; Win 7
+@ stdcall GetNumaProcessorMap(ptr double ptr) ; missing in Win 7
 @ stdcall GetNumaProcessorNode(double ptr)
+;@ stdcall GetNumaProcessorNodeEx ; Win 7
+;@ stdcall GetNumaProximityNode ; Win 7
+;@ stdcall GetNumaProximityNodeEx ; Win 7
 @ stdcall GetNumberFormatA(long long str ptr ptr long)
+;@ stdcall GetNumberFormatEx ; Win 7
 @ stdcall GetNumberFormatW(long long wstr ptr ptr long)
 @ stdcall GetNumberOfConsoleFonts()
 @ stdcall GetNumberOfConsoleInputEvents(long ptr)
 @ stdcall GetNumberOfConsoleMouseButtons(ptr)
 @ stdcall GetOEMCP()
 @ stdcall GetOverlappedResult(long ptr ptr long)
+;@ stdcall GetPhysicallyInstalledSystemMemory ; Win 7
 @ stdcall GetPriorityClass(long)
 @ stdcall GetPrivateProfileIntA(str str long str)
 @ stdcall GetPrivateProfileIntW(wstr wstr long wstr)
 @ stdcall GetProcAddress(long str)
 @ stdcall GetProcessAffinityMask(long ptr ptr)
 @ stdcall GetProcessFlags(long)
+;@ stdcall GetProcessDEPPolicy ; Win 7
+;@ stdcall GetProcessGroupAffinity ; Win 7
 @ stdcall GetProcessHandleCount(long ptr)
 @ stdcall GetProcessHeap()
 @ stdcall GetProcessHeaps(long ptr)
 @ stdcall GetProcessId(long)
+;@ stdcall GetProcessIdOfThread ; Win 7
 @ stdcall GetProcessIoCounters(long ptr)
+;@ stdcall GetProcessPreferredUILanguages ; Win 7
 @ stdcall GetProcessPriorityBoost(long ptr)
 @ stdcall GetProcessShutdownParameters(ptr ptr)
 @ stdcall GetProcessTimes(long ptr ptr ptr ptr)
 @ stdcall GetProcessVersion(long)
 @ stdcall GetProcessWorkingSetSize(long ptr ptr)
+;@ stdcall GetProcessWorkingSetSizeEx ; Win 7
+;@ stdcall GetProcessorSystemCycleTime ; Win 7
 @ stdcall GetProductInfo(long long long long ptr)
 @ stub GetProductName
 @ stdcall GetProfileIntA(str str long)
 @ stdcall GetProfileStringA(str str str ptr long)
 @ stdcall GetProfileStringW(wstr wstr wstr ptr long)
 @ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long)
-@ stub GetLSCallbackTarget ; missing in XP SP3
-@ stub GetLSCallbackTemplate ; missing in XP SP3
+;@ stdcall GetQueuedCompletionStatusEx ; Win 7
+@ stub GetLSCallbackTarget ; missing in XP SP3 and Win 7
+@ stub GetLSCallbackTemplate ; missing in XP SP3 and Win 7
 @ stdcall GetShortPathNameA(str ptr long)
 @ stdcall GetShortPathNameW(wstr ptr long)
 @ stdcall GetStartupInfoA(ptr)
 @ stdcall GetStartupInfoW(ptr)
 @ stdcall GetStdHandle(long)
+;@ stdcall GetStringScripts ; Win 7
 @ stdcall GetStringTypeA(long long str long ptr)
 @ stdcall GetStringTypeExA(long long str long ptr)
 @ stdcall GetStringTypeExW(long long wstr long ptr)
 @ stdcall GetStringTypeW(long wstr long ptr)
+;@ stdcall GetSystemDEPPolicy ; Win 7
 @ stdcall GetSystemDefaultLCID()
 @ stdcall GetSystemDefaultLangID()
+;@ stdcall GetSystemDefaultLocaleName ; Win 7
 @ stdcall GetSystemDefaultUILanguage()
 @ stdcall GetSystemDirectoryA(ptr long)
 @ stdcall GetSystemDirectoryW(ptr long)
+;@ stdcall GetSystemFileCacheSize ; Win 7
+;@ stdcall GetSystemFirmwareTable ; Win 7
 @ stdcall GetSystemInfo(ptr)
 @ stdcall GetSystemPowerStatus(ptr)
+;@ stdcall GetSystemPreferredUILanguages ; Win 7
 @ stdcall GetSystemRegistryQuota(ptr ptr)
 @ stdcall GetSystemTime(ptr)
 @ stdcall GetSystemTimeAdjustment(ptr ptr ptr)
 @ stdcall GetTempPathW(long ptr)
 @ stdcall GetThreadContext(long ptr)
 @ stdcall GetThreadErrorMode()
-@ stdcall GetThreadId(ptr)
+;@ stdcall GetThreadGroupAffinity ; Win 7
 @ stdcall GetThreadIOPendingFlag(long ptr)
+@ stdcall GetThreadId(ptr)
+;@ stdcall GetThreadIdealProcessorEx ; Win 7
 @ stdcall GetThreadLocale()
+;@ stdcall GetThreadPreferredUILanguages ; Win 7
 @ stdcall GetThreadPriority(long)
 @ stdcall GetThreadPriorityBoost(long ptr)
 @ stdcall GetThreadSelectorEntry(long long ptr)
 @ stdcall GetThreadTimes(long ptr ptr ptr ptr)
+;@ stdcall GetThreadUILanguage ; Win 7
 @ stdcall GetTickCount()
 @ stdcall -ret64 GetTickCount64()
 @ stdcall GetTimeFormatA(long long ptr str ptr long)
+;@ stdcall GetTimeFormatEx ; Win 7
 @ stdcall GetTimeFormatW(long long ptr wstr ptr long)
 @ stdcall GetTimeZoneInformation(ptr)
+;@ stdcall GetTimeZoneInformationForYear ; Win 7
+;@ stdcall GetUILanguageInfo ; Win 7
+;@ stdcall -arch=x86_64 GetUmsCompletionListEvent
 @ stdcall GetUserDefaultLCID()
 @ stdcall GetUserDefaultLangID()
+;@ stdcall GetUserDefaultLocaleName ; Win 7
 @ stdcall GetUserDefaultUILanguage()
 @ stdcall GetUserGeoID(long)
+;@ stdcall GetUserPreferredUILanguages ; Win 7
 @ stdcall GetVDMCurrentDirectories(long long)
 @ stdcall GetVersion()
 @ stdcall GetVersionExA(ptr)
 @ stdcall GetVersionExW(ptr)
 @ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long)
+;@ stdcall GetVolumeInformationByHandleW ; Win 7
 @ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long)
 @ stdcall GetVolumeNameForVolumeMountPointA(str ptr long)
 @ stdcall GetVolumeNameForVolumeMountPointW(wstr ptr long)
 @ stdcall HeapAlloc(long long long) ntdll.RtlAllocateHeap
 @ stdcall HeapCompact(long long)
 @ stdcall HeapCreate(long long long)
-@ stdcall HeapCreateTagsW(long long wstr wstr)
+@ stdcall HeapCreateTagsW(long long wstr wstr) ; missing in Win 7
 @ stdcall HeapDestroy(long)
-@ stdcall HeapExtend(long long ptr long)
+@ stdcall HeapExtend(long long ptr long) ; missing in Win 7
 @ stdcall HeapFree(long long long) ntdll.RtlFreeHeap
 @ stdcall HeapLock(long)
 @ stdcall HeapQueryInformation(long long ptr long ptr)
-@ stdcall HeapQueryTagW(long long long long ptr)
+@ stdcall HeapQueryTagW(long long long long ptr) ; missing in Win 7
 @ stdcall HeapReAlloc(long long ptr long) ntdll.RtlReAllocateHeap
-@ stub HeapSetFlags ; missing in XP SP3
+@ stub HeapSetFlags ; missing in XP SP3 and Win 7
 @ stdcall HeapSetInformation(ptr long ptr long)
 @ stdcall HeapSize(long long ptr) ntdll.RtlSizeHeap
 @ stdcall HeapSummary(long long ptr)
 @ stdcall HeapUnlock(long)
-@ stdcall HeapUsage(long long long long ptr)
+@ stdcall HeapUsage(long long long long ptr) ; missing in Win 7
 @ stdcall HeapValidate(long long ptr)
 @ stdcall HeapWalk(long ptr)
+;@ stdcall IdnToAscii ; Win 7
+;@ stdcall IdnToNameprepUnicode ; Win 7
+;@ stdcall IdnToUnicode ; Win 7
 @ stdcall InitAtomTable(long)
-@ stdcall InitializeCriticalSection(ptr)
+;@ stdcall InitOnceBeginInitialize ; Win 7
+;@ stdcall InitOnceComplete ; Win 7
+;@ stdcall InitOnceExecuteOnce ; Win 7
+;@ stdcall InitOnceInitialize ntdll.RtlRunOnceInitialize ; Win 7
+;@ stdcall InitializeConditionVariable ntdll.RtlInitializeConditionVariable ; Win 7
+@ stdcall InitializeCriticalSection(ptr) ; FIXME: ntdll.RtlInitializeCriticalSection
 @ stdcall InitializeCriticalSectionAndSpinCount(ptr long)
 @ stdcall InitializeCriticalSectionEx(ptr long long)
+;@ stdcall InitializeExtendedContext ; Win 7
+;@ stdcall InitializeProcThreadAttributeList api-ms-win-core-processthreads-l1-1-0.InitializeProcThreadAttributeList ; Win 7
 @ stdcall InitializeSListHead(ptr) ntdll.RtlInitializeSListHead
 @ stdcall InitializeSRWLock(ptr) ntdll.RtlInitializeSRWLock
 @ stdcall -arch=i386 InterlockedCompareExchange (ptr long long)
 @ stdcall -arch=i386 InterlockedIncrement(ptr)
 @ stdcall InterlockedPopEntrySList(ptr) ntdll.RtlInterlockedPopEntrySList
 @ stdcall InterlockedPushEntrySList(ptr ptr) ntdll.RtlInterlockedPushEntrySList
+;@ stdcall InterlockedPushListSList ntdll.RtlInterlockedPushListSList ; Win 7
 @ stdcall InvalidateConsoleDIBits(long long)
-@ stub InvalidateNSCache ; missing in XP SP3
+@ stub InvalidateNSCache ; missing in XP SP3 and Win 7
 @ stdcall IsBadCodePtr(ptr)
 @ stdcall IsBadHugeReadPtr(ptr long)
 @ stdcall IsBadHugeWritePtr(ptr long)
 @ stdcall IsBadStringPtrA(ptr long)
 @ stdcall IsBadStringPtrW(ptr long)
 @ stdcall IsBadWritePtr(ptr long)
+;@ stdcall IsCalendarLeapDay ; Win 7
+;@ stdcall IsCalendarLeapMonth ; Win 7
+;@ stdcall IsCalendarLeapYear ; Win 7
 @ stdcall IsDBCSLeadByte(long)
 @ stdcall IsDBCSLeadByteEx(long long)
 @ stdcall IsDebuggerPresent()
+;@ stdcall IsNLSDefinedString ; Win 7
+;@ stdcall IsNormalizedString ; Win 7
 @ stdcall IsProcessInJob(long long ptr)
 @ stdcall IsProcessorFeaturePresent(long)
 @ stdcall IsSystemResumeAutomatic()
 @ stdcall IsThreadAFiber()
+;@ stdcall IsThreadAFiber ; Win 7
+;@ stdcall IsThreadpoolTimerSet ntdll.TpIsTimerSet ; Win 7
+;@ stdcall IsTimeZoneRedirectionEnabled ; Win 7
+;@ stdcall IsValidCalDateTime ; Win 7
 @ stdcall IsValidCodePage(long)
 @ stdcall IsValidLanguageGroup(long long)
 @ stdcall IsValidLocale(long long)
-@ stdcall IsValidUILanguage(long)
+;@ stdcall IsValidLocaleName ; Win 7
+@ stdcall IsValidUILanguage(long) ; missing in Win 7
 @ stdcall IsWow64Process(ptr ptr)
+;@ stdcall K32EmptyWorkingSet ; Win 7
+;@ stdcall K32EnumDeviceDrivers ; Win 7
+;@ stdcall K32EnumPageFilesA ; Win 7
+;@ stdcall K32EnumPageFilesW ; Win 7
+;@ stdcall K32EnumProcessModules ; Win 7
+;@ stdcall K32EnumProcessModulesEx ; Win 7
+;@ stdcall K32EnumProcesses ; Win 7
+;@ stdcall K32GetDeviceDriverBaseNameA ; Win 7
+;@ stdcall K32GetDeviceDriverBaseNameW ; Win 7
+;@ stdcall K32GetDeviceDriverFileNameA ; Win 7
+;@ stdcall K32GetDeviceDriverFileNameW ; Win 7
+;@ stdcall K32GetMappedFileNameA ; Win 7
+;@ stdcall K32GetMappedFileNameW ; Win 7
+;@ stdcall K32GetModuleBaseNameA ; Win 7
+;@ stdcall K32GetModuleBaseNameW ; Win 7
+;@ stdcall K32GetModuleFileNameExA ; Win 7
+;@ stdcall K32GetModuleFileNameExW ; Win 7
+;@ stdcall K32GetModuleInformation ; Win 7
+;@ stdcall K32GetPerformanceInfo ; Win 7
+;@ stdcall K32GetProcessImageFileNameA ; Win 7
+;@ stdcall K32GetProcessImageFileNameW ; Win 7
+;@ stdcall K32GetProcessMemoryInfo ; Win 7
+;@ stdcall K32GetWsChanges ; Win 7
+;@ stdcall K32GetWsChangesEx ; Win 7
+;@ stdcall K32InitializeProcessForWsWatch ; Win 7
+;@ stdcall K32QueryWorkingSet ; Win 7
+;@ stdcall K32QueryWorkingSetEx ; Win 7
 @ stdcall LCIDToLocaleName(long wstr long long) ; needed for wine gecko; missing in XP SP3
 @ stdcall LCMapStringA(long long str long ptr long)
+;@ stdcall LCMapStringEx ; Win 7
 @ stdcall LCMapStringW(long long wstr long ptr long)
 @ stdcall LZClose(long)
-; @ stub LZCloseFile
+;@ stdcall LZCloseFile ; Win 7
 @ stdcall LZCopy(long long)
-; @ stub LZCreateFileW
+;@ stdcall LZCreateFileW ; Win 7
 @ stdcall LZDone()
 @ stdcall LZInit(long)
 @ stdcall LZOpenFileA(str ptr long)
 @ stdcall LZOpenFileW(wstr ptr long)
-@ stdcall LZRead(long ptr long)
+@ stdcall LZRead(long str long)
 @ stdcall LZSeek(long long long)
 @ stdcall LZStart()
 @ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection
+;@ stdcall LeaveCriticalSectionWhenCallbackReturns ntdll.TpCallbackLeaveCriticalSectionOnCompletion ; Win 7
+;@ stdcall LoadAppInitDlls ; Win 7
 @ stdcall LoadLibraryA(str)
 @ stdcall LoadLibraryExA( str long long)
 @ stdcall LoadLibraryExW(wstr long long)
 @ stdcall LoadLibraryW(wstr)
 @ stdcall LoadModule(str ptr)
 @ stdcall LoadResource(long long)
+;@ stdcall LoadStringBaseExW ; Win 7
+;@ stdcall LoadStringBaseW ; Win 7
 @ stdcall LocalAlloc(long long)
 @ stdcall LocalCompact(long)
 @ stdcall LocalFileTimeToFileTime(ptr ptr)
 @ stdcall LocalSize(long)
 @ stdcall LocalUnlock(long)
 ;@ stub LocaleNameToLCID ; missing in XP SP3
+;@ stdcall LocateExtendedFeature api-ms-win-core-xstate-l1-1-0.RtlLocateExtendedFeature ; Win 7
+;@ stdcall LocateLegacyContext api-ms-win-core-xstate-l1-1-0.RtlLocateLegacyContext ; Win 7
 @ stdcall LockFile(long long long long long)
 @ stdcall LockFileEx(long long long long long ptr)
 @ stdcall LockResource(long)
 @ stdcall MapUserPhysicalPagesScatter(ptr long ptr)
 @ stdcall MapViewOfFile(long long long long long)
 @ stdcall MapViewOfFileEx(long long long long long ptr)
+;@ stdcall MapViewOfFileExNuma ; Win 7
 @ stdcall Module32First(long ptr)
 @ stdcall Module32FirstW(long ptr)
 @ stdcall Module32Next(long ptr)
 @ stdcall MoveFileA(str str)
 @ stdcall MoveFileExA(str str long)
 @ stdcall MoveFileExW(wstr wstr long)
+;@ stdcall MoveFileTransactedA ; Win 7
+;@ stdcall MoveFileTransactedW ; Win 7
 @ stdcall MoveFileW(wstr wstr)
 @ stdcall MoveFileWithProgressA(str str ptr ptr long)
 @ stdcall MoveFileWithProgressW(wstr wstr ptr ptr long)
 @ stdcall MultiByteToWideChar(long long str long ptr long)
 @ stdcall NeedCurrentDirectoryForExePathA(str)
 @ stdcall NeedCurrentDirectoryForExePathW(wstr)
-@ stdcall NlsConvertIntegerToString(double double double wstr double)
+;@ stdcall NlsCheckPolicy ; Win 7
+@ stdcall NlsConvertIntegerToString(double double double wstr double) ; missing in Win 7
+;@ stdcall NlsEventDataDescCreate ; Win 7
 @ stdcall NlsGetCacheUpdateCount()
-@ stub NlsResetProcessLocale ; missing in XP SP3
-@ stub NotifyNLSUserCache ; missing in XP SP3
-@ stdcall NumaVirtualQueryNode(long long long long)
+@ stub NlsResetProcessLocale ; missing in XP SP3 and Win 7
+;@ stdcall NlsUpdateLocale ; Win 7
+;@ stdcall NlsUpdateSystemLocale ; Win 7
+;@ stdcall NlsWriteEtwEvent ; Win 7
+;@ stdcall NormalizeString ; Win 7
+;@ stdcall NotifyMountMgr ; Win 7
+@ stub NotifyNLSUserCache ; missing in XP SP3 and win 7
+;@ stdcall NotifyUILanguageChange ; Win 7
+@ stdcall NumaVirtualQueryNode(long long long long) ; missing in win 7
 @ stdcall OpenConsoleW(wstr long long long)
-@ stdcall OpenDataFile(long long)
+@ stdcall OpenDataFile(long long) ; missing in Win 7
 @ stdcall OpenEventA(long long str)
 @ stdcall OpenEventW(long long wstr)
 @ stdcall OpenFile(str ptr long)
+;@ stdcall OpenFileById ; Win 7
 @ stdcall OpenFileMappingA(long long str)
 @ stdcall OpenFileMappingW(long long wstr)
 @ stdcall OpenJobObjectA(long long str)
 @ stdcall OpenJobObjectW(long long wstr)
 @ stdcall OpenMutexA(long long str)
 @ stdcall OpenMutexW(long long wstr)
+;@ stdcall OpenPrivateNamespaceA ; Win 7
+;@ stdcall OpenPrivateNamespaceW ; Win 7
 @ stdcall OpenProcess(long long long)
+;@ stdcall OpenProcessToken api-ms-win-core-processthreads-l1-1-0.OpenProcessToken ; Win 7
 @ stdcall OpenProfileUserMapping()
 @ stdcall OpenSemaphoreA(long long str)
 @ stdcall OpenSemaphoreW(long long wstr)
 @ stdcall OpenThread(long long long)
+;@ stdcall OpenThreadToken api-ms-win-core-processthreads-l1-1-0.OpenThreadToken ; win 7
 @ stdcall OpenWaitableTimerA(long long str)
 @ stdcall OpenWaitableTimerW(long long wstr)
 @ stdcall OutputDebugStringA(str)
 @ stdcall PeekConsoleInputW(ptr ptr long ptr)
 @ stdcall PeekNamedPipe(long ptr long ptr ptr ptr)
 @ stdcall PostQueuedCompletionStatus(long long ptr ptr)
+;@ stdcall PowerClearRequest ; Win 7
+;@ stdcall PowerCreateRequest ; Win 7
+;@ stdcall PowerSetRequest ; Win 7
 @ stdcall PrepareTape(ptr long long)
 @ stdcall PrivCopyFileExW(wstr wstr ptr ptr long long)
 @ stdcall PrivMoveFileIdentityW(long long long)
 @ stdcall ProcessIdToSessionId(long ptr)
 @ stdcall PulseEvent(long)
 @ stdcall PurgeComm(long long)
+;@ stdcall QueryActCtxSettingsW ; Win 7
+;@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr)
 @ stdcall QueryActCtxW(long ptr ptr long ptr long ptr)
 @ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList
 @ stdcall QueryDosDeviceA(str ptr long)
 @ stdcall QueryDosDeviceW(wstr ptr long)
-@ stdcall QueryFullProcessImageNameA(ptr long ptr ptr)
-@ stdcall QueryFullProcessImageNameW(ptr long ptr ptr)
+@ stdcall QueryFullProcessImageNameA(ptr long str ptr) ; Vista and later
+@ stdcall QueryFullProcessImageNameW(ptr long wstr ptr) ; Vista and later
+;@ stdcall QueryIdleProcessorCycleTime ; Win 7
+;@ stdcall QueryIdleProcessorCycleTimeEx ; Win 7
 @ stdcall QueryInformationJobObject(long long ptr long ptr)
 @ stdcall QueryMemoryResourceNotification(ptr ptr)
-@ stub QueryNumberOfEventLogRecords ; missing in XP SP3
-@ stub QueryOldestEventLogRecord ; missing in XP SP3
+@ stub QueryNumberOfEventLogRecords ; missing in XP SP3 and Win 7
+@ stub QueryOldestEventLogRecord ; missing in XP SP3 and Win 7
 @ stdcall QueryPerformanceCounter(ptr)
 @ stdcall QueryPerformanceFrequency(ptr)
-@ stdcall QueryWin31IniFilesMappedToRegistry(long long long long)
+;@ stdcall QueryProcessAffinityUpdateMode ; Win 7
+;@ stdcall QueryProcessCycleTime ; Win 7
+;@ stdcall QueryThreadCycleTime ; Win 7
+;@ stdcall QueryThreadProfiling ; Win 7
+;@ stdcall QueryThreadpoolStackInformation ; Win 7
+;@ stdcall -arch=x86_64 QueryUmsThreadInformation
+;@ stdcall QueryUnbiasedInterruptTime ; Win 7
+@ stdcall QueryWin31IniFilesMappedToRegistry(long long long long) ; missing in Win 7
 @ stdcall QueueUserAPC(ptr long long)
 @ stdcall QueueUserWorkItem(ptr ptr long)
 @ stdcall RaiseException(long long long ptr)
+;@ stdcall RaiseFailFastException ; Win 7
 @ stub ReOpenFile ;@ stdcall ReOpenFile(ptr long long long)
 @ stdcall ReadConsoleA(long ptr long ptr ptr)
 @ stdcall ReadConsoleInputA(long ptr long ptr)
 @ stdcall ReadFileEx(long ptr long ptr ptr)
 @ stdcall ReadFileScatter(long ptr long ptr ptr)
 @ stdcall ReadProcessMemory(long ptr ptr long ptr)
+;@ stdcall ReadThreadProfilingData ; Win 7
+;@ stdcall RegCloseKey ; Win 7
+;@ stdcall RegCreateKeyExA ; Win 7
+;@ stdcall RegCreateKeyExW ; Win 7
+;@ stdcall RegDeleteKeyExA ; Win 7
+;@ stdcall RegDeleteKeyExW ; Win 7
+;@ stdcall RegDeleteTreeA ; Win 7
+;@ stdcall RegDeleteTreeW ; Win 7
+;@ stdcall RegDeleteValueA ; Win 7
+;@ stdcall RegDeleteValueW ; Win 7
+;@ stdcall RegDisablePredefinedCacheEx ; Win 7
+;@ stdcall RegEnumKeyExA ; Win 7
+;@ stdcall RegEnumKeyExW ; Win 7
+;@ stdcall RegEnumValueA ; Win 7
+;@ stdcall RegEnumValueW ; Win 7
+;@ stdcall RegFlushKey ; Win 7
+;@ stdcall RegGetKeySecurity ; Win 7
+;@ stdcall RegGetValueA ; Win 7
+;@ stdcall RegGetValueW ; Win 7
+;@ stdcall RegKrnGetGlobalState ; Win 7
+;@ stdcall RegKrnInitialize ; Win 7
+;@ stdcall RegLoadKeyA ; Win 7
+;@ stdcall RegLoadKeyW ; Win 7
+;@ stdcall RegLoadMUIStringA ; Win 7
+;@ stdcall RegLoadMUIStringW ; Win 7
+;@ stdcall RegNotifyChangeKeyValue ; Win 7
+;@ stdcall RegOpenCurrentUser ; Win 7
+;@ stdcall RegOpenKeyExA ; Win 7
+;@ stdcall RegOpenKeyExW ; Win 7
+;@ stdcall RegOpenUserClassesRoot ; Win 7
+;@ stdcall RegQueryInfoKeyA ; Win 7
+;@ stdcall RegQueryInfoKeyW ; Win 7
+;@ stdcall RegQueryValueExA ; Win 7
+;@ stdcall RegQueryValueExW ; Win 7
+;@ stdcall RegRestoreKeyA ; Win 7
+;@ stdcall RegRestoreKeyW ; Win 7
+;@ stdcall RegSaveKeyExA ; Win 7
+;@ stdcall RegSaveKeyExW ; Win 7
+;@ stdcall RegSetKeySecurity ; Win 7
+;@ stdcall RegSetValueExA ; Win 7
+;@ stdcall RegSetValueExW ; Win 7
+;@ stdcall RegUnLoadKeyA ; Win 7
+;@ stdcall RegUnLoadKeyW ; Win 7
+;@ stdcall RegisterApplicationRecoveryCallback ; Win 7
 @ stdcall RegisterApplicationRestart(wstr long)
 @ stdcall RegisterConsoleIME(ptr ptr)
 @ stdcall RegisterConsoleOS2(long)
 @ stdcall RegisterConsoleVDM(long long long long long long long long long long long)
-;@ stub RegisterServiceProcess ; missing in XP SP3
-@ stub RegisterSysMsgHandler ; missing in XP SP3
+;@ stub RegisterServiceProcess ; missing in XP SP3 and Win 7
+@ stub RegisterSysMsgHandler ; missing in XP SP3 and win 7
 @ stdcall RegisterWaitForInputIdle(ptr)
 @ stdcall RegisterWaitForSingleObject(ptr long ptr ptr long long)
 @ stdcall RegisterWaitForSingleObjectEx(long ptr ptr long long)
 @ stdcall ReinitializeCriticalSection(ptr)
 @ stdcall ReleaseActCtx(ptr)
 @ stdcall ReleaseMutex(long)
-@ stdcall ReleaseSemaphore(long long ptr)
+;@ stdcall ReleaseMutexWhenCallbackReturns ntdll.TpCallbackReleaseMutexOnCompletion ; Win 7
 @ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive
 @ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared
+@ stdcall ReleaseSemaphore(long long ptr)
+;@ stdcall ReleaseSemaphoreWhenCallbackReturns ntdll.TpCallbackReleaseSemaphoreOnCompletion ; Win 7
 @ stdcall RemoveDirectoryA(str)
+;@ stdcall RemoveDirectoryTransactedA ; Win 7
+;@ stdcall RemoveDirectoryTransactedW ; Win 7
 @ stdcall RemoveDirectoryW(wstr)
 @ stdcall RemoveLocalAlternateComputerNameA(str long)
 @ stdcall RemoveLocalAlternateComputerNameW(wstr long)
+;@ stdcall RemoveSecureMemoryCacheCallback ; Win 7
 @ stdcall RemoveVectoredContinueHandler(ptr) ntdll.RtlRemoveVectoredContinueHandler
 @ stdcall RemoveVectoredExceptionHandler(ptr) ntdll.RtlRemoveVectoredExceptionHandler
 @ stdcall ReplaceFile(wstr wstr wstr long ptr ptr) ReplaceFileW
 @ stdcall ReplaceFileA(str str str long ptr ptr)
 @ stdcall ReplaceFileW(wstr wstr wstr long ptr ptr)
+;@ stdcall ReplacePartitionUnit ; Win 7
 @ stdcall RequestDeviceWakeup(long)
 @ stdcall RequestWakeupLatency(long)
 @ stdcall ResetEvent(long)
 @ stdcall ResetWriteWatch(ptr long)
+;@ stdcall ResolveLocaleName ; Win 7
 @ stdcall RestoreLastError(long) ntdll.RtlRestoreLastWin32Error
 @ stdcall ResumeThread(long)
 @ cdecl -arch=x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable
 @ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr)
 @ stdcall SearchPathA(str str str long ptr ptr)
 @ stdcall SearchPathW(wstr wstr wstr long ptr ptr)
-@ stdcall SetCPGlobal(long)
+@ stdcall SetCPGlobal(long) ; missing in Win 7
 @ stdcall SetCalendarInfoA(long long long str)
 @ stdcall SetCalendarInfoW(long long long wstr)
 @ stdcall SetClientTimeZoneInformation(ptr)
 @ stdcall SetComputerNameW(wstr)
 @ stdcall SetConsoleActiveScreenBuffer(long)
 @ stdcall SetConsoleCP(long)
-@ stub SetConsoleCommandHistoryMode
+@ stdcall SetConsoleCommandHistoryMode(long) ; missing in win 7
 @ stdcall SetConsoleCtrlHandler(ptr long)
 @ stdcall SetConsoleCursor(long long)
 @ stdcall SetConsoleCursorInfo(long ptr)
 @ stdcall SetConsoleOS2OemFormat(long)
 @ stdcall SetConsoleOutputCP(long)
 @ stdcall SetConsolePalette(long long long)
+;@ stdcall SetConsoleScreenBufferInfoEx ; Win 7
 @ stdcall SetConsoleScreenBufferSize(long long)
 @ stdcall SetConsoleTextAttribute(long long)
 @ stdcall SetConsoleTitleA(str)
 @ stdcall SetConsoleTitleW(wstr)
 @ stdcall SetConsoleWindowInfo(long long ptr)
 @ stdcall SetCriticalSectionSpinCount(ptr long) ntdll.RtlSetCriticalSectionSpinCount
+;@ stdcall SetCurrentConsoleFontEx ; Win 7
 @ stdcall SetCurrentDirectoryA(str)
 @ stdcall SetCurrentDirectoryW(wstr)
-@ stub SetDaylightFlag ; missing in XP SP3
+@ stub SetDaylightFlag ; missing in XP SP3 and Win 7
 @ stdcall SetDefaultCommConfigA(str ptr long)
 @ stdcall SetDefaultCommConfigW(wstr ptr long)
 @ stdcall SetDllDirectoryA(str)
 @ stdcall SetDllDirectoryW(wstr)
+;@ stdcall SetDynamicTimeZoneInformation ; Win 7
 @ stdcall SetEndOfFile(long)
+;@ stdcall SetEnvironmentStringsA ; Win 7
+;@ stdcall SetEnvironmentStringsW ; Win 7
 @ stdcall SetEnvironmentVariableA(str str)
 @ stdcall SetEnvironmentVariableW(wstr wstr)
 @ stdcall SetErrorMode(long)
 @ stdcall SetEvent(long)
+;@ stdcall SetEventWhenCallbackReturns ntdll.TpCallbackSetEventOnCompletion ; Win 7
+;@ stdcall SetExtendedFeaturesMask api-ms-win-core-xstate-l1-1-0.RtlSetExtendedFeaturesMask ; Win 7
 @ stdcall SetFileApisToANSI()
 @ stdcall SetFileApisToOEM()
 @ stdcall SetFileAttributesA(str long)
+;@ stdcall SetFileAttributesTransactedA ; Win 7
+;@ stdcall SetFileAttributesTransactedW ; Win 7
 @ stdcall SetFileAttributesW(wstr long)
+;@ stdcall SetFileBandwidthReservation ; Win 7
+;@ stdcall SetFileCompletionNotificationModes ; Win 7
+;@ stdcall SetFileInformationByHandle ; Win 7
+;@ stdcall SetFileIoOverlappedRange ; Win 7
 @ stdcall SetFilePointer(long long ptr long)
 @ stdcall SetFilePointerEx(long double ptr long)
 @ stdcall SetFileShortNameA(long str)
 @ stdcall SetFileValidData(long double)
 @ stdcall SetFirmwareEnvironmentVariableA(str str ptr long)
 @ stdcall SetFirmwareEnvironmentVariableW(wstr wstr ptr long)
-@ stdcall SetHandleContext(long long)
+@ stdcall SetHandleContext(long long) ; missing in Win 7 x64
 @ stdcall SetHandleCount(long)
 @ stdcall SetHandleInformation(long long long)
 @ stdcall SetInformationJobObject(long long ptr long)
 @ stdcall SetLocaleInfoW(long long wstr)
 @ stdcall SetMailslotInfo(long long)
 @ stdcall SetMessageWaitingIndicator(long double)
+;@ stdcall SetNamedPipeAttribute ; Win 7
 @ stdcall SetNamedPipeHandleState(long ptr ptr ptr)
 @ stdcall SetPriorityClass(long long)
 @ stdcall SetProcessAffinityMask(long long)
+;@ stdcall SetProcessAffinityUpdateMode ; Win 7
+;@ stdcall SetProcessDEPPolicy ; Win 7
+;@ stdcall SetProcessPreferredUILanguages ; Win 7
 @ stdcall SetProcessPriorityBoost(long long)
 @ stdcall SetProcessShutdownParameters(long long)
 @ stdcall SetProcessWorkingSetSize(long long long)
+;@ stdcall SetProcessWorkingSetSizeEx ; Win 7
+;@ stdcall SetSearchPathMode ; Win 7
 @ stdcall SetStdHandle(long long)
+;@ stdcall SetStdHandleEx ; Win 7
+;@ stdcall SetSystemFileCacheSize ; Win 7
 @ stdcall SetSystemPowerState(long long)
 @ stdcall SetSystemTime(ptr)
 @ stdcall SetSystemTimeAdjustment(long long)
 @ stdcall SetThreadContext(long ptr)
 @ stdcall SetThreadErrorMode(long ptr)
 @ stdcall SetThreadExecutionState(long)
+;@ stdcall SetThreadGroupAffinity ; Win 7
 @ stdcall SetThreadIdealProcessor(long long)
+;@ stdcall SetThreadIdealProcessorEx ; Win 7
 @ stdcall SetThreadLocale(long)
+;@ stdcall SetThreadPreferredUILanguages ; Win 7
 @ stdcall SetThreadPriority(long long)
 @ stdcall SetThreadPriorityBoost(long long)
+;@ stdcall SetThreadStackGuarantee ; Win 7
+;@ stdcall SetThreadToken api-ms-win-core-processthreads-l1-1-0.SetThreadToken ; Win 7
 @ stdcall SetThreadUILanguage(long)
+;@ stdcall SetThreadpoolStackInformation ; Win 7
+;@ stdcall SetThreadpoolThreadMaximum ntdll.TpSetPoolMaxThreads ; Win 7
+;@ stdcall SetThreadpoolThreadMinimum ; Win 7
+;@ stdcall SetThreadpoolTimer ntdll.TpSetTimer ; Win 7
+;@ stdcall SetThreadpoolWait ntdll.TpSetWait ; Win 7
 @ stdcall SetTimeZoneInformation(ptr)
 @ stdcall SetTimerQueueTimer(long ptr ptr long long long)
+;@ stdcall -arch?x86_64 SetUmsThreadInformation
 @ stdcall SetUnhandledExceptionFilter(ptr)
 @ stdcall SetUserGeoID(long)
 @ stdcall SetVDMCurrentDirectories(long long)
 @ stdcall SetVolumeMountPointA(str str)
 @ stdcall SetVolumeMountPointW(wstr wstr)
 @ stdcall SetWaitableTimer(long ptr long ptr ptr long)
+;@ stdcall SetWaitableTimerEx api-ms-win-core-threadpool-l1-1-0.SetWaitableTimerEx ; Win 7
 @ stdcall SetupComm(long long long)
 @ stdcall ShowConsoleCursor(long long)
 @ stdcall SignalObjectAndWait(long long long long)
 @ stdcall SizeofResource(long long)
 @ stdcall Sleep(long)
+;@ stdcall SleepConditionVariableCS ; Win 7
+;@ stdcall SleepConditionVariableSRW ; Win 7
 @ stdcall SleepEx(long long)
+;@ stdcall SortCloseHandle ; Win 7
+;@ stdcall SortGetHandle ; Win 7
+;@ stdcall StartThreadpoolIo ntdll.TpStartAsyncIoOperation ; Win 7
+;@ stdcall SubmitThreadpoolWork ntdll.TpPostWork ; Win 7
 @ stdcall SuspendThread(long)
 @ stdcall SwitchToFiber(ptr)
 @ stdcall SwitchToThread()
 @ stdcall Thread32First(long ptr)
 @ stdcall Thread32Next(long ptr)
 @ stdcall TlsAlloc()
-@ stub TlsAllocInternal ; missing in XP SP3
+@ stub TlsAllocInternal ; missing in XP SP3 and Win 7
 @ stdcall TlsFree(long)
-@ stub TlsFreeInternal ; missing in XP SP3
+@ stub TlsFreeInternal ; missing in XP SP3 and Win 7
 @ stdcall TlsGetValue(long)
 @ stdcall TlsSetValue(long ptr)
 @ stdcall Toolhelp32ReadProcessMemory(long ptr ptr long ptr)
 @ stdcall TransactNamedPipe(long ptr long ptr long ptr ptr)
 @ stdcall TransmitCommChar(long long)
-@ stdcall TrimVirtualBuffer(ptr)
+@ stdcall TrimVirtualBuffer(ptr) ; missing in Win 7
+;@ stdcall TryAcquireSRWLockExclusive ntdll.RtlTryAcquireSRWLockExclusive ; Win 7
+;@ stdcall TryAcquireSRWLockShared ntdll.RtlTryAcquireSRWLockShared ; Win 7
 @ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection
+;@ stdcall TrySubmitThreadpoolCallback ; Win 7
 @ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr)
 @ stdcall UTRegister(long str str str ptr ptr ptr)
 @ stdcall UTUnRegister(long)
+;@ stdcall -arch=x86_64 UmsThreadYield
 @ stdcall UnhandledExceptionFilter(ptr)
 @ stdcall UninitializeCriticalSection(ptr)
 @ stdcall UnlockFile(long long long long long)
 @ stdcall UnlockFileEx(long long long long ptr)
 @ stdcall UnmapViewOfFile(ptr)
+;@ stdcall UnregisterApplicationRecoveryCallback ; Win 7
+;@ stdcall UnregisterApplicationRestart ; Win 7
 @ stdcall UnregisterConsoleIME()
 @ stdcall UnregisterWait(long)
 @ stdcall UnregisterWaitEx(long long)
+;@ stdcall UpdateCalendarDayOfWeek ; Win 7
+;@ stdcall UpdateProcThreadAttribute api-ms-win-core-processthreads-l1-1-0.UpdateProcThreadAttribute ; Win 7
 @ stdcall UpdateResourceA(long str str long ptr long)
 @ stdcall UpdateResourceW(long wstr wstr long ptr long)
 @ stdcall VDMConsoleOperation(long long)
 @ stdcall VDMOperationStarted(long)
-@ stub ValidateCType ; missing in XP SP3
-@ stub ValidateLocale ; missing in XP SP3
+@ stub ValidateCType ; missing in XP SP3 and Win 7
+@ stub ValidateLocale ; missing in XP SP3 and Win 7
 @ stdcall VerLanguageNameA(long str long)
 @ stdcall VerLanguageNameW(long wstr long)
 @ stdcall -ret64 VerSetConditionMask(long long long long) ntdll.VerSetConditionMask
 @ stdcall VerifyConsoleIoHandle(long)
+;@ stdcall VerifyScripts ; Win 7
 @ stdcall VerifyVersionInfoA(long long double)
 @ stdcall VerifyVersionInfoW(long long double)
 @ stdcall VirtualAlloc(ptr long long long)
 @ stdcall VirtualAllocEx(long ptr long long long)
-@ stdcall VirtualBufferExceptionHandler(long long long)
+;@ stdcall VirtualAllocExNuma ; Win 7
+@ stdcall VirtualBufferExceptionHandler(long long long) ; missing in Win 7
 @ stdcall VirtualFree(ptr long long)
 @ stdcall VirtualFreeEx(long ptr long long)
 @ stdcall VirtualLock(ptr long)
 @ stdcall VirtualQuery(ptr ptr long)
 @ stdcall VirtualQueryEx(long ptr ptr long)
 @ stdcall VirtualUnlock(ptr long)
-@ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable
-@ stdcall WakeConditionVariable(ptr) ntdll.RtlWakeConditionVariable
+;@ stdcall WTSGetActiveConsoleSessionId ; Win 7
 @ stdcall WaitCommEvent(long ptr ptr)
 @ stdcall WaitForDebugEvent(ptr long)
 @ stdcall WaitForMultipleObjects(long ptr long long)
 @ stdcall WaitForMultipleObjectsEx(long ptr long long long)
 @ stdcall WaitForSingleObject(long long)
 @ stdcall WaitForSingleObjectEx(long long long)
+;@ stdcall WaitForThreadpoolIoCallbacks ntdll.TpWaitForIoCompletion ; Win 7
+;@ stdcall WaitForThreadpoolTimerCallbacks ntdll.TpWaitForTimer ; Win 7
+;@ stdcall WaitForThreadpoolWaitCallbacks ntdll.TpWaitForWait ; Win 7
+;@ stdcall WaitForThreadpoolWorkCallbacks ntdll.TpWaitForWork ; Win 7
 @ stdcall WaitNamedPipeA (str long)
 @ stdcall WaitNamedPipeW (wstr long)
+@ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable
+@ stdcall WakeConditionVariable(ptr) ntdll.RtlWakeConditionVariable
+;@ stdcall WerGetFlags ; Win 7
+;@ stdcall WerRegisterFile ; Win 7
+;@ stdcall WerRegisterMemoryBlock ; Win 7
+;@ stdcall WerRegisterRuntimeExceptionModule ; Win 7
+;@ stdcall WerSetFlags ; Win 7
+;@ stdcall WerUnregisterFile ; Win 7
+;@ stdcall WerUnregisterMemoryBlock ; Win 7
+;@ stdcall WerUnregisterRuntimeExceptionModule ; Win 7
+;@ stdcall WerpCleanupMessageMapping ; Win 7
+;@ stdcall WerpInitiateRemoteRecovery ; Win 7
+;@ stdcall WerpNotifyLoadStringResource ; Win 7
+;@ stdcall WerpNotifyLoadStringResourceEx ; Win 7
+;@ stdcall WerpNotifyUseStringResource ; Win 7
+;@ stdcall WerpStringLookup ; Win 7
 @ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr)
 @ stdcall WinExec(str long)
-@ stdcall Wow64EnableWow64FsRedirection(long)
 @ stdcall Wow64DisableWow64FsRedirection(ptr)
+@ stdcall Wow64EnableWow64FsRedirection(long)
+;@ stdcall Wow64GetThreadContext ; Win 7
+;@ stdcall Wow64GetThreadSelectorEntry ; Win 7
 @ stdcall Wow64RevertWow64FsRedirection(ptr)
+;@ stdcall Wow64SetThreadContext ; Win 7
+;@ stdcall Wow64SuspendThread ; Win 7
 @ stdcall WriteConsoleA(long ptr long ptr ptr)
 @ stdcall WriteConsoleInputA(long ptr long ptr)
 @ stdcall WriteConsoleInputVDMA(long long long long)
 @ stdcall WriteProfileStringA(str str str)
 @ stdcall WriteProfileStringW(wstr wstr wstr)
 @ stdcall WriteTapemark(ptr long long long)
-@ stdcall WTSGetActiveConsoleSessionId()
+@ stdcall WTSGetActiveConsoleSessionId() ; missing in win 7
 @ stdcall ZombifyActCtx(ptr)
-@ stub _DebugOut ; missing in XP SP3
-@ stub _DebugPrintf ; missing in XP SP3
+;@ stdcall -arch=x86_64 __C_specific_handler ntdll.__C_specific_handler
+;@ stdcall -arch=x86_64 __chkstk ntdll.__chkstk
+;@ stdcall -arch=x86_64 __misaligned_access ntdll.__misaligned_access
+@ stub _DebugOut ; missing in XP SP3 and Win 7
+@ stub _DebugPrintf ; missing in XP SP3 and Win 7
 @ stdcall _hread(long ptr long)
 @ stdcall _hwrite(long ptr long)
 @ stdcall _lclose(long)
 @ stdcall _lcreat(str long)
 @ stdcall _llseek(long long long)
+;@ stdcall -arch=x86_64 _local_unwind ntdll._local_unwind; Win 7
 @ stdcall _lopen(str long)
 @ stdcall _lread(long ptr long) _hread
 @ stdcall _lwrite(long ptr long) _hwrite
-@ stub dprintf ; missing in XP SP3
+@ stub dprintf ; missing in XP SP3 and Win 7
 @ stdcall lstrcat(str str) lstrcatA
 @ stdcall lstrcatA(str str)
 @ stdcall lstrcatW(wstr wstr)
 @ stdcall lstrlen(str) lstrlenA
 @ stdcall lstrlenA(str)
 @ stdcall lstrlenW(wstr)
+;@ stdcall -arch=x86_64 uaw_lstrcmpW ; Win 7
+;@ stdcall -arch=x86_64 uaw_lstrcmpiW ; Win 7
+;@ stdcall -arch=x86_64 uaw_lstrlenW ; Win 7
+;@ stdcall -arch=x86_64 uaw_wcschr ; Win 7
+;@ stdcall -arch=x86_64 uaw_wcscpy ; Win 7
+;@ stdcall -arch=x86_64 uaw_wcsicmp ; Win 7
+;@ stdcall -arch=x86_64 uaw_wcslen ; Win 7
+;@ stdcall -arch=x86_64 uaw_wcsrchr ; Win 7
 
index 261b7b3..d72472e 100644 (file)
                                <file>thread.S</file>
                        </directory>
                </if>
+               <if property="ARCH" value="amd64">
+                       <directory name="amd64">
+                               <file>fiber.S</file>
+                               <file>thread.S</file>
+                       </directory>
+               </if>
        </directory>
        <directory name="misc">
                <file>icustubs.cpp</file>
index 5247b64..ae0ada2 100644 (file)
@@ -432,6 +432,7 @@ InterlockedDecrement(IN OUT LONG volatile *lpAddend)
     return _InterlockedDecrement(lpAddend);
 }
 
+#undef InterlockedExchange
 LONG
 WINAPI
 InterlockedExchange(IN OUT LONG volatile *Target,
index ab591b1..aafd9e8 100644 (file)
@@ -225,8 +225,8 @@ TH32CreateSnapshotSectionInitialize(DWORD dwFlags,
   HANDLE hSection;
   PTH32SNAPSHOT Snapshot;
   ULONG_PTR DataOffset;
-  ULONG ViewSize, i;
-  ULONG nProcesses = 0, nThreads = 0, nHeaps = 0, nModules = 0;
+  SIZE_T ViewSize;
+  ULONG i, nProcesses = 0, nThreads = 0, nHeaps = 0, nModules = 0;
   ULONG RequiredSnapshotSize = sizeof(TH32SNAPSHOT);
   PRTL_PROCESS_HEAPS hi = NULL;
   PRTL_PROCESS_MODULES mi = NULL;
@@ -670,7 +670,7 @@ Heap32ListFirst(HANDLE hSnapshot, LPHEAPLIST32 lphl)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lphl, sizeof(HEAPLIST32));
@@ -724,7 +724,7 @@ Heap32ListNext(HANDLE hSnapshot, LPHEAPLIST32 lphl)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lphl, sizeof(HEAPLIST32));
@@ -811,7 +811,7 @@ Module32FirstW(HANDLE hSnapshot, LPMODULEENTRY32W lpme)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lpme, sizeof(MODULEENTRY32W));
@@ -898,7 +898,7 @@ Module32NextW(HANDLE hSnapshot, LPMODULEENTRY32W lpme)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lpme, sizeof(MODULEENTRY32W));
@@ -985,7 +985,7 @@ Process32FirstW(HANDLE hSnapshot, LPPROCESSENTRY32W lppe)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lppe, sizeof(PROCESSENTRY32W));
@@ -1074,7 +1074,7 @@ Process32NextW(HANDLE hSnapshot, LPPROCESSENTRY32W lppe)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lppe, sizeof(PROCESSENTRY32W));
@@ -1128,7 +1128,7 @@ Thread32First(HANDLE hSnapshot, LPTHREADENTRY32 lpte)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lpte, sizeof(THREADENTRY32));
@@ -1182,7 +1182,7 @@ Thread32Next(HANDLE hSnapshot, LPTHREADENTRY32 lpte)
 {
   PTH32SNAPSHOT Snapshot;
   LARGE_INTEGER SOffset;
-  ULONG ViewSize;
+  SIZE_T ViewSize;
   NTSTATUS Status;
 
   CHECK_PARAM_SIZE(lpte, sizeof(THREADENTRY32));
@@ -1233,7 +1233,7 @@ Thread32Next(HANDLE hSnapshot, LPTHREADENTRY32 lpte)
 BOOL
 WINAPI
 Toolhelp32ReadProcessMemory(DWORD th32ProcessID,  LPCVOID lpBaseAddress,
-                            LPVOID lpBuffer, DWORD cbRead, LPDWORD lpNumberOfBytesRead)
+                            LPVOID lpBuffer, SIZE_T cbRead, SIZE_T* lpNumberOfBytesRead)
 {
   HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, th32ProcessID);
   if(hProcess != NULL)
index 04fde77..5e2508e 100644 (file)
@@ -11,6 +11,8 @@
 #include <k32.h>
 #ifdef _M_IX86
 #include "i386/ketypes.h"
+#elif defined _M_AMD64
+#include "amd64/ketypes.h"
 #endif
 
 #define NDEBUG
@@ -189,8 +191,8 @@ BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
 NTSTATUS
 WINAPI
 BasepCreateStack(HANDLE hProcess,
-                 ULONG StackReserve,
-                 ULONG StackCommit,
+                 SIZE_T StackReserve,
+                 SIZE_T StackCommit,
                  PINITIAL_TEB InitialTeb)
 {
     NTSTATUS Status;
@@ -290,7 +292,7 @@ BasepCreateStack(HANDLE hProcess,
     /* Create a guard page */
     if (UseGuard)
     {
-        ULONG GuardPageSize = SystemBasicInfo.PageSize;
+        SIZE_T GuardPageSize = SystemBasicInfo.PageSize;
         ULONG Dummy;
         
         /* Attempt maximum space possible */        
@@ -318,7 +320,7 @@ WINAPI
 BasepFreeStack(HANDLE hProcess,
                PINITIAL_TEB InitialTeb)
 {
-    ULONG Dummy = 0;
+    SIZE_T Dummy = 0;
     
     /* Free the Stack */
     NtFreeVirtualMemory(hProcess,
@@ -376,6 +378,44 @@ BasepInitializeContext(IN PCONTEXT Context,
     
     /* Give it some room for the Parameter */
     Context->Esp -= sizeof(PVOID);
+#elif defined(_M_AMD64)
+    DPRINT("BasepInitializeContext: %p\n", Context);
+    
+    /* Setup the Initial Win32 Thread Context */
+    Context->Rax = (ULONG_PTR)StartAddress;
+    Context->Rbx = (ULONG_PTR)Parameter;
+    Context->Rsp = (ULONG_PTR)StackAddress;
+    /* The other registers are undefined */
+
+    /* Setup the Segments */
+    Context->SegGs = KGDT64_R3_DATA | RPL_MASK;
+    Context->SegEs = KGDT64_R3_DATA | RPL_MASK;
+    Context->SegDs = KGDT64_R3_DATA | RPL_MASK;
+    Context->SegCs = KGDT64_R3_CODE | RPL_MASK;
+    Context->SegSs = KGDT64_R3_DATA | RPL_MASK;
+    Context->SegFs = KGDT64_R3_CMTEB | RPL_MASK;
+
+    /* Set the EFLAGS */
+    Context->EFlags = 0x3000; /* IOPL 3 */
+
+    if (ContextType == 1)      /* For Threads */
+    {
+        Context->Rip = (ULONG_PTR)BaseThreadStartupThunk;
+    }
+    else if (ContextType == 2) /* For Fibers */
+    {
+        Context->Rip = (ULONG_PTR)BaseFiberStartup;
+    }
+    else                       /* For first thread in a Process */
+    {
+        Context->Rip = (ULONG_PTR)BaseProcessStartThunk;
+    }
+    
+    /* Set the Context Flags */
+    Context->ContextFlags = CONTEXT_FULL;
+    
+    /* Give it some room for the Parameter */
+    Context->Rsp -= sizeof(PVOID);
 #else
 #warning Unknown architecture
     UNIMPLEMENTED;
index 6affdf8..ea9a23e 100644 (file)
@@ -36,8 +36,8 @@ RegisterWaitForInputIdle(WaitForInputIdleType lpfnRegisterWaitForInputIdle);
 BOOL
 WINAPI
 GetProcessAffinityMask(HANDLE hProcess,
-                       LPDWORD lpProcessAffinityMask,
-                       LPDWORD lpSystemAffinityMask)
+                       PDWORD_PTR lpProcessAffinityMask,
+                       PDWORD_PTR lpSystemAffinityMask)
 {
     PROCESS_BASIC_INFORMATION ProcessInfo;
     SYSTEM_BASIC_INFORMATION SystemInfo;
@@ -77,7 +77,7 @@ GetProcessAffinityMask(HANDLE hProcess,
 BOOL
 WINAPI
 SetProcessAffinityMask(HANDLE hProcess,
-                       DWORD dwProcessAffinityMask)
+                       DWORD_PTR dwProcessAffinityMask)
 {
     NTSTATUS Status;
 
@@ -284,7 +284,7 @@ DWORD
 WINAPI
 GetCurrentProcessId(VOID)
 {
-    return (DWORD)GetTeb()->ClientId.UniqueProcess;
+    return HandleToUlong(GetTeb()->ClientId.UniqueProcess);
 }
 
 
@@ -355,7 +355,7 @@ OpenProcess(DWORD dwDesiredAccess,
     OBJECT_ATTRIBUTES ObjectAttributes;
     CLIENT_ID ClientId;
 
-    ClientId.UniqueProcess = (HANDLE)dwProcessId;
+    ClientId.UniqueProcess = UlongToHandle(dwProcessId);
     ClientId.UniqueThread = 0;
 
     InitializeObjectAttributes(&ObjectAttributes,
@@ -559,7 +559,7 @@ BOOL
 WINAPI
 FlushInstructionCache(HANDLE hProcess,
                       LPCVOID lpBaseAddress,
-                      DWORD dwSize)
+                      SIZE_T dwSize)
 {
     NTSTATUS Status;
 
index 274d882..2e45bbc 100644 (file)
@@ -325,7 +325,7 @@ BasepDuplicateAndWriteHandle(IN HANDLE ProcessHandle,
 {
     NTSTATUS Status;
     HANDLE DuplicatedHandle;
-    ULONG Dummy;
+    SIZE_T Dummy;
 
     DPRINT("BasepDuplicateAndWriteHandle. hProcess: %lx, Handle: %lx,"
            "Address: %p\n", ProcessHandle, StandardHandle, Address);
index b006e3c..5df4c98 100644 (file)
@@ -73,7 +73,7 @@ ProcessIdToSessionId(IN DWORD dwProcessId,
         return FALSE;
     }
 
-    ClientId.UniqueProcess = (HANDLE)dwProcessId;
+    ClientId.UniqueProcess = UlongToHandle(dwProcessId);
     ClientId.UniqueThread = 0;
 
     InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
diff --git a/reactos/dll/win32/kernel32/thread/amd64/fiber.S b/reactos/dll/win32/kernel32/thread/amd64/fiber.S
new file mode 100644 (file)
index 0000000..984447a
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS system libraries
+ * FILE:        lib/kernel32/thread/i386/fiber.S
+ * PURPOSE:     Fiber context switch code for the x86 architecture
+ * PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
+ *              KJK::Hyperion <noog@libero.it>
+ */
+
+#include <ndk/asm.h>
+
+.globl SwitchToFiber
+.intel_syntax noprefix
+
+SwitchToFiber:
+    /* FIXME: TODO */
+    ret 4
diff --git a/reactos/dll/win32/kernel32/thread/amd64/thread.S b/reactos/dll/win32/kernel32/thread/amd64/thread.S
new file mode 100644 (file)
index 0000000..2c0c226
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * COPYRIGHT:  See COPYING in the top level directory
+ * PROJECT:    ReactOS system libraries
+ * FILE:       lib/kernel32/thread/i386/thread.S
+ * PURPOSE:    Thread Start Thunks
+ * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
+ */
+
+.globl BaseThreadStartupThunk
+.globl BaseProcessStartThunk
+.intel_syntax noprefix
+
+BaseThreadStartupThunk:
+    
+    /* Start out fresh */
+    xor rbp, rbp
+    
+    push rbx                  /* lpParameter */
+    push rax                  /* lpStartAddress */
+    push 0                    /* Return RIP */
+    jmp BaseThreadStartup
+
+BaseProcessStartThunk:
+
+    /* Start out fresh */
+    xor rbp, rbp
+    
+    push rax                  /* lpStartAddress */
+    push 0                    /* Return RIP */
+    jmp BaseProcessStartup
+
+/* EOF */
index 6ba2016..e815d0b 100644 (file)
@@ -258,6 +258,13 @@ BaseFiberStartup(VOID)
     DPRINT("Starting Fiber\n");
     BaseThreadStartup((LPTHREAD_START_ROUTINE)Fiber->Context.Eax,
                       (LPVOID)Fiber->Context.Ebx);
+#elif defined(_M_AMD64)
+    PFIBER Fiber = GetFiberData();
+
+    /* Call the Thread Startup Routine */
+    DPRINT1("Starting Fiber\n");
+    BaseThreadStartup((LPTHREAD_START_ROUTINE)Fiber->Context.Rax,
+                      (LPVOID)Fiber->Context.Rbx);
 #else
 #warning Unknown architecture
     UNIMPLEMENTED;
index 98940d5..055342a 100644 (file)
@@ -232,7 +232,7 @@ CreateRemoteThread(HANDLE hProcess,
     }
     
     /* Success */
-    if(lpThreadId) *lpThreadId = (DWORD)ClientId.UniqueThread;
+    if(lpThreadId) *lpThreadId = HandleToUlong(ClientId.UniqueThread);
 
     /* Resume it if asked */
     if (!(dwCreationFlags & CREATE_SUSPENDED))
@@ -344,7 +344,7 @@ DWORD
 WINAPI
 GetCurrentThreadId(VOID)
 {
-    return (DWORD)(NtCurrentTeb()->ClientId).UniqueThread;
+    return HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread);
 }
 
 /*
@@ -684,6 +684,7 @@ GetThreadSelectorEntry(IN HANDLE hThread,
                        IN DWORD dwSelector,
                        OUT LPLDT_ENTRY lpSelectorEntry)
 {
+#ifdef _M_IX86
     DESCRIPTOR_TABLE_ENTRY DescriptionTableEntry;
     NTSTATUS Status;
 
@@ -704,6 +705,10 @@ GetThreadSelectorEntry(IN HANDLE hThread,
     /* Success, return the selector */
     *lpSelectorEntry = DescriptionTableEntry.Descriptor;
     return TRUE;
+#else
+    DPRINT1("Calling GetThreadSelectorEntry!\n");
+    return FALSE;
+#endif
 }
 
 /*
@@ -749,7 +754,7 @@ GetProcessIdOfThread(HANDLE Thread)
     return 0;
   }
 
-  return (DWORD)ThreadBasic.ClientId.UniqueProcess;
+  return HandleToUlong(ThreadBasic.ClientId.UniqueProcess);
 }
 
 /*
@@ -772,7 +777,7 @@ GetThreadId(HANDLE Thread)
     return 0;
   }
 
-  return (DWORD)ThreadBasic.ClientId.UniqueThread;
+  return HandleToUlong(ThreadBasic.ClientId.UniqueThread);
 }
 
 /*