From 0c8a13f783842287aac1b6896881c97ae276728f Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Mon, 31 Jan 2011 21:50:16 +0000 Subject: [PATCH 01/23] [ROSTESTS] Add mmixer_test to cmake build. svn path=/trunk/; revision=50582 --- rostests/tests/CMakeLists.txt | 1 + rostests/tests/mmixer_test/CMakeLists.txt | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 rostests/tests/mmixer_test/CMakeLists.txt diff --git a/rostests/tests/CMakeLists.txt b/rostests/tests/CMakeLists.txt index a63de35ab38..6b2fdd7d7a3 100644 --- a/rostests/tests/CMakeLists.txt +++ b/rostests/tests/CMakeLists.txt @@ -1 +1,2 @@ +add_subdirectory(mmixer_test) add_subdirectory(pseh2) diff --git a/rostests/tests/mmixer_test/CMakeLists.txt b/rostests/tests/mmixer_test/CMakeLists.txt new file mode 100644 index 00000000000..1c29ff2db60 --- /dev/null +++ b/rostests/tests/mmixer_test/CMakeLists.txt @@ -0,0 +1,11 @@ + +add_definitions(-D_DLL -D__USE_CRTIMP) + +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/sound) +include_directories(${REACTOS_SOURCE_DIR}/lib/drivers/sound/mmixer) + +add_executable(mmixer_test test.c) +set_module_type(mmixer_test win32cui) + +target_link_libraries(mmixer_test mmixer) +add_importlibs(mmixer_test advapi32 setupapi winmm ksuser user32 kernel32 msvcrt) \ No newline at end of file From 960f3508192948979ea24ced13125d0691425905 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Thu, 3 Feb 2011 09:34:59 +0000 Subject: [PATCH 02/23] [AUDIO] - Add i/o completion routine, which delivers the number of bytes written / read - Close event handle, after the overlapped request has been handled. - Audio stack no longer leaks ~ 50 event handles per second svn path=/trunk/; revision=50600 --- reactos/dll/win32/wdmaud.drv/legacy.c | 69 ++++++++++++++----- reactos/dll/win32/wdmaud.drv/mixer.c | 4 +- reactos/include/reactos/libs/sound/mmebuddy.h | 2 +- 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/reactos/dll/win32/wdmaud.drv/legacy.c b/reactos/dll/win32/wdmaud.drv/legacy.c index 45007d81164..0c05fabbb0e 100644 --- a/reactos/dll/win32/wdmaud.drv/legacy.c +++ b/reactos/dll/win32/wdmaud.drv/legacy.c @@ -544,6 +544,25 @@ WdmAudSetWaveDeviceFormatByLegacy( return MMSYSERR_NOERROR; } +VOID +CALLBACK +LegacyCompletionRoutine( + IN DWORD dwErrorCode, + IN DWORD dwNumberOfBytesTransferred, + IN LPOVERLAPPED lpOverlapped) +{ + PSOUND_OVERLAPPED Overlap; + PWDMAUD_DEVICE_INFO DeviceInfo; + + Overlap = (PSOUND_OVERLAPPED)lpOverlapped; + DeviceInfo = (PWDMAUD_DEVICE_INFO)Overlap->CompletionContext; + + /* Call mmebuddy overlap routine */ + Overlap->OriginalCompletionRoutine(dwErrorCode, DeviceInfo->Header.DataUsed, lpOverlapped); + + HeapFree(GetProcessHeap(), 0, DeviceInfo); +} + MMRESULT WdmAudCommitWaveBufferByLegacy( IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance, @@ -554,7 +573,7 @@ WdmAudCommitWaveBufferByLegacy( { HANDLE Handle; MMRESULT Result; - WDMAUD_DEVICE_INFO DeviceInfo; + PWDMAUD_DEVICE_INFO DeviceInfo; PSOUND_DEVICE SoundDevice; MMDEVICE_TYPE DeviceType; BOOL Ret; @@ -577,37 +596,53 @@ WdmAudCommitWaveBufferByLegacy( Result = GetSoundDeviceType(SoundDevice, &DeviceType); SND_ASSERT( Result == MMSYSERR_NOERROR ); - ZeroMemory(&DeviceInfo, sizeof(WDMAUD_DEVICE_INFO)); - - DeviceInfo.Header.FrameExtent = Length; - if (DeviceType == WAVE_OUT_DEVICE_TYPE) + DeviceInfo = (PWDMAUD_DEVICE_INFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WDMAUD_DEVICE_INFO)); + if (!DeviceInfo) { - DeviceInfo.Header.DataUsed = Length; + // no memory + return MMSYSERR_NOMEM; } - DeviceInfo.Header.Data = OffsetPtr; - DeviceInfo.Header.Size = sizeof(WDMAUD_DEVICE_INFO); - DeviceInfo.Header.PresentationTime.Numerator = 1; - DeviceInfo.Header.PresentationTime.Denominator = 1; - DeviceInfo.hDevice = Handle; - DeviceInfo.DeviceType = DeviceType; - + + DeviceInfo->Header.FrameExtent = Length; + if (DeviceType == WAVE_OUT_DEVICE_TYPE) + { + DeviceInfo->Header.DataUsed = Length; + } + DeviceInfo->Header.Data = OffsetPtr; + DeviceInfo->Header.Size = sizeof(WDMAUD_DEVICE_INFO); + DeviceInfo->Header.PresentationTime.Numerator = 1; + DeviceInfo->Header.PresentationTime.Denominator = 1; + DeviceInfo->hDevice = Handle; + DeviceInfo->DeviceType = DeviceType; + // create completion event Overlap->Standard.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL); + if (Overlap->Standard.hEvent == NULL) + { + // no memory + return MMSYSERR_NOMEM; + } + + Overlap->OriginalCompletionRoutine = CompletionRoutine; + Overlap->CompletionContext = (PVOID)DeviceInfo; if (DeviceType == WAVE_OUT_DEVICE_TYPE) { - Ret = WriteFileEx(KernelHandle, &DeviceInfo, sizeof(WDMAUD_DEVICE_INFO), (LPOVERLAPPED)Overlap, CompletionRoutine); + Ret = WriteFileEx(KernelHandle, DeviceInfo, sizeof(WDMAUD_DEVICE_INFO), (LPOVERLAPPED)Overlap, LegacyCompletionRoutine); if (Ret) WaitForSingleObjectEx (KernelHandle, INFINITE, TRUE); } else if (DeviceType == WAVE_IN_DEVICE_TYPE) { - Ret = ReadFileEx(KernelHandle, &DeviceInfo, sizeof(WDMAUD_DEVICE_INFO), (LPOVERLAPPED)Overlap, CompletionRoutine); - //if (Ret) - // WaitForSingleObjectEx (KernelHandle, INFINITE, TRUE); + Ret = ReadFileEx(KernelHandle, DeviceInfo, sizeof(WDMAUD_DEVICE_INFO), (LPOVERLAPPED)Overlap, LegacyCompletionRoutine); + if (Ret) + WaitForSingleObjectEx (KernelHandle, INFINITE, TRUE); } + // close event handle + CloseHandle(Overlap->Standard.hEvent); + return MMSYSERR_NOERROR; } diff --git a/reactos/dll/win32/wdmaud.drv/mixer.c b/reactos/dll/win32/wdmaud.drv/mixer.c index ec41ef2d832..8aa9b835b95 100644 --- a/reactos/dll/win32/wdmaud.drv/mixer.c +++ b/reactos/dll/win32/wdmaud.drv/mixer.c @@ -421,7 +421,7 @@ MixerCompletionRoutine( PSOUND_OVERLAPPED Overlap = (PSOUND_OVERLAPPED)lpOverlapped; /* Call mmebuddy overlap routine */ - Overlap->OriginalCompletionRoutine(dwErrorCode, Overlap->OriginalBufferSize, lpOverlapped); + Overlap->OriginalCompletionRoutine(dwErrorCode, PtrToUlong(Overlap->CompletionContext), lpOverlapped); } MMRESULT @@ -527,7 +527,7 @@ WriteFileEx_Remixer( DeviceInfo.Header.PresentationTime.Numerator = 1; DeviceInfo.Header.PresentationTime.Denominator = 1; - Overlap->OriginalBufferSize = Length; + Overlap->CompletionContext = UlongToPtr(Length); Overlap->OriginalCompletionRoutine = CompletionRoutine; Overlap->Standard.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL); diff --git a/reactos/include/reactos/libs/sound/mmebuddy.h b/reactos/include/reactos/libs/sound/mmebuddy.h index 1cc7f52db4f..90b89ef1198 100644 --- a/reactos/include/reactos/libs/sound/mmebuddy.h +++ b/reactos/include/reactos/libs/sound/mmebuddy.h @@ -185,8 +185,8 @@ typedef struct _SOUND_OVERLAPPED PWAVEHDR Header; BOOL PerformCompletion; - DWORD OriginalBufferSize; LPOVERLAPPED_COMPLETION_ROUTINE OriginalCompletionRoutine; + PVOID CompletionContext; } SOUND_OVERLAPPED, *PSOUND_OVERLAPPED; From 8fc76c66ea9db957ad09b358a60ea1b5a2638a84 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Thu, 3 Feb 2011 17:17:18 +0000 Subject: [PATCH 03/23] [PORTCLS] - Try fix msvc issues for cmake branch svn path=/trunk/; revision=50601 --- .../wdm/audio/backpln/portcls/miniport_dmus.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp b/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp index 7d40c68b37d..cb7b04da157 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp @@ -181,9 +181,9 @@ public: * Friends */ friend class CMiniportDMusUARTStream; - friend NTSTATUS + friend NTSTATUS NTAPI DMusMPUInterruptServiceRoutine(PINTERRUPTSYNC InterruptSync,PVOID DynamicContext); - friend NTSTATUS + friend NTSTATUS NTAPI SynchronizedDMusMPUWrite(PINTERRUPTSYNC InterruptSync,PVOID syncWriteContext); friend VOID NTAPI DMusUARTTimerDPC(PKDPC Dpc,PVOID DeferredContext,PVOID SystemArgument1,PVOID SystemArgument2); @@ -861,6 +861,7 @@ Write * Writes outgoing MIDI data. */ NTSTATUS +NTAPI SynchronizedDMusMPUWrite ( IN PINTERRUPTSYNC InterruptSync, @@ -1132,6 +1133,7 @@ CMiniportDMusUARTStream::SourceEvtsToPort() * ISR. */ NTSTATUS +NTAPI DMusMPUInterruptServiceRoutine ( IN PINTERRUPTSYNC InterruptSync, @@ -2458,7 +2460,9 @@ DMusUARTTimerDPC const WCHAR wszDescOut[] = L"DMusic MPU-401 Out "; const WCHAR wszDescIn[] = L"DMusic MPU-401 In "; -NTSTATUS PropertyHandler_Synth +NTSTATUS +NTAPI +PropertyHandler_Synth ( IN PPCPROPERTY_REQUEST pRequest ) From 81b68c76fcf8c7c60853cd01776ca8a6f074cb00 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 3 Feb 2011 18:21:19 +0000 Subject: [PATCH 04/23] [PORTCLS] - Fix more msvc issues. svn path=/trunk/; revision=50602 --- reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp b/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp index cb7b04da157..92eae0f9899 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp @@ -278,7 +278,7 @@ public: IN PVOID SystemArgument1, IN PVOID SystemArgument2 ); - friend NTSTATUS PropertyHandler_Synth(IN PPCPROPERTY_REQUEST); + friend NTSTATUS NTAPI PropertyHandler_Synth(IN PPCPROPERTY_REQUEST); friend STDMETHODIMP_(NTSTATUS) SnapTimeStamp(PINTERRUPTSYNC InterruptSync,PVOID pStream); }; @@ -692,6 +692,7 @@ NTSTATUS CMiniportDMusUART::InitializeHardware(PINTERRUPTSYNC interruptSync,PUCH * Synchronized routine to initialize the MPU401. */ NTSTATUS +NTAPI InitMPU ( IN PINTERRUPTSYNC InterruptSync, From 66cff693af815344840dbcb672e71e801cac85ed Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 3 Feb 2011 19:25:09 +0000 Subject: [PATCH 05/23] [WIN32K] Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. svn path=/trunk/; revision=50604 --- .../subsystems/win32/win32k/objects/gdiobj.c | 81 +++++++++---------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/gdiobj.c b/reactos/subsystems/win32/win32k/objects/gdiobj.c index 55a805b6dfc..beeee0a7cdf 100644 --- a/reactos/subsystems/win32/win32k/objects/gdiobj.c +++ b/reactos/subsystems/win32/win32k/objects/gdiobj.c @@ -272,64 +272,51 @@ ULONG FASTCALL InterlockedPopFreeEntry(VOID) { - ULONG idxFirst, idxNext, idxPrev; + ULONG iFirst, iNext, iPrev; PGDI_TABLE_ENTRY pEntry; - DWORD PrevProcId; DPRINT("Enter InterLockedPopFreeEntry\n"); - while (TRUE) + do { - idxFirst = GdiHandleTable->FirstFree; + /* Get the index and sequence number of the first free entry */ + iFirst = GdiHandleTable->FirstFree; - if (!idxFirst) + /* Check if we have a free entry */ + if (!(iFirst & GDI_HANDLE_INDEX_MASK)) { /* Increment FirstUnused and get the new index */ - idxFirst = InterlockedIncrement((LONG*)&GdiHandleTable->FirstUnused) - 1; + iFirst = InterlockedIncrement((LONG*)&GdiHandleTable->FirstUnused) - 1; - /* Check if we have entries left */ - if (idxFirst >= GDI_HANDLE_COUNT) + /* Check if we have unused entries left */ + if (iFirst >= GDI_HANDLE_COUNT) { DPRINT1("No more gdi handles left!\n"); return 0; } /* Return the old index */ - return idxFirst; + return iFirst; } /* Get a pointer to the first free entry */ - pEntry = GdiHandleTable->Entries + idxFirst; + pEntry = GdiHandleTable->Entries + (iFirst & GDI_HANDLE_INDEX_MASK); - /* Try to lock the entry */ - PrevProcId = InterlockedCompareExchange((LONG*)&pEntry->ProcessId, 1, 0); - if (PrevProcId != 0) - { - /* The entry was locked or not free, wait and start over */ - DelayExecution(); - continue; - } - - /* Sanity check: is entry really free? */ - ASSERT(((ULONG_PTR)pEntry->KernelData & ~GDI_HANDLE_INDEX_MASK) == 0); + /* Create a new value with an increased sequence number */ + iNext = (USHORT)(ULONG_PTR)pEntry->KernelData; + iNext |= (iFirst & ~GDI_HANDLE_INDEX_MASK) + 0x10000; /* Try to exchange the FirstFree value */ - idxNext = (ULONG_PTR)pEntry->KernelData; - idxPrev = InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, - idxNext, - idxFirst); - - /* Unlock the free entry */ - (void)InterlockedExchange((LONG*)&pEntry->ProcessId, 0); - - /* If we succeeded, break out of the loop */ - if (idxPrev == idxFirst) - { - break; - } + iPrev = InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, + iNext, + iFirst); } + while (iPrev != iFirst); - return idxFirst; + /* Sanity check: is entry really free? */ + ASSERT(((ULONG_PTR)pEntry->KernelData & ~GDI_HANDLE_INDEX_MASK) == 0); + + return iFirst & GDI_HANDLE_INDEX_MASK; } /* Pushes an entry of the handle table to the free list, @@ -338,7 +325,7 @@ VOID FASTCALL InterlockedPushFreeEntry(ULONG idxToFree) { - ULONG idxFirstFree, idxPrev; + ULONG iToFree, iFirst, iPrev; PGDI_TABLE_ENTRY pFreeEntry; DPRINT("Enter InterlockedPushFreeEntry\n"); @@ -346,18 +333,26 @@ InterlockedPushFreeEntry(ULONG idxToFree) pFreeEntry = GdiHandleTable->Entries + idxToFree; ASSERT((pFreeEntry->Type & GDI_ENTRY_BASETYPE_MASK) == 0); ASSERT(pFreeEntry->ProcessId == 0); - pFreeEntry->UserData = NULL; + pFreeEntry->UserData = NULL; // FIXME + ASSERT(pFreeEntry->UserData == NULL); do { - idxFirstFree = GdiHandleTable->FirstFree; - pFreeEntry->KernelData = (PVOID)(ULONG_PTR)idxFirstFree; + /* Get the current first free index and sequence number */ + iFirst = GdiHandleTable->FirstFree; - idxPrev = InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, - idxToFree, - idxFirstFree); + /* Set the KernelData member to the index of the first free entry */ + pFreeEntry->KernelData = UlongToPtr(iFirst & GDI_HANDLE_INDEX_MASK); + + /* Combine new index and increased sequence number in iToFree */ + iToFree = idxToFree | ((iFirst & ~GDI_HANDLE_INDEX_MASK) + 0x10000); + + /* Try to atomically update the first free entry */ + iPrev = InterlockedCompareExchange((LONG*)&GdiHandleTable->FirstFree, + iToFree, + iFirst); } - while (idxPrev != idxFirstFree); + while (iPrev != iFirst); } From 92d036f574ef30f209d3517c7419e76ab380ac56 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 4 Feb 2011 13:53:49 +0000 Subject: [PATCH 06/23] [WIN32K] Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. Fixes bug 2372 svn path=/trunk/; revision=50605 --- reactos/subsystems/win32/win32k/eng/xlate.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/subsystems/win32/win32k/eng/xlate.c b/reactos/subsystems/win32/win32k/eng/xlate.c index ce2b90a8a58..f6aa48cd5fe 100644 --- a/reactos/subsystems/win32/win32k/eng/xlate.c +++ b/reactos/subsystems/win32/win32k/eng/xlate.c @@ -91,7 +91,7 @@ EXLATEOBJ_iXlateRGBto555(PEXLATEOBJ pxlo, ULONG iColor) iColor >>= 13; iNewColor |= iColor & 0x3E0; - /* Copy green */ + /* Copy blue */ iColor >>= 13; iNewColor |= iColor & 0x1F; @@ -417,11 +417,11 @@ EXLATEOBJ_vInitialize( pexlo->aulXlate[0] = PALETTE_ulGetNearestPaletteIndex(ppalSrc, crSrcBackColor); } - else if (ppalSrc->flFlags & PAL_BGR) + else if (ppalSrc->flFlags & PAL_RGB) { pexlo->aulXlate[0] = crSrcBackColor; } - else if (ppalSrc->flFlags & PAL_RGB) + else if (ppalSrc->flFlags & PAL_BGR) { pexlo->aulXlate[0] = RGB(GetBValue(crSrcBackColor), GetGValue(crSrcBackColor), From 32bd053438f84a773303b38cb9691d3451ff860e Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 4 Feb 2011 23:19:00 +0000 Subject: [PATCH 07/23] [NTOS] Try to fix a winetst crash. svn path=/trunk/; revision=50607 --- reactos/ntoskrnl/mm/section.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index 6be64326ac7..aa092adf41d 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -690,9 +690,6 @@ l_ReadHeaderFromFile: DIE(("The image is larger than 4GB\n")); } - /* spare our caller some work in validating the segments */ - *Flags = EXEFMT_LOAD_ASSUME_SEGMENTS_SORTED | EXEFMT_LOAD_ASSUME_SEGMENTS_NO_OVERLAP; - if(nSectionAlignment >= PAGE_SIZE) *Flags |= EXEFMT_LOAD_ASSUME_SEGMENTS_PAGE_ALIGNED; From 0b0d97cc9224606df2cd6f9afd353a15b145d30f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Sat, 5 Feb 2011 16:00:11 +0000 Subject: [PATCH 08/23] [SYSSETUP] SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service Add debug prints to help tracking down the "EnableUserModePnpManager()" issue svn path=/trunk/; revision=50609 --- reactos/dll/win32/syssetup/install.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/syssetup/install.c b/reactos/dll/win32/syssetup/install.c index adf909ada4c..feb2136abf8 100644 --- a/reactos/dll/win32/syssetup/install.c +++ b/reactos/dll/win32/syssetup/install.c @@ -477,15 +477,21 @@ EnableUserModePnpManager(VOID) SC_HANDLE hService = NULL; BOOL ret = FALSE; - hSCManager = OpenSCManager(NULL, NULL, 0); + hSCManager = OpenSCManagerW(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE); if (hSCManager == NULL) + { + DPRINT1("Unable to open the service control manager.\n"); goto cleanup; + } hService = OpenServiceW(hSCManager, L"PlugPlay", SERVICE_CHANGE_CONFIG | SERVICE_START); if (hService == NULL) + { + DPRINT1("Unable to open PlugPlay service\n"); goto cleanup; + } ret = ChangeServiceConfigW(hService, SERVICE_NO_CHANGE, @@ -494,11 +500,17 @@ EnableUserModePnpManager(VOID) NULL, NULL, NULL, NULL, NULL, NULL, NULL); if (!ret) + { + DPRINT1("Unable to change the service configuration\n"); goto cleanup; + } ret = StartServiceW(hService, 0, NULL); if (!ret) + { + DPRINT("Unable to start service\n"); goto cleanup; + } ret = TRUE; From d3bca39b111495bb0419894f3a66a6b6cc5fb507 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 5 Feb 2011 21:58:19 +0000 Subject: [PATCH 09/23] [SETUPAPI] Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. svn path=/trunk/; revision=50610 --- reactos/dll/win32/setupapi/cfgmgr.c | 55 ++++++++++++++++++++++++ reactos/dll/win32/setupapi/setupapi.spec | 4 +- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/setupapi/cfgmgr.c b/reactos/dll/win32/setupapi/cfgmgr.c index 0ef10c4474a..684853f2299 100644 --- a/reactos/dll/win32/setupapi/cfgmgr.c +++ b/reactos/dll/win32/setupapi/cfgmgr.c @@ -2918,6 +2918,61 @@ CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex( } +/*********************************************************************** + * CM_Is_Version_Available_Ex [SETUPAPI.@] + */ +BOOL WINAPI CM_Is_Version_Available( + WORD wVersion) +{ + TRACE("%hu\n", wVersion); + return CM_Is_Version_Available_Ex(wVersion, NULL); +} + + +/*********************************************************************** + * CM_Is_Version_Available_Ex [SETUPAPI.@] + */ +BOOL WINAPI CM_Is_Version_Available_Ex( + WORD wVersion, HMACHINE hMachine) +{ + RPC_BINDING_HANDLE BindingHandle = NULL; + WORD wServerVersion; + CONFIGRET ret; + + TRACE("%hu %lx\n", wVersion, hMachine); + + if (wVersion <= 0x400) + return TRUE; + + if (hMachine != NULL) + { + BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle; + if (BindingHandle == NULL) + return FALSE; + } + else + { + if (!PnpGetLocalHandles(&BindingHandle, NULL)) + return FALSE; + } + + RpcTryExcept + { + ret = PNP_GetVersion(BindingHandle, &wServerVersion); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + ret = RpcStatusToCmStatus(RpcExceptionCode()); + } + RpcEndExcept; + + if (ret != CR_SUCCESS) + return FALSE; + + return (wServerVersion >= wVersion); +} + + /*********************************************************************** * CM_Locate_DevNodeA [SETUPAPI.@] */ diff --git a/reactos/dll/win32/setupapi/setupapi.spec b/reactos/dll/win32/setupapi/setupapi.spec index 344d7f337b1..fb6d16ad18a 100644 --- a/reactos/dll/win32/setupapi/setupapi.spec +++ b/reactos/dll/win32/setupapi/setupapi.spec @@ -137,8 +137,8 @@ @ stub CM_Invert_Range_List @ stdcall CM_Is_Dock_Station_Present(ptr) @ stdcall CM_Is_Dock_Station_Present_Ex(ptr long) -@ stub CM_Is_Version_Available -@ stub CM_Is_Version_Available_Ex +@ stdcall CM_Is_Version_Available(long) +@ stdcall CM_Is_Version_Available_Ex(long long) @ stdcall CM_Locate_DevNodeA(ptr str long) @ stdcall CM_Locate_DevNodeW(ptr wstr long) @ stdcall CM_Locate_DevNode_ExA(ptr str long long) From 0b40557c131d31bf265b858805f57d69524d2ff8 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 6 Feb 2011 13:05:45 +0000 Subject: [PATCH 10/23] [NTOSKRNL/PPC] Fix sizeof() wrong usage svn path=/trunk/; revision=50611 --- reactos/ntoskrnl/ke/powerpc/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/powerpc/cpu.c b/reactos/ntoskrnl/ke/powerpc/cpu.c index 81c6ea3c0b5..5b52d6b399f 100644 --- a/reactos/ntoskrnl/ke/powerpc/cpu.c +++ b/reactos/ntoskrnl/ke/powerpc/cpu.c @@ -44,7 +44,7 @@ NTAPI CPUID(IN ULONG CpuInfo[4], IN ULONG InfoType) { - RtlZeroMemory(CpuInfo, sizeof(CpuInfo)); + RtlZeroMemory(CpuInfo, sizeof(CpuInfo) * sizeof(ULONG)); } VOID From 395793a7f2706f929bea95ad19a60714ffe3b462 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 6 Feb 2011 13:50:57 +0000 Subject: [PATCH 11/23] [NTOSKRNL/PPC] Fix the fix, spotted by "ThFabba" on IRC svn path=/trunk/; revision=50612 --- reactos/ntoskrnl/ke/powerpc/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/powerpc/cpu.c b/reactos/ntoskrnl/ke/powerpc/cpu.c index 5b52d6b399f..3c555fa8191 100644 --- a/reactos/ntoskrnl/ke/powerpc/cpu.c +++ b/reactos/ntoskrnl/ke/powerpc/cpu.c @@ -44,7 +44,7 @@ NTAPI CPUID(IN ULONG CpuInfo[4], IN ULONG InfoType) { - RtlZeroMemory(CpuInfo, sizeof(CpuInfo) * sizeof(ULONG)); + RtlZeroMemory(CpuInfo, 4 * sizeof(ULONG)); } VOID From ff11a09b0261b2f29665a7a6affcf607ea4f00f4 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 7 Feb 2011 21:38:55 +0000 Subject: [PATCH 12/23] [KMTEST] Adding a new test for FsRtlIsNameInExpression(). Which is failing... Will that end a day?! svn path=/trunk/; revision=50614 --- rostests/drivers/kmtest/ntos_fsrtl.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rostests/drivers/kmtest/ntos_fsrtl.c b/rostests/drivers/kmtest/ntos_fsrtl.c index fb407c8f8ac..6e3a5b3b746 100644 --- a/rostests/drivers/kmtest/ntos_fsrtl.c +++ b/rostests/drivers/kmtest/ntos_fsrtl.c @@ -135,6 +135,10 @@ VOID FsRtlIsNameInExpressionTest() ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE"); RtlInitUnicodeString(&Name, L"ntoskrnl.exe."); ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE"); + + RtlInitUnicodeString(&Expression, L"*.c.d"); + RtlInitUnicodeString(&Name, L"a.b.c.d"); + ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE"); } VOID FsRtlIsDbcsInExpressionTest() @@ -243,6 +247,10 @@ VOID FsRtlIsDbcsInExpressionTest() ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE"); RtlInitAnsiString(&Name, "ntoskrnl.exe."); ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE"); + + RtlInitAnsiString(&Expression, "*.c.d"); + RtlInitAnsiString(&Name, "a.b.c.d"); + ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE"); } /* PUBLIC FUNCTIONS ***********************************************************/ From dab840147a4c17e4cd3beafd285460fc0fe68258 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 7 Feb 2011 23:16:29 +0000 Subject: [PATCH 13/23] [USETUP] Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). svn path=/trunk/; revision=50615 --- reactos/base/setup/usetup/cabinet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/setup/usetup/cabinet.c b/reactos/base/setup/usetup/cabinet.c index 0f7b0ef7a64..25357a41cbb 100644 --- a/reactos/base/setup/usetup/cabinet.c +++ b/reactos/base/setup/usetup/cabinet.c @@ -890,7 +890,7 @@ CabinetExtractFile(PCAB_SEARCH Search) RtlInitAnsiString(&AnsiString, Search->File->FileName); wcscpy(DestName, DestPath); - UnicodeString.MaximumLength = sizeof(DestName) - wcslen(DestName); + UnicodeString.MaximumLength = sizeof(DestName) - wcslen(DestName) * sizeof(WCHAR); UnicodeString.Buffer = DestName + wcslen(DestName); UnicodeString.Length = 0; RtlAnsiStringToUnicodeString(&UnicodeString, &AnsiString, FALSE); From 6b67a4985e160427e2a07d736937b2edbdaa5551 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 7 Feb 2011 23:23:33 +0000 Subject: [PATCH 14/23] [RTL] Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. Plus added useful asserts (used to catch r50615 bug!) svn path=/trunk/; revision=50616 --- reactos/lib/rtl/nls.c | 6 ++++++ reactos/lib/rtl/unicode.c | 29 +++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/reactos/lib/rtl/nls.c b/reactos/lib/rtl/nls.c index b7192319df2..131587ddbc3 100644 --- a/reactos/lib/rtl/nls.c +++ b/reactos/lib/rtl/nls.c @@ -235,6 +235,8 @@ RtlMultiByteToUnicodeN( ULONG Size = 0; ULONG i; + PAGED_CODE_RTL(); + if (NlsMbCodePageTag == FALSE) { /* single-byte code page */ @@ -300,6 +302,8 @@ RtlMultiByteToUnicodeSize(PULONG UnicodeSize, { ULONG Length = 0; + PAGED_CODE_RTL(); + if (!NlsMbCodePageTag) { /* single-byte code page */ @@ -504,6 +508,8 @@ RtlUnicodeToMultiByteN (PCHAR MbString, ULONG Size = 0; ULONG i; + PAGED_CODE_RTL(); + if (NlsMbCodePageTag == FALSE) { /* single-byte code page */ diff --git a/reactos/lib/rtl/unicode.c b/reactos/lib/rtl/unicode.c index 4dd9d4fa5d6..e0b8a4f9741 100644 --- a/reactos/lib/rtl/unicode.c +++ b/reactos/lib/rtl/unicode.c @@ -76,7 +76,14 @@ RtlAnsiStringToUnicodeString( PAGED_CODE_RTL(); - Length = RtlAnsiStringToUnicodeSize(AnsiSource); + if (NlsMbCodePageTag == FALSE) + { + Length = AnsiSource->Length * 2 + sizeof(WCHAR); + } + else + { + Length = RtlxAnsiStringToUnicodeSize(AnsiSource); + } if (Length > MAXUSHORT) return STATUS_INVALID_PARAMETER_2; UniDest->Length = (USHORT)Length - sizeof(WCHAR); @@ -91,6 +98,9 @@ RtlAnsiStringToUnicodeString( return STATUS_BUFFER_OVERFLOW; } + /* UniDest->MaximumLength must be even due to sizeof(WCHAR) being 2 */ + ASSERT(!(UniDest->MaximumLength & 1) && UniDest->Length <= UniDest->MaximumLength); + Status = RtlMultiByteToUnicodeN(UniDest->Buffer, UniDest->Length, &Index, @@ -123,6 +133,8 @@ RtlxAnsiStringToUnicodeSize(IN PCANSI_STRING AnsiString) { ULONG Size; + PAGED_CODE_RTL(); + /* Convert from Mb String to Unicode Size */ RtlMultiByteToUnicodeSize(&Size, AnsiString->Buffer, @@ -963,7 +975,16 @@ RtlUnicodeStringToAnsiString( PAGED_CODE_RTL(); - Length = RtlUnicodeStringToAnsiSize(UniSource); + ASSERT(!(UniSource->Length & 1)); + + if (NlsMbCodePageTag == FALSE) + { + Length = (UniSource->Length + sizeof(WCHAR)) / sizeof(WCHAR); + } + else + { + Length = RtlxUnicodeStringToAnsiSize(UniSource); + } if (Length > MAXUSHORT) return STATUS_INVALID_PARAMETER_2; AnsiDest->Length = (USHORT)Length - sizeof(CHAR); @@ -1953,6 +1974,10 @@ RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString) { ULONG Size; + PAGED_CODE_RTL(); + + ASSERT(!(UnicodeString->Length & 1)); + /* Convert the Unicode String to Mb Size */ RtlUnicodeToMultiByteSize(&Size, UnicodeString->Buffer, From 67f749a33bfe129f96754a701ee944a7d33dbf52 Mon Sep 17 00:00:00 2001 From: Roel Messiant Date: Tue, 8 Feb 2011 06:06:33 +0000 Subject: [PATCH 15/23] [HEAP] - RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. svn path=/trunk/; revision=50617 --- reactos/lib/rtl/heap.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/reactos/lib/rtl/heap.c b/reactos/lib/rtl/heap.c index 7454ddc49c4..9a563eeecd0 100644 --- a/reactos/lib/rtl/heap.c +++ b/reactos/lib/rtl/heap.c @@ -235,12 +235,6 @@ RtlpInsertFreeBlockHelper(PHEAP Heap, FreeEntry->Flags &= HEAP_ENTRY_LAST_ENTRY; } - /* Check if PreviousSize of the next entry matches ours */ - if (!(FreeEntry->Flags & HEAP_ENTRY_LAST_ENTRY)) - { - ASSERT(((PHEAP_ENTRY)FreeEntry + BlockSize)->PreviousSize == BlockSize); - } - /* Insert it either into dedicated or non-dedicated list */ if (BlockSize < HEAP_FREELISTS) { From eef9f9043431c2aace02dc1e4af531fbd14d0ec5 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Tue, 8 Feb 2011 15:55:56 +0000 Subject: [PATCH 16/23] - "FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). svn path=/trunk/; revision=50619 --- reactos/boot/bootdata/hivedef_amd64.inf | 2 +- reactos/boot/bootdata/hivedef_arm.inf | 2 +- reactos/boot/bootdata/hivedef_i386.inf | Bin 314522 -> 314522 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/boot/bootdata/hivedef_amd64.inf b/reactos/boot/bootdata/hivedef_amd64.inf index 404953a6257..f26f7024ece 100644 --- a/reactos/boot/bootdata/hivedef_amd64.inf +++ b/reactos/boot/bootdata/hivedef_amd64.inf @@ -97,7 +97,7 @@ HKCU,"Control Panel\Desktop","ScreenSaverIsSecure",2,"1" HKCU,"Control Panel\Desktop","ScreenSaveTimeOut",0,"600" HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",2,"20000" HKCU,"Control Panel\Desktop","Wallpaper",0x00000000,"" -HKCU,"Control Panel\Desktop","FontSmoothing",2,"0" +HKCU,"Control Panel\Desktop","FontSmoothing",0,"0" HKCU,"Control Panel\Desktop","FontSmoothingOrientation",0x00010003,0x00000001 HKCU,"Control Panel\Desktop","FontSmoothingType",0x00010003,0x00000001 HKCU,"Control Panel\Desktop","ForegroundFlashCount",0x00010003,0x00000003 diff --git a/reactos/boot/bootdata/hivedef_arm.inf b/reactos/boot/bootdata/hivedef_arm.inf index 8d8c48935d1..27dcf75b2e3 100644 --- a/reactos/boot/bootdata/hivedef_arm.inf +++ b/reactos/boot/bootdata/hivedef_arm.inf @@ -28,7 +28,7 @@ HKCU,"Control Panel\Desktop","HungAppTimeout",0x00000002,"5000" HKCU,"Control Panel\Desktop","SCRNSAVE.EXE",0x00000000,"" HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",0x00000002,"20000" HKCU,"Control Panel\Desktop","Wallpaper",0x00000000,"" -HKCU,"Control Panel\Desktop","FontSmoothing",2,"0" +HKCU,"Control Panel\Desktop","FontSmoothing",0,"0" HKCU,"Control Panel\Desktop","SmoothScroll",3,00,00,00,00 HKCU,"Control Panel\Desktop","UserPreferencesMask",3,10,00,00,80 HKCU,"Control Panel\Desktop","LowPowerActive",,"0" diff --git a/reactos/boot/bootdata/hivedef_i386.inf b/reactos/boot/bootdata/hivedef_i386.inf index 8fdc4bb0828808f211aa4ff7afae06740850d351..aeb59c43efb7b9302f506a42bc37ebc6e1f11235 100644 GIT binary patch delta 37 qcmbO=Q+U=);SD+(lZ)ESCTZ$5Pta(epuq^lOhC-MeS!uH*Af5^)D2ny delta 38 rcmbO=Q+U=);SD+(lb0!YP3F^(YM!9cK0$*Kh?#(xdHVzn7Oo`#5=ad; From 7b91620ccb75c6b991c452a33f7b1e62a03b2a8b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 8 Feb 2011 16:50:49 +0000 Subject: [PATCH 17/23] [ASM] Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) svn path=/trunk/; revision=50620 --- reactos/include/reactos/syscalls.inc | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 reactos/include/reactos/syscalls.inc diff --git a/reactos/include/reactos/syscalls.inc b/reactos/include/reactos/syscalls.inc new file mode 100644 index 00000000000..95e9ea19a2e --- /dev/null +++ b/reactos/include/reactos/syscalls.inc @@ -0,0 +1,93 @@ + +#ifdef _M_IX86 +#define KUSER_SHARED_SYSCALL HEX(7ffe0300) +#define KGDT_R0_CODE 8 +MACRO(STUBCODE_U, SyscallId, StackBytes) + mov eax, SyscallId + mov ecx, KUSER_SHARED_SYSCALL + call dword ptr [ecx] + ret StackBytes +ENDM +MACRO(STUBCODE_K, SyscallId, StackBytes) + mov eax, SyscallId + lea edx, [esp + 4] + pushf + push KGDT_R0_CODE + call _KiSystemService + ret StackBytes +ENDM +#elif defined(_M_AMD64) +MACRO(STUBCODE_U, SyscallId, StackBytes) + mov eax, SyscallId + mov r10, rcx + syscall + ret StackBytes +ENDM +MACRO(STUBCODE_K, SyscallId, StackBytes) + mov eax, SyscallId + call KiSystemService + ret StackBytes +ENDM +#elif defined(_M_ARM) +MACRO(STUBCODE_U, SyscallId, StackBytes) + swi #SyscallId + bx lr +ENDM +MACRO(STUBCODE_K, SyscallId, StackBytes) + mov ip, lr + swi #SyscallId + bx ip +ENDM +#elif defined(_M_PPC) +MACRO(STUBCODE_U, SyscallId, StackBytes) + stwu 1,-16(1) + mflr 0 + stw 0,0(1) + li 0, SyscallId + sc + lwz 0,0(1) + mtlr 0 + addi 1,1,16 + blr +ENDM +#define STUBCODE_K STUBCODE_U +#elif defined(_M_MIPS) +MACRO(STUBCODE_U, SyscallId, StackBytes) + li $8, KUSER_SHARED_SYSCALL + lw $8,0($8) + j $8 + nop +ENDM +MACRO(STUBCODE_K, SyscallId, StackBytes) + j KiSystemService + nop +ENDM +#else +#error unsupported architecture +#endif + +#ifdef _M_IX86 +MACRO(MAKE_LABEL, Name, Stackbytes) + PUBLIC _&Name&@&Stackbytes + _&Name&@&Stackbytes: +ENDM +#else +MACRO(MAKE_LABEL, Name, Stackbytes) + PUBLIC &Name + &Name: +ENDM +#endif + +MACRO(STUB_U, Name, ArgCount) + Stackbytes = 4 * &ArgCount + MAKE_LABEL &Name, %Stackbytes + STUBCODE_U SyscallId, %Stackbytes + SyscallId = SyscallId + 1 +ENDM + +MACRO(STUB_K, Name, ArgCount) + Stackbytes = 4 * &ArgCount + MAKE_LABEL &Name, %Stackbytes + STUBCODE_K SyscallId, %Stackbytes + SyscallId = SyscallId + 1 +ENDM From e37056f9ecac70f2e1bf24ebf4e3e8f8f2fcb389 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 8 Feb 2011 17:33:50 +0000 Subject: [PATCH 18/23] [WIN32KSYS] replace nci-generated stubs with a stub file using macros svn path=/trunk/; revision=50621 --- reactos/lib/lib.rbuild | 3 - reactos/lib/win32ksys/win32ksys.rbuild | 7 - reactos/subsystems/win32/win32k/sys-stubs.S | 12 + reactos/subsystems/win32/win32k/w32ksvc.h | 695 ++++++++++++++++++ reactos/subsystems/win32/win32k/win32k.rbuild | 4 + 5 files changed, 711 insertions(+), 10 deletions(-) delete mode 100644 reactos/lib/win32ksys/win32ksys.rbuild create mode 100644 reactos/subsystems/win32/win32k/sys-stubs.S create mode 100644 reactos/subsystems/win32/win32k/w32ksvc.h diff --git a/reactos/lib/lib.rbuild b/reactos/lib/lib.rbuild index 544ae0795fa..8a5e890d55a 100644 --- a/reactos/lib/lib.rbuild +++ b/reactos/lib/lib.rbuild @@ -70,7 +70,4 @@ - - - diff --git a/reactos/lib/win32ksys/win32ksys.rbuild b/reactos/lib/win32ksys/win32ksys.rbuild deleted file mode 100644 index 4ada178347b..00000000000 --- a/reactos/lib/win32ksys/win32ksys.rbuild +++ /dev/null @@ -1,7 +0,0 @@ - - - - - win32k.S - - diff --git a/reactos/subsystems/win32/win32k/sys-stubs.S b/reactos/subsystems/win32/win32k/sys-stubs.S new file mode 100644 index 00000000000..1a139f5cf05 --- /dev/null +++ b/reactos/subsystems/win32/win32k/sys-stubs.S @@ -0,0 +1,12 @@ + +#include +#include + +.code + +SyscallId = HEX(1000) +#define SVC_(name, argcount) STUB_U name, argcount + +#include "w32ksvc.h" + +END diff --git a/reactos/subsystems/win32/win32k/w32ksvc.h b/reactos/subsystems/win32/win32k/w32ksvc.h new file mode 100644 index 00000000000..1b1fe116b40 --- /dev/null +++ b/reactos/subsystems/win32/win32k/w32ksvc.h @@ -0,0 +1,695 @@ +// SVC_(, ) +// +// Funcs, order, should, match, Windows, XP, 5.1.2600, SP2) +// +SVC_(NtGdiAbortDoc, 1) +SVC_(NtGdiAbortPath, 1) +SVC_(NtGdiAddFontResourceW, 6) +SVC_(NtGdiAddRemoteFontToDC, 4) +SVC_(NtGdiAddFontMemResourceEx, 5) +SVC_(NtGdiRemoveMergeFont, 2) +SVC_(NtGdiAddRemoteMMInstanceToDC, 3) +SVC_(NtGdiAlphaBlend, 12) +SVC_(NtGdiAngleArc, 6) +SVC_(NtGdiAnyLinkedFonts, 0) +SVC_(NtGdiFontIsLinked, 1) +SVC_(NtGdiArcInternal, 10) +SVC_(NtGdiBeginPath, 1) +SVC_(NtGdiBitBlt, 11) +SVC_(NtGdiCancelDC, 1) +SVC_(NtGdiCheckBitmapBits, 8) +SVC_(NtGdiCloseFigure, 1) +SVC_(NtGdiClearBitmapAttributes, 2) +SVC_(NtGdiClearBrushAttributes, 2) +SVC_(NtGdiColorCorrectPalette, 6) +SVC_(NtGdiCombineRgn, 4) +SVC_(NtGdiCombineTransform, 3) +SVC_(NtGdiComputeXformCoefficients, 1) +SVC_(NtGdiConsoleTextOut, 4) +SVC_(NtGdiConvertMetafileRect, 2) +SVC_(NtGdiCreateBitmap, 5) +SVC_(NtGdiCreateClientObj, 1) +SVC_(NtGdiCreateColorSpace, 1) +SVC_(NtGdiCreateColorTransform, 8) +SVC_(NtGdiCreateCompatibleBitmap, 3) +SVC_(NtGdiCreateCompatibleDC, 1) +SVC_(NtGdiCreateDIBBrush, 6) +SVC_(NtGdiCreateDIBitmapInternal, 11) +SVC_(NtGdiCreateDIBSection, 9) +SVC_(NtGdiCreateEllipticRgn, 4) +SVC_(NtGdiCreateHalftonePalette, 1) +SVC_(NtGdiCreateHatchBrushInternal, 3) +SVC_(NtGdiCreateMetafileDC, 1) +SVC_(NtGdiCreatePaletteInternal, 2) +SVC_(NtGdiCreatePatternBrushInternal, 3) +SVC_(NtGdiCreatePen, 4) +SVC_(NtGdiCreateRectRgn, 4) +SVC_(NtGdiCreateRoundRectRgn, 6) +SVC_(NtGdiCreateServerMetaFile, 6) +SVC_(NtGdiCreateSolidBrush, 2) +SVC_(NtGdiD3dContextCreate, 4) +SVC_(NtGdiD3dContextDestroy, 1) +SVC_(NtGdiD3dContextDestroyAll, 1) +SVC_(NtGdiD3dValidateTextureStageState, 1) +SVC_(NtGdiD3dDrawPrimitives2, 7) +SVC_(NtGdiDdGetDriverState, 1) +SVC_(NtGdiDdAddAttachedSurface, 3) +SVC_(NtGdiDdAlphaBlt, 3) +SVC_(NtGdiDdAttachSurface, 2) +SVC_(NtGdiDdBeginMoCompFrame, 2) +SVC_(NtGdiDdBlt, 3) +SVC_(NtGdiDdCanCreateSurface, 2) +SVC_(NtGdiDdCanCreateD3DBuffer, 2) +SVC_(NtGdiDdColorControl, 2) +SVC_(NtGdiDdCreateDirectDrawObject, 1) +SVC_(NtGdiDdCreateSurface, 8) +SVC_(NtGdiDdCreateD3DBuffer, 8) +SVC_(NtGdiDdCreateMoComp, 2) +SVC_(NtGdiDdCreateSurfaceObject, 6) +SVC_(NtGdiDdDeleteDirectDrawObject, 1) +SVC_(NtGdiDdDeleteSurfaceObject, 1) +SVC_(NtGdiDdDestroyMoComp, 2) +SVC_(NtGdiDdDestroySurface, 2) +SVC_(NtGdiDdDestroyD3DBuffer, 1) +SVC_(NtGdiDdEndMoCompFrame, 2) +SVC_(NtGdiDdFlip, 5) +SVC_(NtGdiDdFlipToGDISurface, 2) +SVC_(NtGdiDdGetAvailDriverMemory, 2) +SVC_(NtGdiDdGetBltStatus, 2) +SVC_(NtGdiDdGetDC, 2) +SVC_(NtGdiDdGetDriverInfo, 2) +SVC_(NtGdiDdGetDxHandle, 3) +SVC_(NtGdiDdGetFlipStatus, 2) +SVC_(NtGdiDdGetInternalMoCompInfo, 2) +SVC_(NtGdiDdGetMoCompBuffInfo, 2) +SVC_(NtGdiDdGetMoCompGuids, 2) +SVC_(NtGdiDdGetMoCompFormats, 2) +SVC_(NtGdiDdGetScanLine, 2) +SVC_(NtGdiDdLock, 3) +SVC_(NtGdiDdLockD3D, 2) +SVC_(NtGdiDdQueryDirectDrawObject, 11) +SVC_(NtGdiDdQueryMoCompStatus, 2) +SVC_(NtGdiDdReenableDirectDrawObject, 2) +SVC_(NtGdiDdReleaseDC, 1) +SVC_(NtGdiDdRenderMoComp, 2) +SVC_(NtGdiDdResetVisrgn, 2) +SVC_(NtGdiDdSetColorKey, 2) +SVC_(NtGdiDdSetExclusiveMode, 2) +SVC_(NtGdiDdSetGammaRamp, 3) +SVC_(NtGdiDdCreateSurfaceEx, 3) +SVC_(NtGdiDdSetOverlayPosition, 3) +SVC_(NtGdiDdUnattachSurface, 2) +SVC_(NtGdiDdUnlock, 2) +SVC_(NtGdiDdUnlockD3D, 2) +SVC_(NtGdiDdUpdateOverlay, 3) +SVC_(NtGdiDdWaitForVerticalBlank, 2) +SVC_(NtGdiDvpCanCreateVideoPort, 2) +SVC_(NtGdiDvpColorControl, 2) +SVC_(NtGdiDvpCreateVideoPort, 2) +SVC_(NtGdiDvpDestroyVideoPort, 2) +SVC_(NtGdiDvpFlipVideoPort, 4) +SVC_(NtGdiDvpGetVideoPortBandwidth, 2) +SVC_(NtGdiDvpGetVideoPortField, 2) +SVC_(NtGdiDvpGetVideoPortFlipStatus, 2) +SVC_(NtGdiDvpGetVideoPortInputFormats, 2) +SVC_(NtGdiDvpGetVideoPortLine, 2) +SVC_(NtGdiDvpGetVideoPortOutputFormats, 2) +SVC_(NtGdiDvpGetVideoPortConnectInfo, 2) +SVC_(NtGdiDvpGetVideoSignalStatus, 2) +SVC_(NtGdiDvpUpdateVideoPort, 4) +SVC_(NtGdiDvpWaitForVideoPortSync, 2) +SVC_(NtGdiDvpAcquireNotification, 3) +SVC_(NtGdiDvpReleaseNotification, 2) +SVC_(NtGdiDxgGenericThunk, 6) +SVC_(NtGdiDeleteClientObj, 1) +SVC_(NtGdiDeleteColorSpace, 1) +SVC_(NtGdiDeleteColorTransform, 2) +SVC_(NtGdiDeleteObjectApp, 1) +SVC_(NtGdiDescribePixelFormat, 4) +SVC_(NtGdiGetPerBandInfo, 2) +SVC_(NtGdiDoBanding, 4) +SVC_(NtGdiDoPalette, 6) +SVC_(NtGdiDrawEscape, 4) +SVC_(NtGdiEllipse, 5) +SVC_(NtGdiEnableEudc, 1) +SVC_(NtGdiEndDoc, 1) +SVC_(NtGdiEndPage, 1) +SVC_(NtGdiEndPath, 1) +SVC_(NtGdiEnumFontChunk, 5) +SVC_(NtGdiEnumFontClose, 1) +SVC_(NtGdiEnumFontOpen, 7) +SVC_(NtGdiEnumObjects, 4) +SVC_(NtGdiEqualRgn, 2) +SVC_(NtGdiEudcLoadUnloadLink, 7) +SVC_(NtGdiExcludeClipRect, 5) +SVC_(NtGdiExtCreatePen, 11) +SVC_(NtGdiExtCreateRegion, 3) +SVC_(NtGdiExtEscape, 8) +SVC_(NtGdiExtFloodFill, 5) +SVC_(NtGdiExtGetObjectW, 3) +SVC_(NtGdiExtSelectClipRgn, 3) +SVC_(NtGdiExtTextOutW, 9) +SVC_(NtGdiFillPath, 1) +SVC_(NtGdiFillRgn, 3) +SVC_(NtGdiFlattenPath, 1) +SVC_(NtGdiFlushUserBatch, 0) +SVC_(NtGdiFlush, 0) +SVC_(NtGdiForceUFIMapping, 2) +SVC_(NtGdiFrameRgn, 5) +SVC_(NtGdiFullscreenControl, 5) +SVC_(NtGdiGetAndSetDCDword, 4) +SVC_(NtGdiGetAppClipBox, 2) +SVC_(NtGdiGetBitmapBits, 3) +SVC_(NtGdiGetBitmapDimension, 2) +SVC_(NtGdiGetBoundsRect, 3) +SVC_(NtGdiGetCharABCWidthsW, 6) +SVC_(NtGdiGetCharacterPlacementW, 6) +SVC_(NtGdiGetCharSet, 1) +SVC_(NtGdiGetCharWidthW, 6) +SVC_(NtGdiGetCharWidthInfo, 2) +SVC_(NtGdiGetColorAdjustment, 2) +SVC_(NtGdiGetColorSpaceforBitmap, 1) +SVC_(NtGdiGetDCDword, 3) +SVC_(NtGdiGetDCforBitmap, 1) +SVC_(NtGdiGetDCObject, 2) +SVC_(NtGdiGetDCPoint, 3) +SVC_(NtGdiGetDeviceCaps, 2) +SVC_(NtGdiGetDeviceGammaRamp, 2) +SVC_(NtGdiGetDeviceCapsAll, 2) +SVC_(NtGdiGetDIBitsInternal, 9) +SVC_(NtGdiGetETM, 2) +SVC_(NtGdiGetEudcTimeStampEx, 3) +SVC_(NtGdiGetFontData, 5) +SVC_(NtGdiGetFontResourceInfoInternalW, 7) +SVC_(NtGdiGetGlyphIndicesW, 5) +SVC_(NtGdiGetGlyphIndicesWInternal, 6) +SVC_(NtGdiGetGlyphOutline, 8) +SVC_(NtGdiGetKerningPairs, 3) +SVC_(NtGdiGetLinkedUFIs, 3) +SVC_(NtGdiGetMiterLimit, 2) +SVC_(NtGdiGetMonitorID, 3) +SVC_(NtGdiGetNearestColor, 2) +SVC_(NtGdiGetNearestPaletteIndex, 2) +SVC_(NtGdiGetObjectBitmapHandle, 2) +SVC_(NtGdiGetOutlineTextMetricsInternalW, 4) +SVC_(NtGdiGetPath, 4) +SVC_(NtGdiGetPixel, 3) +SVC_(NtGdiGetRandomRgn, 3) +SVC_(NtGdiGetRasterizerCaps, 2) +SVC_(NtGdiGetRealizationInfo, 3) +SVC_(NtGdiGetRegionData, 3) +SVC_(NtGdiGetRgnBox, 2) +SVC_(NtGdiGetServerMetaFileBits, 7) +SVC_(NtGdiGetSpoolMessage, 4) +SVC_(NtGdiGetStats, 5) +SVC_(NtGdiGetStockObject, 1) +SVC_(NtGdiGetStringBitmapW, 5) +SVC_(NtGdiGetSystemPaletteUse, 1) +SVC_(NtGdiGetTextCharsetInfo, 3) +SVC_(NtGdiGetTextExtent, 5) +SVC_(NtGdiGetTextExtentExW, 8) +SVC_(NtGdiGetTextFaceW, 4) +SVC_(NtGdiGetTextMetricsW, 3) +SVC_(NtGdiGetTransform, 3) +SVC_(NtGdiGetUFI, 6) +SVC_(NtGdiGetEmbUFI, 7) +SVC_(NtGdiGetUFIPathname, 10) +SVC_(NtGdiGetEmbedFonts, 0) +SVC_(NtGdiChangeGhostFont, 2) +SVC_(NtGdiAddEmbFontToDC, 2) +SVC_(NtGdiGetFontUnicodeRanges, 2) +SVC_(NtGdiGetWidthTable, 7) +SVC_(NtGdiGradientFill, 6) +SVC_(NtGdiHfontCreate, 5) +SVC_(NtGdiIcmBrushInfo, 8) +SVC_(NtGdiInit, 0) +SVC_(NtGdiInitSpool, 0) +SVC_(NtGdiIntersectClipRect, 5) +SVC_(NtGdiInvertRgn, 2) +SVC_(NtGdiLineTo, 3) +SVC_(NtGdiMakeFontDir, 5) +SVC_(NtGdiMakeInfoDC, 2) +SVC_(NtGdiMaskBlt, 13) +SVC_(NtGdiModifyWorldTransform, 3) +SVC_(NtGdiMonoBitmap, 1) +SVC_(NtGdiMoveTo, 4) +SVC_(NtGdiOffsetClipRgn, 3) +SVC_(NtGdiOffsetRgn, 3) +SVC_(NtGdiOpenDCW, 8) +SVC_(NtGdiPatBlt, 6) +SVC_(NtGdiPolyPatBlt, 5) +SVC_(NtGdiPathToRegion, 1) +SVC_(NtGdiPlgBlt, 11) +SVC_(NtGdiPolyDraw, 4) +SVC_(NtGdiPolyPolyDraw, 5) +SVC_(NtGdiPolyTextOutW, 4) +SVC_(NtGdiPtInRegion, 3) +SVC_(NtGdiPtVisible, 3) +SVC_(NtGdiQueryFonts, 3) +SVC_(NtGdiQueryFontAssocInfo, 1) +SVC_(NtGdiRectangle, 5) +SVC_(NtGdiRectInRegion, 2) +SVC_(NtGdiRectVisible, 2) +SVC_(NtGdiRemoveFontResourceW, 6) +SVC_(NtGdiRemoveFontMemResourceEx, 1) +SVC_(NtGdiResetDC, 5) +SVC_(NtGdiResizePalette, 2) +SVC_(NtGdiRestoreDC, 2) +SVC_(NtGdiRoundRect, 7) +SVC_(NtGdiSaveDC, 1) +SVC_(NtGdiScaleViewportExtEx, 6) +SVC_(NtGdiScaleWindowExtEx, 6) +SVC_(NtGdiSelectBitmap, 2) +SVC_(NtGdiSelectBrush, 2) +SVC_(NtGdiSelectClipPath, 2) +SVC_(NtGdiSelectFont, 2) +SVC_(NtGdiSelectPen, 2) +SVC_(NtGdiSetBitmapAttributes, 2) +SVC_(NtGdiSetBitmapBits, 3) +SVC_(NtGdiSetBitmapDimension, 4) +SVC_(NtGdiSetBoundsRect, 3) +SVC_(NtGdiSetBrushAttributes, 2) +SVC_(NtGdiSetBrushOrg, 4) +SVC_(NtGdiSetColorAdjustment, 2) +SVC_(NtGdiSetColorSpace, 2) +SVC_(NtGdiSetDeviceGammaRamp, 2) +SVC_(NtGdiSetDIBitsToDeviceInternal, 16) +SVC_(NtGdiSetFontEnumeration, 1) +SVC_(NtGdiSetFontXform, 3) +SVC_(NtGdiSetIcmMode, 3) +SVC_(NtGdiSetLinkedUFIs, 3) +SVC_(NtGdiSetMagicColors, 3) +SVC_(NtGdiSetMetaRgn, 1) +SVC_(NtGdiSetMiterLimit, 3) +SVC_(NtGdiGetDeviceWidth, 1) +SVC_(NtGdiMirrorWindowOrg, 1) +SVC_(NtGdiSetLayout, 3) +SVC_(NtGdiSetPixel, 4) +SVC_(NtGdiSetPixelFormat, 2) +SVC_(NtGdiSetRectRgn, 5) +SVC_(NtGdiSetSystemPaletteUse, 2) +SVC_(NtGdiSetTextJustification, 3) +SVC_(NtGdiSetupPublicCFONT, 3) +SVC_(NtGdiSetVirtualResolution, 5) +SVC_(NtGdiSetSizeDevice, 3) +SVC_(NtGdiStartDoc, 4) +SVC_(NtGdiStartPage, 1) +SVC_(NtGdiStretchBlt, 12) +SVC_(NtGdiStretchDIBitsInternal, 16) +SVC_(NtGdiStrokeAndFillPath, 1) +SVC_(NtGdiStrokePath, 1) +SVC_(NtGdiSwapBuffers, 1) +SVC_(NtGdiTransformPoints, 5) +SVC_(NtGdiTransparentBlt, 11) +SVC_(NtGdiUnloadPrinterDriver, 2) +SVC_(NtGdiUnmapMemFont, 1) +SVC_(NtGdiUnrealizeObject, 1) +SVC_(NtGdiUpdateColors, 1) +SVC_(NtGdiWidenPath, 1) +SVC_(NtUserActivateKeyboardLayout, 2) +SVC_(NtUserAlterWindowStyle, 3) +SVC_(NtUserAssociateInputContext, 3) +SVC_(NtUserAttachThreadInput, 3) +SVC_(NtUserBeginPaint, 2) +SVC_(NtUserBitBltSysBmp, 8) +SVC_(NtUserBlockInput, 1) +SVC_(NtUserBuildHimcList, 4) +SVC_(NtUserBuildHwndList, 7) +SVC_(NtUserBuildNameList, 4) +SVC_(NtUserBuildPropList, 4) +SVC_(NtUserCallHwnd, 2) +SVC_(NtUserCallHwndLock, 2) +SVC_(NtUserCallHwndOpt, 2) +SVC_(NtUserCallHwndParam, 3) +SVC_(NtUserCallHwndParamLock, 3) +SVC_(NtUserCallMsgFilter, 2) +SVC_(NtUserCallNextHookEx, 4) +SVC_(NtUserCallNoParam, 1) +SVC_(NtUserCallOneParam, 2) +SVC_(NtUserCallTwoParam, 3) +SVC_(NtUserChangeClipboardChain, 2) +SVC_(NtUserChangeDisplaySettings, 5) +SVC_(NtUserCheckImeHotKey, 2) +SVC_(NtUserCheckMenuItem, 3) +SVC_(NtUserChildWindowFromPointEx, 4) +SVC_(NtUserClipCursor, 1) +SVC_(NtUserCloseClipboard, 0) +SVC_(NtUserCloseDesktop, 1) +SVC_(NtUserCloseWindowStation, 1) +SVC_(NtUserConsoleControl, 3) +SVC_(NtUserConvertMemHandle, 2) +SVC_(NtUserCopyAcceleratorTable, 3) +SVC_(NtUserCountClipboardFormats, 0) +SVC_(NtUserCreateAcceleratorTable, 2) +SVC_(NtUserCreateCaret, 4) +SVC_(NtUserCreateDesktop, 5) +SVC_(NtUserCreateInputContext, 1) +SVC_(NtUserCreateLocalMemHandle, 4) +SVC_(NtUserCreateWindowEx, 15) +SVC_(NtUserCreateWindowStation, 7) +SVC_(NtUserDdeGetQualityOfService, 3) +SVC_(NtUserDdeInitialize, 5) +SVC_(NtUserDdeSetQualityOfService, 3) +SVC_(NtUserDeferWindowPos, 8) +SVC_(NtUserDefSetText, 2) +SVC_(NtUserDeleteMenu, 3) +SVC_(NtUserDestroyAcceleratorTable, 1) +SVC_(NtUserDestroyCursor, 2) +SVC_(NtUserDestroyInputContext, 1) +SVC_(NtUserDestroyMenu, 1) +SVC_(NtUserDestroyWindow, 1) +SVC_(NtUserDisableThreadIme, 1) +SVC_(NtUserDispatchMessage, 1) +SVC_(NtUserDragDetect, 3) +SVC_(NtUserDragObject, 5) +SVC_(NtUserDrawAnimatedRects, 4) +SVC_(NtUserDrawCaption, 4) +SVC_(NtUserDrawCaptionTemp, 7) +SVC_(NtUserDrawIconEx, 11) +SVC_(NtUserDrawMenuBarTemp, 5) +SVC_(NtUserEmptyClipboard, 0) +SVC_(NtUserEnableMenuItem, 3) +SVC_(NtUserEnableScrollBar, 3) +SVC_(NtUserEndDeferWindowPosEx, 2) +SVC_(NtUserEndMenu, 0) +SVC_(NtUserEndPaint, 2) +SVC_(NtUserEnumDisplayDevices, 4) +// SVC_(NtUserEnumDisplayMonitors, 4, Wrong, number, of, param, ?) +SVC_(NtUserEnumDisplayMonitors, 5) +SVC_(NtUserEnumDisplaySettings, 4) +SVC_(NtUserEvent, 1) +SVC_(NtUserExcludeUpdateRgn, 2) +SVC_(NtUserFillWindow, 4) +// SVC_(NtUserFindExistingCursorIcon, 3, Wrong, number, of, param, ?) +SVC_(NtUserFindExistingCursorIcon, 4) +SVC_(NtUserFindWindowEx, 5) +SVC_(NtUserFlashWindowEx, 1) +SVC_(NtUserGetAltTabInfo, 6) +SVC_(NtUserGetAncestor, 2) +SVC_(NtUserGetAppImeLevel, 1) +SVC_(NtUserGetAsyncKeyState, 1) +SVC_(NtUserGetAtomName, 2) +SVC_(NtUserGetCaretBlinkTime, 0) +SVC_(NtUserGetCaretPos, 1) +SVC_(NtUserGetClassInfo, 5) +SVC_(NtUserGetClassName, 3) +SVC_(NtUserGetClipboardData, 2) +SVC_(NtUserGetClipboardFormatName, 3) +SVC_(NtUserGetClipboardOwner, 0) +SVC_(NtUserGetClipboardSequenceNumber, 0) +SVC_(NtUserGetClipboardViewer, 0) +SVC_(NtUserGetClipCursor, 1) +SVC_(NtUserGetComboBoxInfo, 2) +SVC_(NtUserGetControlBrush, 3) +SVC_(NtUserGetControlColor, 4) +SVC_(NtUserGetCPD, 3) +SVC_(NtUserGetCursorFrameInfo, 4) +SVC_(NtUserGetCursorInfo, 1) +SVC_(NtUserGetDC, 1) +SVC_(NtUserGetDCEx, 3) +SVC_(NtUserGetDoubleClickTime, 0) +SVC_(NtUserGetForegroundWindow, 0) +SVC_(NtUserGetGuiResources, 2) +SVC_(NtUserGetGUIThreadInfo, 2) +SVC_(NtUserGetIconInfo, 6) +SVC_(NtUserGetIconSize, 4) +SVC_(NtUserGetImeHotKey, 4) +SVC_(NtUserGetImeInfoEx, 2) +SVC_(NtUserGetInternalWindowPos, 3) +SVC_(NtUserGetKeyboardLayoutList, 2) +SVC_(NtUserGetKeyboardLayoutName, 1) +SVC_(NtUserGetKeyboardState, 1) +SVC_(NtUserGetKeyNameText, 3) +SVC_(NtUserGetKeyState, 1) +SVC_(NtUserGetListBoxInfo, 1) +SVC_(NtUserGetMenuBarInfo, 4) +SVC_(NtUserGetMenuIndex, 2) +SVC_(NtUserGetMenuItemRect, 4) +SVC_(NtUserGetMessage, 4) +SVC_(NtUserGetMouseMovePointsEx, 5) +SVC_(NtUserGetObjectInformation, 5) +SVC_(NtUserGetOpenClipboardWindow, 0) +SVC_(NtUserGetPriorityClipboardFormat, 2) +SVC_(NtUserGetProcessWindowStation, 0) +SVC_(NtUserGetRawInputBuffer, 3) +SVC_(NtUserGetRawInputData, 5) +SVC_(NtUserGetRawInputDeviceInfo, 4) +SVC_(NtUserGetRawInputDeviceList, 3) +SVC_(NtUserGetRegisteredRawInputDevices, 3) +SVC_(NtUserGetScrollBarInfo, 3) +SVC_(NtUserGetSystemMenu, 2) +SVC_(NtUserGetThreadDesktop, 2) +SVC_(NtUserGetThreadState, 1) +SVC_(NtUserGetTitleBarInfo, 2) +SVC_(NtUserGetUpdateRect, 3) +SVC_(NtUserGetUpdateRgn, 3) +SVC_(NtUserGetWindowDC, 1) +SVC_(NtUserGetWindowPlacement, 2) +SVC_(NtUserGetWOWClass, 2) +SVC_(NtUserHardErrorControl, 3) +SVC_(NtUserHideCaret, 1) +SVC_(NtUserHiliteMenuItem, 4) +SVC_(NtUserImpersonateDdeClientWindow, 2) +SVC_(NtUserInitialize, 3) +SVC_(NtUserInitializeClientPfnArrays, 4) +SVC_(NtUserInitTask, 12) +SVC_(NtUserInternalGetWindowText, 3) +SVC_(NtUserInvalidateRect, 3) +SVC_(NtUserInvalidateRgn, 3) +SVC_(NtUserIsClipboardFormatAvailable, 1) +SVC_(NtUserKillTimer, 2) +SVC_(NtUserLoadKeyboardLayoutEx, 7) +SVC_(NtUserLockWindowStation, 1) +SVC_(NtUserLockWindowUpdate, 1) +SVC_(NtUserLockWorkStation, 0) +SVC_(NtUserMapVirtualKeyEx, 4) +SVC_(NtUserMenuItemFromPoint, 4) +SVC_(NtUserMessageCall, 7) +SVC_(NtUserMinMaximize, 3) +SVC_(NtUserMNDragLeave, 0) +SVC_(NtUserMNDragOver, 2) +SVC_(NtUserModifyUserStartupInfoFlags, 2) +SVC_(NtUserMoveWindow, 6) +SVC_(NtUserNotifyIMEStatus, 3) +SVC_(NtUserNotifyProcessCreate, 4) +SVC_(NtUserNotifyWinEvent, 4) +SVC_(NtUserOpenClipboard, 2) +SVC_(NtUserOpenDesktop, 3) +SVC_(NtUserOpenInputDesktop, 3) +SVC_(NtUserOpenWindowStation, 2) +SVC_(NtUserPaintDesktop, 1) +SVC_(NtUserPeekMessage, 5) +SVC_(NtUserPostMessage, 4) +SVC_(NtUserPostThreadMessage, 4) +SVC_(NtUserPrintWindow, 3) +SVC_(NtUserProcessConnect, 3) +SVC_(NtUserQueryInformationThread, 5) +SVC_(NtUserQueryInputContext, 2) +SVC_(NtUserQuerySendMessage, 1) +SVC_(NtUserQueryUserCounters, 5) +SVC_(NtUserQueryWindow, 2) +SVC_(NtUserRealChildWindowFromPoint, 3) +SVC_(NtUserRealInternalGetMessage, 6) +SVC_(NtUserRealWaitMessageEx, 2) +SVC_(NtUserRedrawWindow, 4) +SVC_(NtUserRegisterClassExWOW, 7) +SVC_(NtUserRegisterUserApiHook, 4) +SVC_(NtUserRegisterHotKey, 4) +SVC_(NtUserRegisterRawInputDevices, 3) +SVC_(NtUserRegisterTasklist, 1) +SVC_(NtUserRegisterWindowMessage, 1) +SVC_(NtUserRemoveMenu, 3) +SVC_(NtUserRemoveProp, 2) +SVC_(NtUserResolveDesktop, 4) +SVC_(NtUserResolveDesktopForWOW, 1) +SVC_(NtUserSBGetParms, 4) +SVC_(NtUserScrollDC, 7) +SVC_(NtUserScrollWindowEx, 8) +SVC_(NtUserSelectPalette, 3) +SVC_(NtUserSendInput, 3) +SVC_(NtUserSetActiveWindow, 1) +SVC_(NtUserSetAppImeLevel, 2) +SVC_(NtUserSetCapture, 1) +SVC_(NtUserSetClassLong, 4) +SVC_(NtUserSetClassWord, 3) +SVC_(NtUserSetClipboardData, 3) +SVC_(NtUserSetClipboardViewer, 1) +SVC_(NtUserSetConsoleReserveKeys, 2) +SVC_(NtUserSetCursor, 1) +SVC_(NtUserSetCursorContents, 2) +SVC_(NtUserSetCursorIconData, 6) +SVC_(NtUserSetDbgTag, 2) +SVC_(NtUserSetFocus, 1) +SVC_(NtUserSetImeHotKey, 5) +SVC_(NtUserSetImeInfoEx, 1) +SVC_(NtUserSetImeOwnerWindow, 2) +SVC_(NtUserSetInformationProcess, 4) +SVC_(NtUserSetInformationThread, 4) +SVC_(NtUserSetInternalWindowPos, 4) +SVC_(NtUserSetKeyboardState, 1) +SVC_(NtUserSetLogonNotifyWindow, 1) +SVC_(NtUserSetMenu, 3) +SVC_(NtUserSetMenuContextHelpId, 2) +SVC_(NtUserSetMenuDefaultItem, 3) +SVC_(NtUserSetMenuFlagRtoL, 1) +SVC_(NtUserSetObjectInformation, 4) +SVC_(NtUserSetParent, 2) +SVC_(NtUserSetProcessWindowStation, 1) +SVC_(NtUserSetProp, 3) +SVC_(NtUserSetRipFlags, 2) +SVC_(NtUserSetScrollInfo, 4) +SVC_(NtUserSetShellWindowEx, 2) +SVC_(NtUserSetSysColors, 4) +SVC_(NtUserSetSystemCursor, 2) +SVC_(NtUserSetSystemMenu, 2) +SVC_(NtUserSetSystemTimer, 4) +SVC_(NtUserSetThreadDesktop, 1) +SVC_(NtUserSetThreadLayoutHandles, 2) +SVC_(NtUserSetThreadState, 2) +SVC_(NtUserSetTimer, 4) +SVC_(NtUserSetWindowFNID, 2) +SVC_(NtUserSetWindowLong, 4) +SVC_(NtUserSetWindowPlacement, 2) +SVC_(NtUserSetWindowPos, 7) +SVC_(NtUserSetWindowRgn, 3) +SVC_(NtUserSetWindowsHookAW, 3) +SVC_(NtUserSetWindowsHookEx, 6) +SVC_(NtUserSetWindowStationUser, 4) +SVC_(NtUserSetWindowWord, 3) +SVC_(NtUserSetWinEventHook, 8) +SVC_(NtUserShowCaret, 1) +SVC_(NtUserShowScrollBar, 3) +SVC_(NtUserShowWindow, 2) +SVC_(NtUserShowWindowAsync, 2) +SVC_(NtUserSoundSentry, 0) +SVC_(NtUserSwitchDesktop, 1) +SVC_(NtUserSystemParametersInfo, 4) +SVC_(NtUserTestForInteractiveUser, 1) +SVC_(NtUserThunkedMenuInfo, 2) +SVC_(NtUserThunkedMenuItemInfo, 6) +SVC_(NtUserToUnicodeEx, 7) +SVC_(NtUserTrackMouseEvent, 1) +SVC_(NtUserTrackPopupMenuEx, 6) +SVC_(NtUserCalcMenuBar, 5) +SVC_(NtUserPaintMenuBar, 6) +SVC_(NtUserTranslateAccelerator, 3) +SVC_(NtUserTranslateMessage, 2) +SVC_(NtUserUnhookWindowsHookEx, 1) +SVC_(NtUserUnhookWinEvent, 1) +SVC_(NtUserUnloadKeyboardLayout, 1) +SVC_(NtUserUnlockWindowStation, 1) +SVC_(NtUserUnregisterClass, 3) +SVC_(NtUserUnregisterUserApiHook, 0) +SVC_(NtUserUnregisterHotKey, 2) +SVC_(NtUserUpdateInputContext, 3) +SVC_(NtUserUpdateInstance, 3) +SVC_(NtUserUpdateLayeredWindow, 10) +SVC_(NtUserGetLayeredWindowAttributes, 4) +SVC_(NtUserSetLayeredWindowAttributes, 4) +SVC_(NtUserUpdatePerUserSystemParameters, 2) +SVC_(NtUserUserHandleGrantAccess, 3) +SVC_(NtUserValidateHandleSecure, 2) +SVC_(NtUserValidateRect, 2) +SVC_(NtUserValidateTimerCallback, 3) +SVC_(NtUserVkKeyScanEx, 3) +SVC_(NtUserWaitForInputIdle, 3) +SVC_(NtUserWaitForMsgAndEvent, 1) +SVC_(NtUserWaitMessage, 0) +SVC_(NtUserWin32PoolAllocationStats, 6) +SVC_(NtUserWindowFromPhysicalPoint, 2) +SVC_(NtUserWindowFromPoint, 2) +SVC_(NtUserYieldTask, 0) +SVC_(NtUserRemoteConnect, 3) +SVC_(NtUserRemoteRedrawRectangle, 4) +SVC_(NtUserRemoteRedrawScreen, 0) +SVC_(NtUserRemoteStopScreenUpdates, 0) +SVC_(NtUserCtxDisplayIOCtl, 3) +SVC_(NtGdiEngAssociateSurface, 3) +SVC_(NtGdiEngCreateBitmap, 6) +SVC_(NtGdiEngCreateDeviceSurface, 4) +SVC_(NtGdiEngCreateDeviceBitmap, 4) +SVC_(NtGdiEngCreatePalette, 6) +SVC_(NtGdiEngComputeGlyphSet, 3) +SVC_(NtGdiEngCopyBits, 6) +SVC_(NtGdiEngDeletePalette, 1) +SVC_(NtGdiEngDeleteSurface, 1) +SVC_(NtGdiEngEraseSurface, 3) +SVC_(NtGdiEngUnlockSurface, 1) +SVC_(NtGdiEngLockSurface, 1) +SVC_(NtGdiEngBitBlt, 11) +SVC_(NtGdiEngStretchBlt, 11) +SVC_(NtGdiEngPlgBlt, 11) +SVC_(NtGdiEngMarkBandingSurface, 1) +SVC_(NtGdiEngStrokePath, 8) +SVC_(NtGdiEngFillPath, 7) +SVC_(NtGdiEngStrokeAndFillPath, 10) +SVC_(NtGdiEngPaint, 5) +SVC_(NtGdiEngLineTo, 9) +SVC_(NtGdiEngAlphaBlend, 7) +SVC_(NtGdiEngGradientFill, 10) +SVC_(NtGdiEngTransparentBlt, 8) +SVC_(NtGdiEngTextOut, 10) +SVC_(NtGdiEngStretchBltROP, 13) +SVC_(NtGdiXLATEOBJ_cGetPalette, 4) +SVC_(NtGdiXLATEOBJ_iXlate, 2) +SVC_(NtGdiXLATEOBJ_hGetColorTransform, 1) +SVC_(NtGdiCLIPOBJ_bEnum, 3) +SVC_(NtGdiCLIPOBJ_cEnumStart, 5) +SVC_(NtGdiCLIPOBJ_ppoGetPath, 1) +SVC_(NtGdiEngDeletePath, 1) +SVC_(NtGdiEngCreateClip, 0) +SVC_(NtGdiEngDeleteClip, 1) +SVC_(NtGdiBRUSHOBJ_ulGetBrushColor, 1) +SVC_(NtGdiBRUSHOBJ_pvAllocRbrush, 2) +SVC_(NtGdiBRUSHOBJ_pvGetRbrush, 1) +SVC_(NtGdiBRUSHOBJ_hGetColorTransform, 1) +SVC_(NtGdiXFORMOBJ_bApplyXform, 5) +SVC_(NtGdiXFORMOBJ_iGetXform, 2) +SVC_(NtGdiFONTOBJ_vGetInfo, 3) +SVC_(NtGdiFONTOBJ_pxoGetXform, 1) +SVC_(NtGdiFONTOBJ_cGetGlyphs, 5) +SVC_(NtGdiFONTOBJ_pifi, 1) +SVC_(NtGdiFONTOBJ_pfdg, 1) +SVC_(NtGdiFONTOBJ_pQueryGlyphAttrs, 2) +SVC_(NtGdiFONTOBJ_pvTrueTypeFontFile, 2) +SVC_(NtGdiFONTOBJ_cGetAllGlyphHandles, 2) +SVC_(NtGdiSTROBJ_bEnum, 3) +SVC_(NtGdiSTROBJ_bEnumPositionsOnly, 3) +SVC_(NtGdiSTROBJ_bGetAdvanceWidths, 4) +SVC_(NtGdiSTROBJ_vEnumStart, 1) +SVC_(NtGdiSTROBJ_dwGetCodePage, 1) +SVC_(NtGdiPATHOBJ_vGetBounds, 2) +SVC_(NtGdiPATHOBJ_bEnum, 2) +SVC_(NtGdiPATHOBJ_vEnumStart, 1) +SVC_(NtGdiPATHOBJ_vEnumStartClipLines, 4) +SVC_(NtGdiPATHOBJ_bEnumClipLines, 3) +SVC_(NtGdiGetDhpdev, 1) +SVC_(NtGdiEngCheckAbort, 1) +SVC_(NtGdiHT_Get8BPPFormatPalette, 4) +SVC_(NtGdiHT_Get8BPPMaskPalette, 6) +SVC_(NtGdiUpdateTransform, 1) +SVC_(NtGdiSetPUMPDOBJ, 4) +SVC_(NtGdiBRUSHOBJ_DeleteRbrush, 2) +SVC_(NtGdiUMPDEngFreeUserMem, 1) +SVC_(NtGdiDrawStream, 3) + + +// ReactOS, specific, syscalls) +SVC_(NtGdiSetDIBits, 7) +SVC_(NtGdiSetViewportOrgEx, 4) +SVC_(NtGdiSetWindowOrgEx, 4) +SVC_(NtGdiGetFontFamilyInfo, 4) +SVC_(NtGdiOffsetViewportOrgEx, 4) +SVC_(NtGdiOffsetWindowOrgEx, 4) + +SVC_(NtUserBuildMenuItemList, 4) +SVC_(NtUserGetMenuDefaultItem, 3) +SVC_(NtUserGetLastInputInfo, 1) +SVC_(NtUserGetMinMaxInfo, 3) +SVC_(NtUserGetMonitorInfo, 2) +SVC_(NtUserMenuInfo, 3) +SVC_(NtUserMenuItemInfo, 5) +SVC_(NtUserMonitorFromPoint, 3) +SVC_(NtUserMonitorFromRect, 2) +SVC_(NtUserMonitorFromWindow, 2) +SVC_(NtUserSetScrollBarInfo, 3) diff --git a/reactos/subsystems/win32/win32k/win32k.rbuild b/reactos/subsystems/win32/win32k/win32k.rbuild index a18cb1ce625..a472d21178e 100644 --- a/reactos/subsystems/win32/win32k/win32k.rbuild +++ b/reactos/subsystems/win32/win32k/win32k.rbuild @@ -204,4 +204,8 @@ umpdstubs.c + + include/reactos + sys-stubs.S + From 7fd2b87f3b24320e8db0bf66c8a52634345fce1d Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 8 Feb 2011 19:00:54 +0000 Subject: [PATCH 19/23] [ASM] - Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs - Create zw.S using the macros svn path=/trunk/; revision=50622 --- reactos/include/reactos/syscalls.inc | 5 +- reactos/ntoskrnl/ex/sysfuncs.h | 296 +++++ reactos/ntoskrnl/ex/zw.S | 12 + reactos/ntoskrnl/ntoskrnl-generic.rbuild | 2 +- reactos/subsystems/win32/win32k/w32ksvc.h | 1374 ++++++++++----------- 5 files changed, 999 insertions(+), 690 deletions(-) create mode 100644 reactos/ntoskrnl/ex/sysfuncs.h create mode 100644 reactos/ntoskrnl/ex/zw.S diff --git a/reactos/include/reactos/syscalls.inc b/reactos/include/reactos/syscalls.inc index 95e9ea19a2e..a0d2832c844 100644 --- a/reactos/include/reactos/syscalls.inc +++ b/reactos/include/reactos/syscalls.inc @@ -80,14 +80,15 @@ ENDM MACRO(STUB_U, Name, ArgCount) Stackbytes = 4 * &ArgCount - MAKE_LABEL &Name, %Stackbytes + MAKE_LABEL Zw&Name, %Stackbytes + MAKE_LABEL Nt&Name, %Stackbytes STUBCODE_U SyscallId, %Stackbytes SyscallId = SyscallId + 1 ENDM MACRO(STUB_K, Name, ArgCount) Stackbytes = 4 * &ArgCount - MAKE_LABEL &Name, %Stackbytes + MAKE_LABEL Zw&Name, %Stackbytes STUBCODE_K SyscallId, %Stackbytes SyscallId = SyscallId + 1 ENDM diff --git a/reactos/ntoskrnl/ex/sysfuncs.h b/reactos/ntoskrnl/ex/sysfuncs.h new file mode 100644 index 00000000000..4eede14cd1d --- /dev/null +++ b/reactos/ntoskrnl/ex/sysfuncs.h @@ -0,0 +1,296 @@ +SVC_(AcceptConnectPort, 6) +SVC_(AccessCheck, 8) +SVC_(AccessCheckAndAuditAlarm, 11) +SVC_(AccessCheckByType, 11) +SVC_(AccessCheckByTypeAndAuditAlarm, 16) +SVC_(AccessCheckByTypeResultList, 11) +SVC_(AccessCheckByTypeResultListAndAuditAlarm, 16) +SVC_(AccessCheckByTypeResultListAndAuditAlarmByHandle, 17) +SVC_(AddAtom, 3) +SVC_(AddBootEntry, 2) +SVC_(AddDriverEntry, 2) +SVC_(AdjustGroupsToken, 6) +SVC_(AdjustPrivilegesToken, 6) +SVC_(AlertResumeThread, 2) +SVC_(AlertThread, 1) +SVC_(AllocateLocallyUniqueId, 1) +SVC_(AllocateUserPhysicalPages, 3) +SVC_(AllocateUuids, 4) +SVC_(AllocateVirtualMemory, 6) +SVC_(ApphelpCacheControl, 2) +SVC_(AreMappedFilesTheSame, 2) +SVC_(AssignProcessToJobObject, 2) +SVC_(CallbackReturn, 3) +SVC_(CancelDeviceWakeupRequest, 1) +SVC_(CancelIoFile, 2) +SVC_(CancelTimer, 2) +SVC_(ClearEvent, 1) +SVC_(Close, 1) +SVC_(CloseObjectAuditAlarm, 3) +SVC_(CompactKeys, 2) +SVC_(CompareTokens, 3) +SVC_(CompleteConnectPort, 1) +SVC_(CompressKey, 1) +SVC_(ConnectPort, 8) +SVC_(Continue, 2) +SVC_(CreateDebugObject, 4) +SVC_(CreateDirectoryObject, 3) +SVC_(CreateEvent, 5) +SVC_(CreateEventPair, 3) +SVC_(CreateFile, 11) +SVC_(CreateIoCompletion, 4) +SVC_(CreateJobObject, 3) +SVC_(CreateJobSet, 3) +SVC_(CreateKey, 7) +SVC_(CreateMailslotFile, 8) +SVC_(CreateMutant, 4) +SVC_(CreateNamedPipeFile, 14) +SVC_(CreatePagingFile, 4) +SVC_(CreatePort, 5) +SVC_(CreateProcess, 8) +SVC_(CreateProcessEx, 9) +SVC_(CreateProfile, 9) +SVC_(CreateSection, 7) +SVC_(CreateSemaphore, 5) +SVC_(CreateSymbolicLinkObject, 4) +SVC_(CreateThread, 8) +SVC_(CreateTimer, 4) +SVC_(CreateToken, 13) +SVC_(CreateWaitablePort, 5) +SVC_(DebugActiveProcess, 2) +SVC_(DebugContinue, 3) +SVC_(DelayExecution, 2) +SVC_(DeleteAtom, 1) +SVC_(DeleteBootEntry, 1) +SVC_(DeleteDriverEntry, 1) +SVC_(DeleteFile, 1) +SVC_(DeleteKey, 1) +SVC_(DeleteObjectAuditAlarm, 3) +SVC_(DeleteValueKey, 2) +SVC_(DeviceIoControlFile, 10) +SVC_(DisplayString, 1) +SVC_(DuplicateObject, 7) +SVC_(DuplicateToken, 6) +SVC_(EnumerateBootEntries, 2) +SVC_(EnumerateDriverEntries, 2) +SVC_(EnumerateKey, 6) +SVC_(EnumerateSystemEnvironmentValuesEx, 3) +SVC_(EnumerateValueKey, 6) +SVC_(ExtendSection, 2) +SVC_(FilterToken, 6) +SVC_(FindAtom, 3) +SVC_(FlushBuffersFile, 2) +SVC_(FlushInstructionCache, 3) +SVC_(FlushKey, 1) +SVC_(FlushVirtualMemory, 4) +SVC_(FlushWriteBuffer, 0) +SVC_(FreeUserPhysicalPages, 3) +SVC_(FreeVirtualMemory, 4) +SVC_(FsControlFile, 10) +SVC_(GetContextThread, 2) +SVC_(GetDevicePowerState, 2) +SVC_(GetPlugPlayEvent, 4) +SVC_(GetWriteWatch, 7) +SVC_(ImpersonateAnonymousToken, 1) +SVC_(ImpersonateClientOfPort, 2) +SVC_(ImpersonateThread, 3) +SVC_(InitializeRegistry, 1) +SVC_(InitiatePowerAction, 4) +SVC_(IsProcessInJob, 2) +SVC_(IsSystemResumeAutomatic, 0) +SVC_(ListenPort, 2) +SVC_(LoadDriver, 1) +SVC_(LoadKey, 2) +SVC_(LoadKey2, 3) +SVC_(LoadKeyEx, 4) +SVC_(LockFile, 10) +SVC_(LockProductActivationKeys, 2) +SVC_(LockRegistryKey, 1) +SVC_(LockVirtualMemory, 4) +SVC_(MakePermanentObject, 1) +SVC_(MakeTemporaryObject, 1) +SVC_(MapUserPhysicalPages, 3) +SVC_(MapUserPhysicalPagesScatter, 3) +SVC_(MapViewOfSection, 10) +SVC_(ModifyBootEntry, 1) +SVC_(ModifyDriverEntry, 1) +SVC_(NotifyChangeDirectoryFile, 9) +SVC_(NotifyChangeKey, 10) +SVC_(NotifyChangeMultipleKeys, 12) +SVC_(OpenDirectoryObject, 3) +SVC_(OpenEvent, 3) +SVC_(OpenEventPair, 3) +SVC_(OpenFile, 6) +SVC_(OpenIoCompletion, 3) +SVC_(OpenJobObject, 3) +SVC_(OpenKey, 3) +SVC_(OpenMutant, 3) +SVC_(OpenObjectAuditAlarm, 12) +SVC_(OpenProcess, 4) +SVC_(OpenProcessToken, 3) +SVC_(OpenProcessTokenEx, 4) +SVC_(OpenSection, 3) +SVC_(OpenSemaphore, 3) +SVC_(OpenSymbolicLinkObject, 3) +SVC_(OpenThread, 4) +SVC_(OpenThreadToken, 4) +SVC_(OpenThreadTokenEx, 5) +SVC_(OpenTimer, 3) +SVC_(PlugPlayControl, 3) +SVC_(PowerInformation, 5) +SVC_(PrivilegeCheck, 3) +SVC_(PrivilegeObjectAuditAlarm, 6) +SVC_(PrivilegedServiceAuditAlarm, 5) +SVC_(ProtectVirtualMemory, 5) +SVC_(PulseEvent, 2) +SVC_(QueryAttributesFile, 2) +SVC_(QueryBootEntryOrder, 2) +SVC_(QueryBootOptions, 2) +SVC_(QueryDebugFilterState, 2) +SVC_(QueryDefaultLocale, 2) +SVC_(QueryDefaultUILanguage, 1) +SVC_(QueryDirectoryFile, 11) +SVC_(QueryDirectoryObject, 7) +SVC_(QueryDriverEntryOrder, 2) +SVC_(QueryEaFile, 9) +SVC_(QueryEvent, 5) +SVC_(QueryFullAttributesFile, 2) +SVC_(QueryInformationAtom, 5) +SVC_(QueryInformationFile, 5) +SVC_(QueryInformationJobObject, 5) +SVC_(QueryInformationPort, 5) +SVC_(QueryInformationProcess, 5) +SVC_(QueryInformationThread, 5) +SVC_(QueryInformationToken, 5) +SVC_(QueryInstallUILanguage, 1) +SVC_(QueryIntervalProfile, 2) +SVC_(QueryIoCompletion, 5) +SVC_(QueryKey, 5) +SVC_(QueryMultipleValueKey, 6) +SVC_(QueryMutant, 5) +SVC_(QueryObject, 5) +SVC_(QueryOpenSubKeys, 2) +SVC_(QueryOpenSubKeysEx, 4) +SVC_(QueryPerformanceCounter, 2) +SVC_(QueryQuotaInformationFile, 9) +SVC_(QuerySection, 5) +SVC_(QuerySecurityObject, 5) +SVC_(QuerySemaphore, 5) +SVC_(QuerySymbolicLinkObject, 3) +SVC_(QuerySystemEnvironmentValue, 4) +SVC_(QuerySystemEnvironmentValueEx, 5) +SVC_(QuerySystemInformation, 4) +SVC_(QuerySystemTime, 1) +SVC_(QueryTimer, 5) +SVC_(QueryTimerResolution, 3) +SVC_(QueryValueKey, 6) +SVC_(QueryVirtualMemory, 6) +SVC_(QueryVolumeInformationFile, 5) +SVC_(QueueApcThread, 5) +SVC_(RaiseException, 3) +SVC_(RaiseHardError, 6) +SVC_(ReadFile, 9) +SVC_(ReadFileScatter, 9) +SVC_(ReadRequestData, 6) +SVC_(ReadVirtualMemory, 5) +SVC_(RegisterThreadTerminatePort, 1) +SVC_(ReleaseMutant, 2) +SVC_(ReleaseSemaphore, 3) +SVC_(RemoveIoCompletion, 5) +SVC_(RemoveProcessDebug, 2) +SVC_(RenameKey, 2) +SVC_(ReplaceKey, 3) +SVC_(ReplyPort, 2) +SVC_(ReplyWaitReceivePort, 4) +SVC_(ReplyWaitReceivePortEx, 5) +SVC_(ReplyWaitReplyPort, 2) +SVC_(RequestDeviceWakeup, 1) +SVC_(RequestPort, 2) +SVC_(RequestWaitReplyPort, 3) +SVC_(RequestWakeupLatency, 1) +SVC_(ResetEvent, 2) +SVC_(ResetWriteWatch, 3) +SVC_(RestoreKey, 3) +SVC_(ResumeProcess, 1) +SVC_(ResumeThread, 2) +SVC_(SaveKey, 2) +SVC_(SaveKeyEx, 3) +SVC_(SaveMergedKeys, 3) +SVC_(SecureConnectPort, 9) +SVC_(SetBootEntryOrder, 2) +SVC_(SetBootOptions, 2) +SVC_(SetContextThread, 2) +SVC_(SetDebugFilterState, 3) +SVC_(SetDefaultHardErrorPort, 1) +SVC_(SetDefaultLocale, 2) +SVC_(SetDefaultUILanguage, 1) +SVC_(SetDriverEntryOrder, 2) +SVC_(SetEaFile, 4) +SVC_(SetEvent, 2) +SVC_(SetEventBoostPriority, 1) +SVC_(SetHighEventPair, 1) +SVC_(SetHighWaitLowEventPair, 1) +SVC_(SetInformationDebugObject, 5) +SVC_(SetInformationFile, 5) +SVC_(SetInformationJobObject, 4) +SVC_(SetInformationKey, 4) +SVC_(SetInformationObject, 4) +SVC_(SetInformationProcess, 4) +SVC_(SetInformationThread, 4) +SVC_(SetInformationToken, 4) +SVC_(SetIntervalProfile, 2) +SVC_(SetIoCompletion, 5) +SVC_(SetLdtEntries, 6) +SVC_(SetLowEventPair, 1) +SVC_(SetLowWaitHighEventPair, 1) +SVC_(SetQuotaInformationFile, 4) +SVC_(SetSecurityObject, 3) +SVC_(SetSystemEnvironmentValue, 2) +SVC_(SetSystemEnvironmentValueEx, 2) +SVC_(SetSystemInformation, 3) +SVC_(SetSystemPowerState, 3) +SVC_(SetSystemTime, 2) +SVC_(SetThreadExecutionState, 2) +SVC_(SetTimer, 7) +SVC_(SetTimerResolution, 3) +SVC_(SetUuidSeed, 1) +SVC_(SetValueKey, 6) +SVC_(SetVolumeInformationFile, 5) +SVC_(ShutdownSystem, 1) +SVC_(SignalAndWaitForSingleObject, 4) +SVC_(StartProfile, 1) +SVC_(StopProfile, 1) +SVC_(SuspendProcess, 1) +SVC_(SuspendThread, 2) +SVC_(SystemDebugControl, 6) +SVC_(TerminateJobObject, 2) +SVC_(TerminateProcess, 2) +SVC_(TerminateThread, 2) +SVC_(TestAlert, 0) +SVC_(TraceEvent, 4) +SVC_(TranslateFilePath, 4) +SVC_(UnloadDriver, 1) +SVC_(UnloadKey, 1) +SVC_(UnloadKey2, 2) +SVC_(UnloadKeyEx, 2) +SVC_(UnlockFile, 5) +SVC_(UnlockVirtualMemory, 4) +SVC_(UnmapViewOfSection, 2) +SVC_(VdmControl, 2) +SVC_(WaitForDebugEvent, 4) +SVC_(WaitForMultipleObjects, 5) +SVC_(WaitForSingleObject, 3) +SVC_(WaitHighEventPair, 1) +SVC_(WaitLowEventPair, 1) +SVC_(WriteFile, 9) +SVC_(WriteFileGather, 9) +SVC_(WriteRequestData, 6) +SVC_(WriteVirtualMemory, 5) +SVC_(YieldExecution, 0) +SVC_(CreateKeyedEvent, 4) +SVC_(OpenKeyedEvent, 3) +SVC_(ReleaseKeyedEvent, 4) +SVC_(WaitForKeyedEvent, 4) +SVC_(QueryPortInformationProcess, 0) +SVC_(GetCurrentProcessorNumber, 0) +SVC_(WaitForMultipleObjects32, 5) diff --git a/reactos/ntoskrnl/ex/zw.S b/reactos/ntoskrnl/ex/zw.S new file mode 100644 index 00000000000..f4b26793d2a --- /dev/null +++ b/reactos/ntoskrnl/ex/zw.S @@ -0,0 +1,12 @@ + +#include +#include + +.code + +SyscallId = 0 +#define SVC_(name, argcount) STUB_K name, argcount + +#include "sysfuncs.h" + +END diff --git a/reactos/ntoskrnl/ntoskrnl-generic.rbuild b/reactos/ntoskrnl/ntoskrnl-generic.rbuild index 6056698c2b2..5d01e44447b 100644 --- a/reactos/ntoskrnl/ntoskrnl-generic.rbuild +++ b/reactos/ntoskrnl/ntoskrnl-generic.rbuild @@ -215,7 +215,7 @@ dbgkutil.c dbgkobj.c - + zw.S diff --git a/reactos/subsystems/win32/win32k/w32ksvc.h b/reactos/subsystems/win32/win32k/w32ksvc.h index 1b1fe116b40..27b727cb5d9 100644 --- a/reactos/subsystems/win32/win32k/w32ksvc.h +++ b/reactos/subsystems/win32/win32k/w32ksvc.h @@ -2,694 +2,694 @@ // // Funcs, order, should, match, Windows, XP, 5.1.2600, SP2) // -SVC_(NtGdiAbortDoc, 1) -SVC_(NtGdiAbortPath, 1) -SVC_(NtGdiAddFontResourceW, 6) -SVC_(NtGdiAddRemoteFontToDC, 4) -SVC_(NtGdiAddFontMemResourceEx, 5) -SVC_(NtGdiRemoveMergeFont, 2) -SVC_(NtGdiAddRemoteMMInstanceToDC, 3) -SVC_(NtGdiAlphaBlend, 12) -SVC_(NtGdiAngleArc, 6) -SVC_(NtGdiAnyLinkedFonts, 0) -SVC_(NtGdiFontIsLinked, 1) -SVC_(NtGdiArcInternal, 10) -SVC_(NtGdiBeginPath, 1) -SVC_(NtGdiBitBlt, 11) -SVC_(NtGdiCancelDC, 1) -SVC_(NtGdiCheckBitmapBits, 8) -SVC_(NtGdiCloseFigure, 1) -SVC_(NtGdiClearBitmapAttributes, 2) -SVC_(NtGdiClearBrushAttributes, 2) -SVC_(NtGdiColorCorrectPalette, 6) -SVC_(NtGdiCombineRgn, 4) -SVC_(NtGdiCombineTransform, 3) -SVC_(NtGdiComputeXformCoefficients, 1) -SVC_(NtGdiConsoleTextOut, 4) -SVC_(NtGdiConvertMetafileRect, 2) -SVC_(NtGdiCreateBitmap, 5) -SVC_(NtGdiCreateClientObj, 1) -SVC_(NtGdiCreateColorSpace, 1) -SVC_(NtGdiCreateColorTransform, 8) -SVC_(NtGdiCreateCompatibleBitmap, 3) -SVC_(NtGdiCreateCompatibleDC, 1) -SVC_(NtGdiCreateDIBBrush, 6) -SVC_(NtGdiCreateDIBitmapInternal, 11) -SVC_(NtGdiCreateDIBSection, 9) -SVC_(NtGdiCreateEllipticRgn, 4) -SVC_(NtGdiCreateHalftonePalette, 1) -SVC_(NtGdiCreateHatchBrushInternal, 3) -SVC_(NtGdiCreateMetafileDC, 1) -SVC_(NtGdiCreatePaletteInternal, 2) -SVC_(NtGdiCreatePatternBrushInternal, 3) -SVC_(NtGdiCreatePen, 4) -SVC_(NtGdiCreateRectRgn, 4) -SVC_(NtGdiCreateRoundRectRgn, 6) -SVC_(NtGdiCreateServerMetaFile, 6) -SVC_(NtGdiCreateSolidBrush, 2) -SVC_(NtGdiD3dContextCreate, 4) -SVC_(NtGdiD3dContextDestroy, 1) -SVC_(NtGdiD3dContextDestroyAll, 1) -SVC_(NtGdiD3dValidateTextureStageState, 1) -SVC_(NtGdiD3dDrawPrimitives2, 7) -SVC_(NtGdiDdGetDriverState, 1) -SVC_(NtGdiDdAddAttachedSurface, 3) -SVC_(NtGdiDdAlphaBlt, 3) -SVC_(NtGdiDdAttachSurface, 2) -SVC_(NtGdiDdBeginMoCompFrame, 2) -SVC_(NtGdiDdBlt, 3) -SVC_(NtGdiDdCanCreateSurface, 2) -SVC_(NtGdiDdCanCreateD3DBuffer, 2) -SVC_(NtGdiDdColorControl, 2) -SVC_(NtGdiDdCreateDirectDrawObject, 1) -SVC_(NtGdiDdCreateSurface, 8) -SVC_(NtGdiDdCreateD3DBuffer, 8) -SVC_(NtGdiDdCreateMoComp, 2) -SVC_(NtGdiDdCreateSurfaceObject, 6) -SVC_(NtGdiDdDeleteDirectDrawObject, 1) -SVC_(NtGdiDdDeleteSurfaceObject, 1) -SVC_(NtGdiDdDestroyMoComp, 2) -SVC_(NtGdiDdDestroySurface, 2) -SVC_(NtGdiDdDestroyD3DBuffer, 1) -SVC_(NtGdiDdEndMoCompFrame, 2) -SVC_(NtGdiDdFlip, 5) -SVC_(NtGdiDdFlipToGDISurface, 2) -SVC_(NtGdiDdGetAvailDriverMemory, 2) -SVC_(NtGdiDdGetBltStatus, 2) -SVC_(NtGdiDdGetDC, 2) -SVC_(NtGdiDdGetDriverInfo, 2) -SVC_(NtGdiDdGetDxHandle, 3) -SVC_(NtGdiDdGetFlipStatus, 2) -SVC_(NtGdiDdGetInternalMoCompInfo, 2) -SVC_(NtGdiDdGetMoCompBuffInfo, 2) -SVC_(NtGdiDdGetMoCompGuids, 2) -SVC_(NtGdiDdGetMoCompFormats, 2) -SVC_(NtGdiDdGetScanLine, 2) -SVC_(NtGdiDdLock, 3) -SVC_(NtGdiDdLockD3D, 2) -SVC_(NtGdiDdQueryDirectDrawObject, 11) -SVC_(NtGdiDdQueryMoCompStatus, 2) -SVC_(NtGdiDdReenableDirectDrawObject, 2) -SVC_(NtGdiDdReleaseDC, 1) -SVC_(NtGdiDdRenderMoComp, 2) -SVC_(NtGdiDdResetVisrgn, 2) -SVC_(NtGdiDdSetColorKey, 2) -SVC_(NtGdiDdSetExclusiveMode, 2) -SVC_(NtGdiDdSetGammaRamp, 3) -SVC_(NtGdiDdCreateSurfaceEx, 3) -SVC_(NtGdiDdSetOverlayPosition, 3) -SVC_(NtGdiDdUnattachSurface, 2) -SVC_(NtGdiDdUnlock, 2) -SVC_(NtGdiDdUnlockD3D, 2) -SVC_(NtGdiDdUpdateOverlay, 3) -SVC_(NtGdiDdWaitForVerticalBlank, 2) -SVC_(NtGdiDvpCanCreateVideoPort, 2) -SVC_(NtGdiDvpColorControl, 2) -SVC_(NtGdiDvpCreateVideoPort, 2) -SVC_(NtGdiDvpDestroyVideoPort, 2) -SVC_(NtGdiDvpFlipVideoPort, 4) -SVC_(NtGdiDvpGetVideoPortBandwidth, 2) -SVC_(NtGdiDvpGetVideoPortField, 2) -SVC_(NtGdiDvpGetVideoPortFlipStatus, 2) -SVC_(NtGdiDvpGetVideoPortInputFormats, 2) -SVC_(NtGdiDvpGetVideoPortLine, 2) -SVC_(NtGdiDvpGetVideoPortOutputFormats, 2) -SVC_(NtGdiDvpGetVideoPortConnectInfo, 2) -SVC_(NtGdiDvpGetVideoSignalStatus, 2) -SVC_(NtGdiDvpUpdateVideoPort, 4) -SVC_(NtGdiDvpWaitForVideoPortSync, 2) -SVC_(NtGdiDvpAcquireNotification, 3) -SVC_(NtGdiDvpReleaseNotification, 2) -SVC_(NtGdiDxgGenericThunk, 6) -SVC_(NtGdiDeleteClientObj, 1) -SVC_(NtGdiDeleteColorSpace, 1) -SVC_(NtGdiDeleteColorTransform, 2) -SVC_(NtGdiDeleteObjectApp, 1) -SVC_(NtGdiDescribePixelFormat, 4) -SVC_(NtGdiGetPerBandInfo, 2) -SVC_(NtGdiDoBanding, 4) -SVC_(NtGdiDoPalette, 6) -SVC_(NtGdiDrawEscape, 4) -SVC_(NtGdiEllipse, 5) -SVC_(NtGdiEnableEudc, 1) -SVC_(NtGdiEndDoc, 1) -SVC_(NtGdiEndPage, 1) -SVC_(NtGdiEndPath, 1) -SVC_(NtGdiEnumFontChunk, 5) -SVC_(NtGdiEnumFontClose, 1) -SVC_(NtGdiEnumFontOpen, 7) -SVC_(NtGdiEnumObjects, 4) -SVC_(NtGdiEqualRgn, 2) -SVC_(NtGdiEudcLoadUnloadLink, 7) -SVC_(NtGdiExcludeClipRect, 5) -SVC_(NtGdiExtCreatePen, 11) -SVC_(NtGdiExtCreateRegion, 3) -SVC_(NtGdiExtEscape, 8) -SVC_(NtGdiExtFloodFill, 5) -SVC_(NtGdiExtGetObjectW, 3) -SVC_(NtGdiExtSelectClipRgn, 3) -SVC_(NtGdiExtTextOutW, 9) -SVC_(NtGdiFillPath, 1) -SVC_(NtGdiFillRgn, 3) -SVC_(NtGdiFlattenPath, 1) -SVC_(NtGdiFlushUserBatch, 0) -SVC_(NtGdiFlush, 0) -SVC_(NtGdiForceUFIMapping, 2) -SVC_(NtGdiFrameRgn, 5) -SVC_(NtGdiFullscreenControl, 5) -SVC_(NtGdiGetAndSetDCDword, 4) -SVC_(NtGdiGetAppClipBox, 2) -SVC_(NtGdiGetBitmapBits, 3) -SVC_(NtGdiGetBitmapDimension, 2) -SVC_(NtGdiGetBoundsRect, 3) -SVC_(NtGdiGetCharABCWidthsW, 6) -SVC_(NtGdiGetCharacterPlacementW, 6) -SVC_(NtGdiGetCharSet, 1) -SVC_(NtGdiGetCharWidthW, 6) -SVC_(NtGdiGetCharWidthInfo, 2) -SVC_(NtGdiGetColorAdjustment, 2) -SVC_(NtGdiGetColorSpaceforBitmap, 1) -SVC_(NtGdiGetDCDword, 3) -SVC_(NtGdiGetDCforBitmap, 1) -SVC_(NtGdiGetDCObject, 2) -SVC_(NtGdiGetDCPoint, 3) -SVC_(NtGdiGetDeviceCaps, 2) -SVC_(NtGdiGetDeviceGammaRamp, 2) -SVC_(NtGdiGetDeviceCapsAll, 2) -SVC_(NtGdiGetDIBitsInternal, 9) -SVC_(NtGdiGetETM, 2) -SVC_(NtGdiGetEudcTimeStampEx, 3) -SVC_(NtGdiGetFontData, 5) -SVC_(NtGdiGetFontResourceInfoInternalW, 7) -SVC_(NtGdiGetGlyphIndicesW, 5) -SVC_(NtGdiGetGlyphIndicesWInternal, 6) -SVC_(NtGdiGetGlyphOutline, 8) -SVC_(NtGdiGetKerningPairs, 3) -SVC_(NtGdiGetLinkedUFIs, 3) -SVC_(NtGdiGetMiterLimit, 2) -SVC_(NtGdiGetMonitorID, 3) -SVC_(NtGdiGetNearestColor, 2) -SVC_(NtGdiGetNearestPaletteIndex, 2) -SVC_(NtGdiGetObjectBitmapHandle, 2) -SVC_(NtGdiGetOutlineTextMetricsInternalW, 4) -SVC_(NtGdiGetPath, 4) -SVC_(NtGdiGetPixel, 3) -SVC_(NtGdiGetRandomRgn, 3) -SVC_(NtGdiGetRasterizerCaps, 2) -SVC_(NtGdiGetRealizationInfo, 3) -SVC_(NtGdiGetRegionData, 3) -SVC_(NtGdiGetRgnBox, 2) -SVC_(NtGdiGetServerMetaFileBits, 7) -SVC_(NtGdiGetSpoolMessage, 4) -SVC_(NtGdiGetStats, 5) -SVC_(NtGdiGetStockObject, 1) -SVC_(NtGdiGetStringBitmapW, 5) -SVC_(NtGdiGetSystemPaletteUse, 1) -SVC_(NtGdiGetTextCharsetInfo, 3) -SVC_(NtGdiGetTextExtent, 5) -SVC_(NtGdiGetTextExtentExW, 8) -SVC_(NtGdiGetTextFaceW, 4) -SVC_(NtGdiGetTextMetricsW, 3) -SVC_(NtGdiGetTransform, 3) -SVC_(NtGdiGetUFI, 6) -SVC_(NtGdiGetEmbUFI, 7) -SVC_(NtGdiGetUFIPathname, 10) -SVC_(NtGdiGetEmbedFonts, 0) -SVC_(NtGdiChangeGhostFont, 2) -SVC_(NtGdiAddEmbFontToDC, 2) -SVC_(NtGdiGetFontUnicodeRanges, 2) -SVC_(NtGdiGetWidthTable, 7) -SVC_(NtGdiGradientFill, 6) -SVC_(NtGdiHfontCreate, 5) -SVC_(NtGdiIcmBrushInfo, 8) -SVC_(NtGdiInit, 0) -SVC_(NtGdiInitSpool, 0) -SVC_(NtGdiIntersectClipRect, 5) -SVC_(NtGdiInvertRgn, 2) -SVC_(NtGdiLineTo, 3) -SVC_(NtGdiMakeFontDir, 5) -SVC_(NtGdiMakeInfoDC, 2) -SVC_(NtGdiMaskBlt, 13) -SVC_(NtGdiModifyWorldTransform, 3) -SVC_(NtGdiMonoBitmap, 1) -SVC_(NtGdiMoveTo, 4) -SVC_(NtGdiOffsetClipRgn, 3) -SVC_(NtGdiOffsetRgn, 3) -SVC_(NtGdiOpenDCW, 8) -SVC_(NtGdiPatBlt, 6) -SVC_(NtGdiPolyPatBlt, 5) -SVC_(NtGdiPathToRegion, 1) -SVC_(NtGdiPlgBlt, 11) -SVC_(NtGdiPolyDraw, 4) -SVC_(NtGdiPolyPolyDraw, 5) -SVC_(NtGdiPolyTextOutW, 4) -SVC_(NtGdiPtInRegion, 3) -SVC_(NtGdiPtVisible, 3) -SVC_(NtGdiQueryFonts, 3) -SVC_(NtGdiQueryFontAssocInfo, 1) -SVC_(NtGdiRectangle, 5) -SVC_(NtGdiRectInRegion, 2) -SVC_(NtGdiRectVisible, 2) -SVC_(NtGdiRemoveFontResourceW, 6) -SVC_(NtGdiRemoveFontMemResourceEx, 1) -SVC_(NtGdiResetDC, 5) -SVC_(NtGdiResizePalette, 2) -SVC_(NtGdiRestoreDC, 2) -SVC_(NtGdiRoundRect, 7) -SVC_(NtGdiSaveDC, 1) -SVC_(NtGdiScaleViewportExtEx, 6) -SVC_(NtGdiScaleWindowExtEx, 6) -SVC_(NtGdiSelectBitmap, 2) -SVC_(NtGdiSelectBrush, 2) -SVC_(NtGdiSelectClipPath, 2) -SVC_(NtGdiSelectFont, 2) -SVC_(NtGdiSelectPen, 2) -SVC_(NtGdiSetBitmapAttributes, 2) -SVC_(NtGdiSetBitmapBits, 3) -SVC_(NtGdiSetBitmapDimension, 4) -SVC_(NtGdiSetBoundsRect, 3) -SVC_(NtGdiSetBrushAttributes, 2) -SVC_(NtGdiSetBrushOrg, 4) -SVC_(NtGdiSetColorAdjustment, 2) -SVC_(NtGdiSetColorSpace, 2) -SVC_(NtGdiSetDeviceGammaRamp, 2) -SVC_(NtGdiSetDIBitsToDeviceInternal, 16) -SVC_(NtGdiSetFontEnumeration, 1) -SVC_(NtGdiSetFontXform, 3) -SVC_(NtGdiSetIcmMode, 3) -SVC_(NtGdiSetLinkedUFIs, 3) -SVC_(NtGdiSetMagicColors, 3) -SVC_(NtGdiSetMetaRgn, 1) -SVC_(NtGdiSetMiterLimit, 3) -SVC_(NtGdiGetDeviceWidth, 1) -SVC_(NtGdiMirrorWindowOrg, 1) -SVC_(NtGdiSetLayout, 3) -SVC_(NtGdiSetPixel, 4) -SVC_(NtGdiSetPixelFormat, 2) -SVC_(NtGdiSetRectRgn, 5) -SVC_(NtGdiSetSystemPaletteUse, 2) -SVC_(NtGdiSetTextJustification, 3) -SVC_(NtGdiSetupPublicCFONT, 3) -SVC_(NtGdiSetVirtualResolution, 5) -SVC_(NtGdiSetSizeDevice, 3) -SVC_(NtGdiStartDoc, 4) -SVC_(NtGdiStartPage, 1) -SVC_(NtGdiStretchBlt, 12) -SVC_(NtGdiStretchDIBitsInternal, 16) -SVC_(NtGdiStrokeAndFillPath, 1) -SVC_(NtGdiStrokePath, 1) -SVC_(NtGdiSwapBuffers, 1) -SVC_(NtGdiTransformPoints, 5) -SVC_(NtGdiTransparentBlt, 11) -SVC_(NtGdiUnloadPrinterDriver, 2) -SVC_(NtGdiUnmapMemFont, 1) -SVC_(NtGdiUnrealizeObject, 1) -SVC_(NtGdiUpdateColors, 1) -SVC_(NtGdiWidenPath, 1) -SVC_(NtUserActivateKeyboardLayout, 2) -SVC_(NtUserAlterWindowStyle, 3) -SVC_(NtUserAssociateInputContext, 3) -SVC_(NtUserAttachThreadInput, 3) -SVC_(NtUserBeginPaint, 2) -SVC_(NtUserBitBltSysBmp, 8) -SVC_(NtUserBlockInput, 1) -SVC_(NtUserBuildHimcList, 4) -SVC_(NtUserBuildHwndList, 7) -SVC_(NtUserBuildNameList, 4) -SVC_(NtUserBuildPropList, 4) -SVC_(NtUserCallHwnd, 2) -SVC_(NtUserCallHwndLock, 2) -SVC_(NtUserCallHwndOpt, 2) -SVC_(NtUserCallHwndParam, 3) -SVC_(NtUserCallHwndParamLock, 3) -SVC_(NtUserCallMsgFilter, 2) -SVC_(NtUserCallNextHookEx, 4) -SVC_(NtUserCallNoParam, 1) -SVC_(NtUserCallOneParam, 2) -SVC_(NtUserCallTwoParam, 3) -SVC_(NtUserChangeClipboardChain, 2) -SVC_(NtUserChangeDisplaySettings, 5) -SVC_(NtUserCheckImeHotKey, 2) -SVC_(NtUserCheckMenuItem, 3) -SVC_(NtUserChildWindowFromPointEx, 4) -SVC_(NtUserClipCursor, 1) -SVC_(NtUserCloseClipboard, 0) -SVC_(NtUserCloseDesktop, 1) -SVC_(NtUserCloseWindowStation, 1) -SVC_(NtUserConsoleControl, 3) -SVC_(NtUserConvertMemHandle, 2) -SVC_(NtUserCopyAcceleratorTable, 3) -SVC_(NtUserCountClipboardFormats, 0) -SVC_(NtUserCreateAcceleratorTable, 2) -SVC_(NtUserCreateCaret, 4) -SVC_(NtUserCreateDesktop, 5) -SVC_(NtUserCreateInputContext, 1) -SVC_(NtUserCreateLocalMemHandle, 4) -SVC_(NtUserCreateWindowEx, 15) -SVC_(NtUserCreateWindowStation, 7) -SVC_(NtUserDdeGetQualityOfService, 3) -SVC_(NtUserDdeInitialize, 5) -SVC_(NtUserDdeSetQualityOfService, 3) -SVC_(NtUserDeferWindowPos, 8) -SVC_(NtUserDefSetText, 2) -SVC_(NtUserDeleteMenu, 3) -SVC_(NtUserDestroyAcceleratorTable, 1) -SVC_(NtUserDestroyCursor, 2) -SVC_(NtUserDestroyInputContext, 1) -SVC_(NtUserDestroyMenu, 1) -SVC_(NtUserDestroyWindow, 1) -SVC_(NtUserDisableThreadIme, 1) -SVC_(NtUserDispatchMessage, 1) -SVC_(NtUserDragDetect, 3) -SVC_(NtUserDragObject, 5) -SVC_(NtUserDrawAnimatedRects, 4) -SVC_(NtUserDrawCaption, 4) -SVC_(NtUserDrawCaptionTemp, 7) -SVC_(NtUserDrawIconEx, 11) -SVC_(NtUserDrawMenuBarTemp, 5) -SVC_(NtUserEmptyClipboard, 0) -SVC_(NtUserEnableMenuItem, 3) -SVC_(NtUserEnableScrollBar, 3) -SVC_(NtUserEndDeferWindowPosEx, 2) -SVC_(NtUserEndMenu, 0) -SVC_(NtUserEndPaint, 2) -SVC_(NtUserEnumDisplayDevices, 4) -// SVC_(NtUserEnumDisplayMonitors, 4, Wrong, number, of, param, ?) -SVC_(NtUserEnumDisplayMonitors, 5) -SVC_(NtUserEnumDisplaySettings, 4) -SVC_(NtUserEvent, 1) -SVC_(NtUserExcludeUpdateRgn, 2) -SVC_(NtUserFillWindow, 4) -// SVC_(NtUserFindExistingCursorIcon, 3, Wrong, number, of, param, ?) -SVC_(NtUserFindExistingCursorIcon, 4) -SVC_(NtUserFindWindowEx, 5) -SVC_(NtUserFlashWindowEx, 1) -SVC_(NtUserGetAltTabInfo, 6) -SVC_(NtUserGetAncestor, 2) -SVC_(NtUserGetAppImeLevel, 1) -SVC_(NtUserGetAsyncKeyState, 1) -SVC_(NtUserGetAtomName, 2) -SVC_(NtUserGetCaretBlinkTime, 0) -SVC_(NtUserGetCaretPos, 1) -SVC_(NtUserGetClassInfo, 5) -SVC_(NtUserGetClassName, 3) -SVC_(NtUserGetClipboardData, 2) -SVC_(NtUserGetClipboardFormatName, 3) -SVC_(NtUserGetClipboardOwner, 0) -SVC_(NtUserGetClipboardSequenceNumber, 0) -SVC_(NtUserGetClipboardViewer, 0) -SVC_(NtUserGetClipCursor, 1) -SVC_(NtUserGetComboBoxInfo, 2) -SVC_(NtUserGetControlBrush, 3) -SVC_(NtUserGetControlColor, 4) -SVC_(NtUserGetCPD, 3) -SVC_(NtUserGetCursorFrameInfo, 4) -SVC_(NtUserGetCursorInfo, 1) -SVC_(NtUserGetDC, 1) -SVC_(NtUserGetDCEx, 3) -SVC_(NtUserGetDoubleClickTime, 0) -SVC_(NtUserGetForegroundWindow, 0) -SVC_(NtUserGetGuiResources, 2) -SVC_(NtUserGetGUIThreadInfo, 2) -SVC_(NtUserGetIconInfo, 6) -SVC_(NtUserGetIconSize, 4) -SVC_(NtUserGetImeHotKey, 4) -SVC_(NtUserGetImeInfoEx, 2) -SVC_(NtUserGetInternalWindowPos, 3) -SVC_(NtUserGetKeyboardLayoutList, 2) -SVC_(NtUserGetKeyboardLayoutName, 1) -SVC_(NtUserGetKeyboardState, 1) -SVC_(NtUserGetKeyNameText, 3) -SVC_(NtUserGetKeyState, 1) -SVC_(NtUserGetListBoxInfo, 1) -SVC_(NtUserGetMenuBarInfo, 4) -SVC_(NtUserGetMenuIndex, 2) -SVC_(NtUserGetMenuItemRect, 4) -SVC_(NtUserGetMessage, 4) -SVC_(NtUserGetMouseMovePointsEx, 5) -SVC_(NtUserGetObjectInformation, 5) -SVC_(NtUserGetOpenClipboardWindow, 0) -SVC_(NtUserGetPriorityClipboardFormat, 2) -SVC_(NtUserGetProcessWindowStation, 0) -SVC_(NtUserGetRawInputBuffer, 3) -SVC_(NtUserGetRawInputData, 5) -SVC_(NtUserGetRawInputDeviceInfo, 4) -SVC_(NtUserGetRawInputDeviceList, 3) -SVC_(NtUserGetRegisteredRawInputDevices, 3) -SVC_(NtUserGetScrollBarInfo, 3) -SVC_(NtUserGetSystemMenu, 2) -SVC_(NtUserGetThreadDesktop, 2) -SVC_(NtUserGetThreadState, 1) -SVC_(NtUserGetTitleBarInfo, 2) -SVC_(NtUserGetUpdateRect, 3) -SVC_(NtUserGetUpdateRgn, 3) -SVC_(NtUserGetWindowDC, 1) -SVC_(NtUserGetWindowPlacement, 2) -SVC_(NtUserGetWOWClass, 2) -SVC_(NtUserHardErrorControl, 3) -SVC_(NtUserHideCaret, 1) -SVC_(NtUserHiliteMenuItem, 4) -SVC_(NtUserImpersonateDdeClientWindow, 2) -SVC_(NtUserInitialize, 3) -SVC_(NtUserInitializeClientPfnArrays, 4) -SVC_(NtUserInitTask, 12) -SVC_(NtUserInternalGetWindowText, 3) -SVC_(NtUserInvalidateRect, 3) -SVC_(NtUserInvalidateRgn, 3) -SVC_(NtUserIsClipboardFormatAvailable, 1) -SVC_(NtUserKillTimer, 2) -SVC_(NtUserLoadKeyboardLayoutEx, 7) -SVC_(NtUserLockWindowStation, 1) -SVC_(NtUserLockWindowUpdate, 1) -SVC_(NtUserLockWorkStation, 0) -SVC_(NtUserMapVirtualKeyEx, 4) -SVC_(NtUserMenuItemFromPoint, 4) -SVC_(NtUserMessageCall, 7) -SVC_(NtUserMinMaximize, 3) -SVC_(NtUserMNDragLeave, 0) -SVC_(NtUserMNDragOver, 2) -SVC_(NtUserModifyUserStartupInfoFlags, 2) -SVC_(NtUserMoveWindow, 6) -SVC_(NtUserNotifyIMEStatus, 3) -SVC_(NtUserNotifyProcessCreate, 4) -SVC_(NtUserNotifyWinEvent, 4) -SVC_(NtUserOpenClipboard, 2) -SVC_(NtUserOpenDesktop, 3) -SVC_(NtUserOpenInputDesktop, 3) -SVC_(NtUserOpenWindowStation, 2) -SVC_(NtUserPaintDesktop, 1) -SVC_(NtUserPeekMessage, 5) -SVC_(NtUserPostMessage, 4) -SVC_(NtUserPostThreadMessage, 4) -SVC_(NtUserPrintWindow, 3) -SVC_(NtUserProcessConnect, 3) -SVC_(NtUserQueryInformationThread, 5) -SVC_(NtUserQueryInputContext, 2) -SVC_(NtUserQuerySendMessage, 1) -SVC_(NtUserQueryUserCounters, 5) -SVC_(NtUserQueryWindow, 2) -SVC_(NtUserRealChildWindowFromPoint, 3) -SVC_(NtUserRealInternalGetMessage, 6) -SVC_(NtUserRealWaitMessageEx, 2) -SVC_(NtUserRedrawWindow, 4) -SVC_(NtUserRegisterClassExWOW, 7) -SVC_(NtUserRegisterUserApiHook, 4) -SVC_(NtUserRegisterHotKey, 4) -SVC_(NtUserRegisterRawInputDevices, 3) -SVC_(NtUserRegisterTasklist, 1) -SVC_(NtUserRegisterWindowMessage, 1) -SVC_(NtUserRemoveMenu, 3) -SVC_(NtUserRemoveProp, 2) -SVC_(NtUserResolveDesktop, 4) -SVC_(NtUserResolveDesktopForWOW, 1) -SVC_(NtUserSBGetParms, 4) -SVC_(NtUserScrollDC, 7) -SVC_(NtUserScrollWindowEx, 8) -SVC_(NtUserSelectPalette, 3) -SVC_(NtUserSendInput, 3) -SVC_(NtUserSetActiveWindow, 1) -SVC_(NtUserSetAppImeLevel, 2) -SVC_(NtUserSetCapture, 1) -SVC_(NtUserSetClassLong, 4) -SVC_(NtUserSetClassWord, 3) -SVC_(NtUserSetClipboardData, 3) -SVC_(NtUserSetClipboardViewer, 1) -SVC_(NtUserSetConsoleReserveKeys, 2) -SVC_(NtUserSetCursor, 1) -SVC_(NtUserSetCursorContents, 2) -SVC_(NtUserSetCursorIconData, 6) -SVC_(NtUserSetDbgTag, 2) -SVC_(NtUserSetFocus, 1) -SVC_(NtUserSetImeHotKey, 5) -SVC_(NtUserSetImeInfoEx, 1) -SVC_(NtUserSetImeOwnerWindow, 2) -SVC_(NtUserSetInformationProcess, 4) -SVC_(NtUserSetInformationThread, 4) -SVC_(NtUserSetInternalWindowPos, 4) -SVC_(NtUserSetKeyboardState, 1) -SVC_(NtUserSetLogonNotifyWindow, 1) -SVC_(NtUserSetMenu, 3) -SVC_(NtUserSetMenuContextHelpId, 2) -SVC_(NtUserSetMenuDefaultItem, 3) -SVC_(NtUserSetMenuFlagRtoL, 1) -SVC_(NtUserSetObjectInformation, 4) -SVC_(NtUserSetParent, 2) -SVC_(NtUserSetProcessWindowStation, 1) -SVC_(NtUserSetProp, 3) -SVC_(NtUserSetRipFlags, 2) -SVC_(NtUserSetScrollInfo, 4) -SVC_(NtUserSetShellWindowEx, 2) -SVC_(NtUserSetSysColors, 4) -SVC_(NtUserSetSystemCursor, 2) -SVC_(NtUserSetSystemMenu, 2) -SVC_(NtUserSetSystemTimer, 4) -SVC_(NtUserSetThreadDesktop, 1) -SVC_(NtUserSetThreadLayoutHandles, 2) -SVC_(NtUserSetThreadState, 2) -SVC_(NtUserSetTimer, 4) -SVC_(NtUserSetWindowFNID, 2) -SVC_(NtUserSetWindowLong, 4) -SVC_(NtUserSetWindowPlacement, 2) -SVC_(NtUserSetWindowPos, 7) -SVC_(NtUserSetWindowRgn, 3) -SVC_(NtUserSetWindowsHookAW, 3) -SVC_(NtUserSetWindowsHookEx, 6) -SVC_(NtUserSetWindowStationUser, 4) -SVC_(NtUserSetWindowWord, 3) -SVC_(NtUserSetWinEventHook, 8) -SVC_(NtUserShowCaret, 1) -SVC_(NtUserShowScrollBar, 3) -SVC_(NtUserShowWindow, 2) -SVC_(NtUserShowWindowAsync, 2) -SVC_(NtUserSoundSentry, 0) -SVC_(NtUserSwitchDesktop, 1) -SVC_(NtUserSystemParametersInfo, 4) -SVC_(NtUserTestForInteractiveUser, 1) -SVC_(NtUserThunkedMenuInfo, 2) -SVC_(NtUserThunkedMenuItemInfo, 6) -SVC_(NtUserToUnicodeEx, 7) -SVC_(NtUserTrackMouseEvent, 1) -SVC_(NtUserTrackPopupMenuEx, 6) -SVC_(NtUserCalcMenuBar, 5) -SVC_(NtUserPaintMenuBar, 6) -SVC_(NtUserTranslateAccelerator, 3) -SVC_(NtUserTranslateMessage, 2) -SVC_(NtUserUnhookWindowsHookEx, 1) -SVC_(NtUserUnhookWinEvent, 1) -SVC_(NtUserUnloadKeyboardLayout, 1) -SVC_(NtUserUnlockWindowStation, 1) -SVC_(NtUserUnregisterClass, 3) -SVC_(NtUserUnregisterUserApiHook, 0) -SVC_(NtUserUnregisterHotKey, 2) -SVC_(NtUserUpdateInputContext, 3) -SVC_(NtUserUpdateInstance, 3) -SVC_(NtUserUpdateLayeredWindow, 10) -SVC_(NtUserGetLayeredWindowAttributes, 4) -SVC_(NtUserSetLayeredWindowAttributes, 4) -SVC_(NtUserUpdatePerUserSystemParameters, 2) -SVC_(NtUserUserHandleGrantAccess, 3) -SVC_(NtUserValidateHandleSecure, 2) -SVC_(NtUserValidateRect, 2) -SVC_(NtUserValidateTimerCallback, 3) -SVC_(NtUserVkKeyScanEx, 3) -SVC_(NtUserWaitForInputIdle, 3) -SVC_(NtUserWaitForMsgAndEvent, 1) -SVC_(NtUserWaitMessage, 0) -SVC_(NtUserWin32PoolAllocationStats, 6) -SVC_(NtUserWindowFromPhysicalPoint, 2) -SVC_(NtUserWindowFromPoint, 2) -SVC_(NtUserYieldTask, 0) -SVC_(NtUserRemoteConnect, 3) -SVC_(NtUserRemoteRedrawRectangle, 4) -SVC_(NtUserRemoteRedrawScreen, 0) -SVC_(NtUserRemoteStopScreenUpdates, 0) -SVC_(NtUserCtxDisplayIOCtl, 3) -SVC_(NtGdiEngAssociateSurface, 3) -SVC_(NtGdiEngCreateBitmap, 6) -SVC_(NtGdiEngCreateDeviceSurface, 4) -SVC_(NtGdiEngCreateDeviceBitmap, 4) -SVC_(NtGdiEngCreatePalette, 6) -SVC_(NtGdiEngComputeGlyphSet, 3) -SVC_(NtGdiEngCopyBits, 6) -SVC_(NtGdiEngDeletePalette, 1) -SVC_(NtGdiEngDeleteSurface, 1) -SVC_(NtGdiEngEraseSurface, 3) -SVC_(NtGdiEngUnlockSurface, 1) -SVC_(NtGdiEngLockSurface, 1) -SVC_(NtGdiEngBitBlt, 11) -SVC_(NtGdiEngStretchBlt, 11) -SVC_(NtGdiEngPlgBlt, 11) -SVC_(NtGdiEngMarkBandingSurface, 1) -SVC_(NtGdiEngStrokePath, 8) -SVC_(NtGdiEngFillPath, 7) -SVC_(NtGdiEngStrokeAndFillPath, 10) -SVC_(NtGdiEngPaint, 5) -SVC_(NtGdiEngLineTo, 9) -SVC_(NtGdiEngAlphaBlend, 7) -SVC_(NtGdiEngGradientFill, 10) -SVC_(NtGdiEngTransparentBlt, 8) -SVC_(NtGdiEngTextOut, 10) -SVC_(NtGdiEngStretchBltROP, 13) -SVC_(NtGdiXLATEOBJ_cGetPalette, 4) -SVC_(NtGdiXLATEOBJ_iXlate, 2) -SVC_(NtGdiXLATEOBJ_hGetColorTransform, 1) -SVC_(NtGdiCLIPOBJ_bEnum, 3) -SVC_(NtGdiCLIPOBJ_cEnumStart, 5) -SVC_(NtGdiCLIPOBJ_ppoGetPath, 1) -SVC_(NtGdiEngDeletePath, 1) -SVC_(NtGdiEngCreateClip, 0) -SVC_(NtGdiEngDeleteClip, 1) -SVC_(NtGdiBRUSHOBJ_ulGetBrushColor, 1) -SVC_(NtGdiBRUSHOBJ_pvAllocRbrush, 2) -SVC_(NtGdiBRUSHOBJ_pvGetRbrush, 1) -SVC_(NtGdiBRUSHOBJ_hGetColorTransform, 1) -SVC_(NtGdiXFORMOBJ_bApplyXform, 5) -SVC_(NtGdiXFORMOBJ_iGetXform, 2) -SVC_(NtGdiFONTOBJ_vGetInfo, 3) -SVC_(NtGdiFONTOBJ_pxoGetXform, 1) -SVC_(NtGdiFONTOBJ_cGetGlyphs, 5) -SVC_(NtGdiFONTOBJ_pifi, 1) -SVC_(NtGdiFONTOBJ_pfdg, 1) -SVC_(NtGdiFONTOBJ_pQueryGlyphAttrs, 2) -SVC_(NtGdiFONTOBJ_pvTrueTypeFontFile, 2) -SVC_(NtGdiFONTOBJ_cGetAllGlyphHandles, 2) -SVC_(NtGdiSTROBJ_bEnum, 3) -SVC_(NtGdiSTROBJ_bEnumPositionsOnly, 3) -SVC_(NtGdiSTROBJ_bGetAdvanceWidths, 4) -SVC_(NtGdiSTROBJ_vEnumStart, 1) -SVC_(NtGdiSTROBJ_dwGetCodePage, 1) -SVC_(NtGdiPATHOBJ_vGetBounds, 2) -SVC_(NtGdiPATHOBJ_bEnum, 2) -SVC_(NtGdiPATHOBJ_vEnumStart, 1) -SVC_(NtGdiPATHOBJ_vEnumStartClipLines, 4) -SVC_(NtGdiPATHOBJ_bEnumClipLines, 3) -SVC_(NtGdiGetDhpdev, 1) -SVC_(NtGdiEngCheckAbort, 1) -SVC_(NtGdiHT_Get8BPPFormatPalette, 4) -SVC_(NtGdiHT_Get8BPPMaskPalette, 6) -SVC_(NtGdiUpdateTransform, 1) -SVC_(NtGdiSetPUMPDOBJ, 4) -SVC_(NtGdiBRUSHOBJ_DeleteRbrush, 2) -SVC_(NtGdiUMPDEngFreeUserMem, 1) -SVC_(NtGdiDrawStream, 3) +SVC_(GdiAbortDoc, 1) +SVC_(GdiAbortPath, 1) +SVC_(GdiAddFontResourceW, 6) +SVC_(GdiAddRemoteFontToDC, 4) +SVC_(GdiAddFontMemResourceEx, 5) +SVC_(GdiRemoveMergeFont, 2) +SVC_(GdiAddRemoteMMInstanceToDC, 3) +SVC_(GdiAlphaBlend, 12) +SVC_(GdiAngleArc, 6) +SVC_(GdiAnyLinkedFonts, 0) +SVC_(GdiFontIsLinked, 1) +SVC_(GdiArcInternal, 10) +SVC_(GdiBeginPath, 1) +SVC_(GdiBitBlt, 11) +SVC_(GdiCancelDC, 1) +SVC_(GdiCheckBitmapBits, 8) +SVC_(GdiCloseFigure, 1) +SVC_(GdiClearBitmapAttributes, 2) +SVC_(GdiClearBrushAttributes, 2) +SVC_(GdiColorCorrectPalette, 6) +SVC_(GdiCombineRgn, 4) +SVC_(GdiCombineTransform, 3) +SVC_(GdiComputeXformCoefficients, 1) +SVC_(GdiConsoleTextOut, 4) +SVC_(GdiConvertMetafileRect, 2) +SVC_(GdiCreateBitmap, 5) +SVC_(GdiCreateClientObj, 1) +SVC_(GdiCreateColorSpace, 1) +SVC_(GdiCreateColorTransform, 8) +SVC_(GdiCreateCompatibleBitmap, 3) +SVC_(GdiCreateCompatibleDC, 1) +SVC_(GdiCreateDIBBrush, 6) +SVC_(GdiCreateDIBitmapInternal, 11) +SVC_(GdiCreateDIBSection, 9) +SVC_(GdiCreateEllipticRgn, 4) +SVC_(GdiCreateHalftonePalette, 1) +SVC_(GdiCreateHatchBrushInternal, 3) +SVC_(GdiCreateMetafileDC, 1) +SVC_(GdiCreatePaletteInternal, 2) +SVC_(GdiCreatePatternBrushInternal, 3) +SVC_(GdiCreatePen, 4) +SVC_(GdiCreateRectRgn, 4) +SVC_(GdiCreateRoundRectRgn, 6) +SVC_(GdiCreateServerMetaFile, 6) +SVC_(GdiCreateSolidBrush, 2) +SVC_(GdiD3dContextCreate, 4) +SVC_(GdiD3dContextDestroy, 1) +SVC_(GdiD3dContextDestroyAll, 1) +SVC_(GdiD3dValidateTextureStageState, 1) +SVC_(GdiD3dDrawPrimitives2, 7) +SVC_(GdiDdGetDriverState, 1) +SVC_(GdiDdAddAttachedSurface, 3) +SVC_(GdiDdAlphaBlt, 3) +SVC_(GdiDdAttachSurface, 2) +SVC_(GdiDdBeginMoCompFrame, 2) +SVC_(GdiDdBlt, 3) +SVC_(GdiDdCanCreateSurface, 2) +SVC_(GdiDdCanCreateD3DBuffer, 2) +SVC_(GdiDdColorControl, 2) +SVC_(GdiDdCreateDirectDrawObject, 1) +SVC_(GdiDdCreateSurface, 8) +SVC_(GdiDdCreateD3DBuffer, 8) +SVC_(GdiDdCreateMoComp, 2) +SVC_(GdiDdCreateSurfaceObject, 6) +SVC_(GdiDdDeleteDirectDrawObject, 1) +SVC_(GdiDdDeleteSurfaceObject, 1) +SVC_(GdiDdDestroyMoComp, 2) +SVC_(GdiDdDestroySurface, 2) +SVC_(GdiDdDestroyD3DBuffer, 1) +SVC_(GdiDdEndMoCompFrame, 2) +SVC_(GdiDdFlip, 5) +SVC_(GdiDdFlipToGDISurface, 2) +SVC_(GdiDdGetAvailDriverMemory, 2) +SVC_(GdiDdGetBltStatus, 2) +SVC_(GdiDdGetDC, 2) +SVC_(GdiDdGetDriverInfo, 2) +SVC_(GdiDdGetDxHandle, 3) +SVC_(GdiDdGetFlipStatus, 2) +SVC_(GdiDdGetInternalMoCompInfo, 2) +SVC_(GdiDdGetMoCompBuffInfo, 2) +SVC_(GdiDdGetMoCompGuids, 2) +SVC_(GdiDdGetMoCompFormats, 2) +SVC_(GdiDdGetScanLine, 2) +SVC_(GdiDdLock, 3) +SVC_(GdiDdLockD3D, 2) +SVC_(GdiDdQueryDirectDrawObject, 11) +SVC_(GdiDdQueryMoCompStatus, 2) +SVC_(GdiDdReenableDirectDrawObject, 2) +SVC_(GdiDdReleaseDC, 1) +SVC_(GdiDdRenderMoComp, 2) +SVC_(GdiDdResetVisrgn, 2) +SVC_(GdiDdSetColorKey, 2) +SVC_(GdiDdSetExclusiveMode, 2) +SVC_(GdiDdSetGammaRamp, 3) +SVC_(GdiDdCreateSurfaceEx, 3) +SVC_(GdiDdSetOverlayPosition, 3) +SVC_(GdiDdUnattachSurface, 2) +SVC_(GdiDdUnlock, 2) +SVC_(GdiDdUnlockD3D, 2) +SVC_(GdiDdUpdateOverlay, 3) +SVC_(GdiDdWaitForVerticalBlank, 2) +SVC_(GdiDvpCanCreateVideoPort, 2) +SVC_(GdiDvpColorControl, 2) +SVC_(GdiDvpCreateVideoPort, 2) +SVC_(GdiDvpDestroyVideoPort, 2) +SVC_(GdiDvpFlipVideoPort, 4) +SVC_(GdiDvpGetVideoPortBandwidth, 2) +SVC_(GdiDvpGetVideoPortField, 2) +SVC_(GdiDvpGetVideoPortFlipStatus, 2) +SVC_(GdiDvpGetVideoPortInputFormats, 2) +SVC_(GdiDvpGetVideoPortLine, 2) +SVC_(GdiDvpGetVideoPortOutputFormats, 2) +SVC_(GdiDvpGetVideoPortConnectInfo, 2) +SVC_(GdiDvpGetVideoSignalStatus, 2) +SVC_(GdiDvpUpdateVideoPort, 4) +SVC_(GdiDvpWaitForVideoPortSync, 2) +SVC_(GdiDvpAcquireNotification, 3) +SVC_(GdiDvpReleaseNotification, 2) +SVC_(GdiDxgGenericThunk, 6) +SVC_(GdiDeleteClientObj, 1) +SVC_(GdiDeleteColorSpace, 1) +SVC_(GdiDeleteColorTransform, 2) +SVC_(GdiDeleteObjectApp, 1) +SVC_(GdiDescribePixelFormat, 4) +SVC_(GdiGetPerBandInfo, 2) +SVC_(GdiDoBanding, 4) +SVC_(GdiDoPalette, 6) +SVC_(GdiDrawEscape, 4) +SVC_(GdiEllipse, 5) +SVC_(GdiEnableEudc, 1) +SVC_(GdiEndDoc, 1) +SVC_(GdiEndPage, 1) +SVC_(GdiEndPath, 1) +SVC_(GdiEnumFontChunk, 5) +SVC_(GdiEnumFontClose, 1) +SVC_(GdiEnumFontOpen, 7) +SVC_(GdiEnumObjects, 4) +SVC_(GdiEqualRgn, 2) +SVC_(GdiEudcLoadUnloadLink, 7) +SVC_(GdiExcludeClipRect, 5) +SVC_(GdiExtCreatePen, 11) +SVC_(GdiExtCreateRegion, 3) +SVC_(GdiExtEscape, 8) +SVC_(GdiExtFloodFill, 5) +SVC_(GdiExtGetObjectW, 3) +SVC_(GdiExtSelectClipRgn, 3) +SVC_(GdiExtTextOutW, 9) +SVC_(GdiFillPath, 1) +SVC_(GdiFillRgn, 3) +SVC_(GdiFlattenPath, 1) +SVC_(GdiFlushUserBatch, 0) +SVC_(GdiFlush, 0) +SVC_(GdiForceUFIMapping, 2) +SVC_(GdiFrameRgn, 5) +SVC_(GdiFullscreenControl, 5) +SVC_(GdiGetAndSetDCDword, 4) +SVC_(GdiGetAppClipBox, 2) +SVC_(GdiGetBitmapBits, 3) +SVC_(GdiGetBitmapDimension, 2) +SVC_(GdiGetBoundsRect, 3) +SVC_(GdiGetCharABCWidthsW, 6) +SVC_(GdiGetCharacterPlacementW, 6) +SVC_(GdiGetCharSet, 1) +SVC_(GdiGetCharWidthW, 6) +SVC_(GdiGetCharWidthInfo, 2) +SVC_(GdiGetColorAdjustment, 2) +SVC_(GdiGetColorSpaceforBitmap, 1) +SVC_(GdiGetDCDword, 3) +SVC_(GdiGetDCforBitmap, 1) +SVC_(GdiGetDCObject, 2) +SVC_(GdiGetDCPoint, 3) +SVC_(GdiGetDeviceCaps, 2) +SVC_(GdiGetDeviceGammaRamp, 2) +SVC_(GdiGetDeviceCapsAll, 2) +SVC_(GdiGetDIBitsInternal, 9) +SVC_(GdiGetETM, 2) +SVC_(GdiGetEudcTimeStampEx, 3) +SVC_(GdiGetFontData, 5) +SVC_(GdiGetFontResourceInfoInternalW, 7) +SVC_(GdiGetGlyphIndicesW, 5) +SVC_(GdiGetGlyphIndicesWInternal, 6) +SVC_(GdiGetGlyphOutline, 8) +SVC_(GdiGetKerningPairs, 3) +SVC_(GdiGetLinkedUFIs, 3) +SVC_(GdiGetMiterLimit, 2) +SVC_(GdiGetMonitorID, 3) +SVC_(GdiGetNearestColor, 2) +SVC_(GdiGetNearestPaletteIndex, 2) +SVC_(GdiGetObjectBitmapHandle, 2) +SVC_(GdiGetOutlineTextMetricsInternalW, 4) +SVC_(GdiGetPath, 4) +SVC_(GdiGetPixel, 3) +SVC_(GdiGetRandomRgn, 3) +SVC_(GdiGetRasterizerCaps, 2) +SVC_(GdiGetRealizationInfo, 3) +SVC_(GdiGetRegionData, 3) +SVC_(GdiGetRgnBox, 2) +SVC_(GdiGetServerMetaFileBits, 7) +SVC_(GdiGetSpoolMessage, 4) +SVC_(GdiGetStats, 5) +SVC_(GdiGetStockObject, 1) +SVC_(GdiGetStringBitmapW, 5) +SVC_(GdiGetSystemPaletteUse, 1) +SVC_(GdiGetTextCharsetInfo, 3) +SVC_(GdiGetTextExtent, 5) +SVC_(GdiGetTextExtentExW, 8) +SVC_(GdiGetTextFaceW, 4) +SVC_(GdiGetTextMetricsW, 3) +SVC_(GdiGetTransform, 3) +SVC_(GdiGetUFI, 6) +SVC_(GdiGetEmbUFI, 7) +SVC_(GdiGetUFIPathname, 10) +SVC_(GdiGetEmbedFonts, 0) +SVC_(GdiChangeGhostFont, 2) +SVC_(GdiAddEmbFontToDC, 2) +SVC_(GdiGetFontUnicodeRanges, 2) +SVC_(GdiGetWidthTable, 7) +SVC_(GdiGradientFill, 6) +SVC_(GdiHfontCreate, 5) +SVC_(GdiIcmBrushInfo, 8) +SVC_(GdiInit, 0) +SVC_(GdiInitSpool, 0) +SVC_(GdiIntersectClipRect, 5) +SVC_(GdiInvertRgn, 2) +SVC_(GdiLineTo, 3) +SVC_(GdiMakeFontDir, 5) +SVC_(GdiMakeInfoDC, 2) +SVC_(GdiMaskBlt, 13) +SVC_(GdiModifyWorldTransform, 3) +SVC_(GdiMonoBitmap, 1) +SVC_(GdiMoveTo, 4) +SVC_(GdiOffsetClipRgn, 3) +SVC_(GdiOffsetRgn, 3) +SVC_(GdiOpenDCW, 8) +SVC_(GdiPatBlt, 6) +SVC_(GdiPolyPatBlt, 5) +SVC_(GdiPathToRegion, 1) +SVC_(GdiPlgBlt, 11) +SVC_(GdiPolyDraw, 4) +SVC_(GdiPolyPolyDraw, 5) +SVC_(GdiPolyTextOutW, 4) +SVC_(GdiPtInRegion, 3) +SVC_(GdiPtVisible, 3) +SVC_(GdiQueryFonts, 3) +SVC_(GdiQueryFontAssocInfo, 1) +SVC_(GdiRectangle, 5) +SVC_(GdiRectInRegion, 2) +SVC_(GdiRectVisible, 2) +SVC_(GdiRemoveFontResourceW, 6) +SVC_(GdiRemoveFontMemResourceEx, 1) +SVC_(GdiResetDC, 5) +SVC_(GdiResizePalette, 2) +SVC_(GdiRestoreDC, 2) +SVC_(GdiRoundRect, 7) +SVC_(GdiSaveDC, 1) +SVC_(GdiScaleViewportExtEx, 6) +SVC_(GdiScaleWindowExtEx, 6) +SVC_(GdiSelectBitmap, 2) +SVC_(GdiSelectBrush, 2) +SVC_(GdiSelectClipPath, 2) +SVC_(GdiSelectFont, 2) +SVC_(GdiSelectPen, 2) +SVC_(GdiSetBitmapAttributes, 2) +SVC_(GdiSetBitmapBits, 3) +SVC_(GdiSetBitmapDimension, 4) +SVC_(GdiSetBoundsRect, 3) +SVC_(GdiSetBrushAttributes, 2) +SVC_(GdiSetBrushOrg, 4) +SVC_(GdiSetColorAdjustment, 2) +SVC_(GdiSetColorSpace, 2) +SVC_(GdiSetDeviceGammaRamp, 2) +SVC_(GdiSetDIBitsToDeviceInternal, 16) +SVC_(GdiSetFontEnumeration, 1) +SVC_(GdiSetFontXform, 3) +SVC_(GdiSetIcmMode, 3) +SVC_(GdiSetLinkedUFIs, 3) +SVC_(GdiSetMagicColors, 3) +SVC_(GdiSetMetaRgn, 1) +SVC_(GdiSetMiterLimit, 3) +SVC_(GdiGetDeviceWidth, 1) +SVC_(GdiMirrorWindowOrg, 1) +SVC_(GdiSetLayout, 3) +SVC_(GdiSetPixel, 4) +SVC_(GdiSetPixelFormat, 2) +SVC_(GdiSetRectRgn, 5) +SVC_(GdiSetSystemPaletteUse, 2) +SVC_(GdiSetTextJustification, 3) +SVC_(GdiSetupPublicCFONT, 3) +SVC_(GdiSetVirtualResolution, 5) +SVC_(GdiSetSizeDevice, 3) +SVC_(GdiStartDoc, 4) +SVC_(GdiStartPage, 1) +SVC_(GdiStretchBlt, 12) +SVC_(GdiStretchDIBitsInternal, 16) +SVC_(GdiStrokeAndFillPath, 1) +SVC_(GdiStrokePath, 1) +SVC_(GdiSwapBuffers, 1) +SVC_(GdiTransformPoints, 5) +SVC_(GdiTransparentBlt, 11) +SVC_(GdiUnloadPrinterDriver, 2) +SVC_(GdiUnmapMemFont, 1) +SVC_(GdiUnrealizeObject, 1) +SVC_(GdiUpdateColors, 1) +SVC_(GdiWidenPath, 1) +SVC_(UserActivateKeyboardLayout, 2) +SVC_(UserAlterWindowStyle, 3) +SVC_(UserAssociateInputContext, 3) +SVC_(UserAttachThreadInput, 3) +SVC_(UserBeginPaint, 2) +SVC_(UserBitBltSysBmp, 8) +SVC_(UserBlockInput, 1) +SVC_(UserBuildHimcList, 4) +SVC_(UserBuildHwndList, 7) +SVC_(UserBuildNameList, 4) +SVC_(UserBuildPropList, 4) +SVC_(UserCallHwnd, 2) +SVC_(UserCallHwndLock, 2) +SVC_(UserCallHwndOpt, 2) +SVC_(UserCallHwndParam, 3) +SVC_(UserCallHwndParamLock, 3) +SVC_(UserCallMsgFilter, 2) +SVC_(UserCallNextHookEx, 4) +SVC_(UserCallNoParam, 1) +SVC_(UserCallOneParam, 2) +SVC_(UserCallTwoParam, 3) +SVC_(UserChangeClipboardChain, 2) +SVC_(UserChangeDisplaySettings, 5) +SVC_(UserCheckImeHotKey, 2) +SVC_(UserCheckMenuItem, 3) +SVC_(UserChildWindowFromPointEx, 4) +SVC_(UserClipCursor, 1) +SVC_(UserCloseClipboard, 0) +SVC_(UserCloseDesktop, 1) +SVC_(UserCloseWindowStation, 1) +SVC_(UserConsoleControl, 3) +SVC_(UserConvertMemHandle, 2) +SVC_(UserCopyAcceleratorTable, 3) +SVC_(UserCountClipboardFormats, 0) +SVC_(UserCreateAcceleratorTable, 2) +SVC_(UserCreateCaret, 4) +SVC_(UserCreateDesktop, 5) +SVC_(UserCreateInputContext, 1) +SVC_(UserCreateLocalMemHandle, 4) +SVC_(UserCreateWindowEx, 15) +SVC_(UserCreateWindowStation, 7) +SVC_(UserDdeGetQualityOfService, 3) +SVC_(UserDdeInitialize, 5) +SVC_(UserDdeSetQualityOfService, 3) +SVC_(UserDeferWindowPos, 8) +SVC_(UserDefSetText, 2) +SVC_(UserDeleteMenu, 3) +SVC_(UserDestroyAcceleratorTable, 1) +SVC_(UserDestroyCursor, 2) +SVC_(UserDestroyInputContext, 1) +SVC_(UserDestroyMenu, 1) +SVC_(UserDestroyWindow, 1) +SVC_(UserDisableThreadIme, 1) +SVC_(UserDispatchMessage, 1) +SVC_(UserDragDetect, 3) +SVC_(UserDragObject, 5) +SVC_(UserDrawAnimatedRects, 4) +SVC_(UserDrawCaption, 4) +SVC_(UserDrawCaptionTemp, 7) +SVC_(UserDrawIconEx, 11) +SVC_(UserDrawMenuBarTemp, 5) +SVC_(UserEmptyClipboard, 0) +SVC_(UserEnableMenuItem, 3) +SVC_(UserEnableScrollBar, 3) +SVC_(UserEndDeferWindowPosEx, 2) +SVC_(UserEndMenu, 0) +SVC_(UserEndPaint, 2) +SVC_(UserEnumDisplayDevices, 4) +// SVC_(UserEnumDisplayMonitors, 4, Wrong, number, of, param, ?) +SVC_(UserEnumDisplayMonitors, 5) +SVC_(UserEnumDisplaySettings, 4) +SVC_(UserEvent, 1) +SVC_(UserExcludeUpdateRgn, 2) +SVC_(UserFillWindow, 4) +// SVC_(UserFindExistingCursorIcon, 3, Wrong, number, of, param, ?) +SVC_(UserFindExistingCursorIcon, 4) +SVC_(UserFindWindowEx, 5) +SVC_(UserFlashWindowEx, 1) +SVC_(UserGetAltTabInfo, 6) +SVC_(UserGetAncestor, 2) +SVC_(UserGetAppImeLevel, 1) +SVC_(UserGetAsyncKeyState, 1) +SVC_(UserGetAtomName, 2) +SVC_(UserGetCaretBlinkTime, 0) +SVC_(UserGetCaretPos, 1) +SVC_(UserGetClassInfo, 5) +SVC_(UserGetClassName, 3) +SVC_(UserGetClipboardData, 2) +SVC_(UserGetClipboardFormatName, 3) +SVC_(UserGetClipboardOwner, 0) +SVC_(UserGetClipboardSequenceNumber, 0) +SVC_(UserGetClipboardViewer, 0) +SVC_(UserGetClipCursor, 1) +SVC_(UserGetComboBoxInfo, 2) +SVC_(UserGetControlBrush, 3) +SVC_(UserGetControlColor, 4) +SVC_(UserGetCPD, 3) +SVC_(UserGetCursorFrameInfo, 4) +SVC_(UserGetCursorInfo, 1) +SVC_(UserGetDC, 1) +SVC_(UserGetDCEx, 3) +SVC_(UserGetDoubleClickTime, 0) +SVC_(UserGetForegroundWindow, 0) +SVC_(UserGetGuiResources, 2) +SVC_(UserGetGUIThreadInfo, 2) +SVC_(UserGetIconInfo, 6) +SVC_(UserGetIconSize, 4) +SVC_(UserGetImeHotKey, 4) +SVC_(UserGetImeInfoEx, 2) +SVC_(UserGetInternalWindowPos, 3) +SVC_(UserGetKeyboardLayoutList, 2) +SVC_(UserGetKeyboardLayoutName, 1) +SVC_(UserGetKeyboardState, 1) +SVC_(UserGetKeyNameText, 3) +SVC_(UserGetKeyState, 1) +SVC_(UserGetListBoxInfo, 1) +SVC_(UserGetMenuBarInfo, 4) +SVC_(UserGetMenuIndex, 2) +SVC_(UserGetMenuItemRect, 4) +SVC_(UserGetMessage, 4) +SVC_(UserGetMouseMovePointsEx, 5) +SVC_(UserGetObjectInformation, 5) +SVC_(UserGetOpenClipboardWindow, 0) +SVC_(UserGetPriorityClipboardFormat, 2) +SVC_(UserGetProcessWindowStation, 0) +SVC_(UserGetRawInputBuffer, 3) +SVC_(UserGetRawInputData, 5) +SVC_(UserGetRawInputDeviceInfo, 4) +SVC_(UserGetRawInputDeviceList, 3) +SVC_(UserGetRegisteredRawInputDevices, 3) +SVC_(UserGetScrollBarInfo, 3) +SVC_(UserGetSystemMenu, 2) +SVC_(UserGetThreadDesktop, 2) +SVC_(UserGetThreadState, 1) +SVC_(UserGetTitleBarInfo, 2) +SVC_(UserGetUpdateRect, 3) +SVC_(UserGetUpdateRgn, 3) +SVC_(UserGetWindowDC, 1) +SVC_(UserGetWindowPlacement, 2) +SVC_(UserGetWOWClass, 2) +SVC_(UserHardErrorControl, 3) +SVC_(UserHideCaret, 1) +SVC_(UserHiliteMenuItem, 4) +SVC_(UserImpersonateDdeClientWindow, 2) +SVC_(UserInitialize, 3) +SVC_(UserInitializeClientPfnArrays, 4) +SVC_(UserInitTask, 12) +SVC_(UserInternalGetWindowText, 3) +SVC_(UserInvalidateRect, 3) +SVC_(UserInvalidateRgn, 3) +SVC_(UserIsClipboardFormatAvailable, 1) +SVC_(UserKillTimer, 2) +SVC_(UserLoadKeyboardLayoutEx, 7) +SVC_(UserLockWindowStation, 1) +SVC_(UserLockWindowUpdate, 1) +SVC_(UserLockWorkStation, 0) +SVC_(UserMapVirtualKeyEx, 4) +SVC_(UserMenuItemFromPoint, 4) +SVC_(UserMessageCall, 7) +SVC_(UserMinMaximize, 3) +SVC_(UserMNDragLeave, 0) +SVC_(UserMNDragOver, 2) +SVC_(UserModifyUserStartupInfoFlags, 2) +SVC_(UserMoveWindow, 6) +SVC_(UserNotifyIMEStatus, 3) +SVC_(UserNotifyProcessCreate, 4) +SVC_(UserNotifyWinEvent, 4) +SVC_(UserOpenClipboard, 2) +SVC_(UserOpenDesktop, 3) +SVC_(UserOpenInputDesktop, 3) +SVC_(UserOpenWindowStation, 2) +SVC_(UserPaintDesktop, 1) +SVC_(UserPeekMessage, 5) +SVC_(UserPostMessage, 4) +SVC_(UserPostThreadMessage, 4) +SVC_(UserPrintWindow, 3) +SVC_(UserProcessConnect, 3) +SVC_(UserQueryInformationThread, 5) +SVC_(UserQueryInputContext, 2) +SVC_(UserQuerySendMessage, 1) +SVC_(UserQueryUserCounters, 5) +SVC_(UserQueryWindow, 2) +SVC_(UserRealChildWindowFromPoint, 3) +SVC_(UserRealInternalGetMessage, 6) +SVC_(UserRealWaitMessageEx, 2) +SVC_(UserRedrawWindow, 4) +SVC_(UserRegisterClassExWOW, 7) +SVC_(UserRegisterUserApiHook, 4) +SVC_(UserRegisterHotKey, 4) +SVC_(UserRegisterRawInputDevices, 3) +SVC_(UserRegisterTasklist, 1) +SVC_(UserRegisterWindowMessage, 1) +SVC_(UserRemoveMenu, 3) +SVC_(UserRemoveProp, 2) +SVC_(UserResolveDesktop, 4) +SVC_(UserResolveDesktopForWOW, 1) +SVC_(UserSBGetParms, 4) +SVC_(UserScrollDC, 7) +SVC_(UserScrollWindowEx, 8) +SVC_(UserSelectPalette, 3) +SVC_(UserSendInput, 3) +SVC_(UserSetActiveWindow, 1) +SVC_(UserSetAppImeLevel, 2) +SVC_(UserSetCapture, 1) +SVC_(UserSetClassLong, 4) +SVC_(UserSetClassWord, 3) +SVC_(UserSetClipboardData, 3) +SVC_(UserSetClipboardViewer, 1) +SVC_(UserSetConsoleReserveKeys, 2) +SVC_(UserSetCursor, 1) +SVC_(UserSetCursorContents, 2) +SVC_(UserSetCursorIconData, 6) +SVC_(UserSetDbgTag, 2) +SVC_(UserSetFocus, 1) +SVC_(UserSetImeHotKey, 5) +SVC_(UserSetImeInfoEx, 1) +SVC_(UserSetImeOwnerWindow, 2) +SVC_(UserSetInformationProcess, 4) +SVC_(UserSetInformationThread, 4) +SVC_(UserSetInternalWindowPos, 4) +SVC_(UserSetKeyboardState, 1) +SVC_(UserSetLogonNotifyWindow, 1) +SVC_(UserSetMenu, 3) +SVC_(UserSetMenuContextHelpId, 2) +SVC_(UserSetMenuDefaultItem, 3) +SVC_(UserSetMenuFlagRtoL, 1) +SVC_(UserSetObjectInformation, 4) +SVC_(UserSetParent, 2) +SVC_(UserSetProcessWindowStation, 1) +SVC_(UserSetProp, 3) +SVC_(UserSetRipFlags, 2) +SVC_(UserSetScrollInfo, 4) +SVC_(UserSetShellWindowEx, 2) +SVC_(UserSetSysColors, 4) +SVC_(UserSetSystemCursor, 2) +SVC_(UserSetSystemMenu, 2) +SVC_(UserSetSystemTimer, 4) +SVC_(UserSetThreadDesktop, 1) +SVC_(UserSetThreadLayoutHandles, 2) +SVC_(UserSetThreadState, 2) +SVC_(UserSetTimer, 4) +SVC_(UserSetWindowFNID, 2) +SVC_(UserSetWindowLong, 4) +SVC_(UserSetWindowPlacement, 2) +SVC_(UserSetWindowPos, 7) +SVC_(UserSetWindowRgn, 3) +SVC_(UserSetWindowsHookAW, 3) +SVC_(UserSetWindowsHookEx, 6) +SVC_(UserSetWindowStationUser, 4) +SVC_(UserSetWindowWord, 3) +SVC_(UserSetWinEventHook, 8) +SVC_(UserShowCaret, 1) +SVC_(UserShowScrollBar, 3) +SVC_(UserShowWindow, 2) +SVC_(UserShowWindowAsync, 2) +SVC_(UserSoundSentry, 0) +SVC_(UserSwitchDesktop, 1) +SVC_(UserSystemParametersInfo, 4) +SVC_(UserTestForInteractiveUser, 1) +SVC_(UserThunkedMenuInfo, 2) +SVC_(UserThunkedMenuItemInfo, 6) +SVC_(UserToUnicodeEx, 7) +SVC_(UserTrackMouseEvent, 1) +SVC_(UserTrackPopupMenuEx, 6) +SVC_(UserCalcMenuBar, 5) +SVC_(UserPaintMenuBar, 6) +SVC_(UserTranslateAccelerator, 3) +SVC_(UserTranslateMessage, 2) +SVC_(UserUnhookWindowsHookEx, 1) +SVC_(UserUnhookWinEvent, 1) +SVC_(UserUnloadKeyboardLayout, 1) +SVC_(UserUnlockWindowStation, 1) +SVC_(UserUnregisterClass, 3) +SVC_(UserUnregisterUserApiHook, 0) +SVC_(UserUnregisterHotKey, 2) +SVC_(UserUpdateInputContext, 3) +SVC_(UserUpdateInstance, 3) +SVC_(UserUpdateLayeredWindow, 10) +SVC_(UserGetLayeredWindowAttributes, 4) +SVC_(UserSetLayeredWindowAttributes, 4) +SVC_(UserUpdatePerUserSystemParameters, 2) +SVC_(UserUserHandleGrantAccess, 3) +SVC_(UserValidateHandleSecure, 2) +SVC_(UserValidateRect, 2) +SVC_(UserValidateTimerCallback, 3) +SVC_(UserVkKeyScanEx, 3) +SVC_(UserWaitForInputIdle, 3) +SVC_(UserWaitForMsgAndEvent, 1) +SVC_(UserWaitMessage, 0) +SVC_(UserWin32PoolAllocationStats, 6) +SVC_(UserWindowFromPhysicalPoint, 2) +SVC_(UserWindowFromPoint, 2) +SVC_(UserYieldTask, 0) +SVC_(UserRemoteConnect, 3) +SVC_(UserRemoteRedrawRectangle, 4) +SVC_(UserRemoteRedrawScreen, 0) +SVC_(UserRemoteStopScreenUpdates, 0) +SVC_(UserCtxDisplayIOCtl, 3) +SVC_(GdiEngAssociateSurface, 3) +SVC_(GdiEngCreateBitmap, 6) +SVC_(GdiEngCreateDeviceSurface, 4) +SVC_(GdiEngCreateDeviceBitmap, 4) +SVC_(GdiEngCreatePalette, 6) +SVC_(GdiEngComputeGlyphSet, 3) +SVC_(GdiEngCopyBits, 6) +SVC_(GdiEngDeletePalette, 1) +SVC_(GdiEngDeleteSurface, 1) +SVC_(GdiEngEraseSurface, 3) +SVC_(GdiEngUnlockSurface, 1) +SVC_(GdiEngLockSurface, 1) +SVC_(GdiEngBitBlt, 11) +SVC_(GdiEngStretchBlt, 11) +SVC_(GdiEngPlgBlt, 11) +SVC_(GdiEngMarkBandingSurface, 1) +SVC_(GdiEngStrokePath, 8) +SVC_(GdiEngFillPath, 7) +SVC_(GdiEngStrokeAndFillPath, 10) +SVC_(GdiEngPaint, 5) +SVC_(GdiEngLineTo, 9) +SVC_(GdiEngAlphaBlend, 7) +SVC_(GdiEngGradientFill, 10) +SVC_(GdiEngTransparentBlt, 8) +SVC_(GdiEngTextOut, 10) +SVC_(GdiEngStretchBltROP, 13) +SVC_(GdiXLATEOBJ_cGetPalette, 4) +SVC_(GdiXLATEOBJ_iXlate, 2) +SVC_(GdiXLATEOBJ_hGetColorTransform, 1) +SVC_(GdiCLIPOBJ_bEnum, 3) +SVC_(GdiCLIPOBJ_cEnumStart, 5) +SVC_(GdiCLIPOBJ_ppoGetPath, 1) +SVC_(GdiEngDeletePath, 1) +SVC_(GdiEngCreateClip, 0) +SVC_(GdiEngDeleteClip, 1) +SVC_(GdiBRUSHOBJ_ulGetBrushColor, 1) +SVC_(GdiBRUSHOBJ_pvAllocRbrush, 2) +SVC_(GdiBRUSHOBJ_pvGetRbrush, 1) +SVC_(GdiBRUSHOBJ_hGetColorTransform, 1) +SVC_(GdiXFORMOBJ_bApplyXform, 5) +SVC_(GdiXFORMOBJ_iGetXform, 2) +SVC_(GdiFONTOBJ_vGetInfo, 3) +SVC_(GdiFONTOBJ_pxoGetXform, 1) +SVC_(GdiFONTOBJ_cGetGlyphs, 5) +SVC_(GdiFONTOBJ_pifi, 1) +SVC_(GdiFONTOBJ_pfdg, 1) +SVC_(GdiFONTOBJ_pQueryGlyphAttrs, 2) +SVC_(GdiFONTOBJ_pvTrueTypeFontFile, 2) +SVC_(GdiFONTOBJ_cGetAllGlyphHandles, 2) +SVC_(GdiSTROBJ_bEnum, 3) +SVC_(GdiSTROBJ_bEnumPositionsOnly, 3) +SVC_(GdiSTROBJ_bGetAdvanceWidths, 4) +SVC_(GdiSTROBJ_vEnumStart, 1) +SVC_(GdiSTROBJ_dwGetCodePage, 1) +SVC_(GdiPATHOBJ_vGetBounds, 2) +SVC_(GdiPATHOBJ_bEnum, 2) +SVC_(GdiPATHOBJ_vEnumStart, 1) +SVC_(GdiPATHOBJ_vEnumStartClipLines, 4) +SVC_(GdiPATHOBJ_bEnumClipLines, 3) +SVC_(GdiGetDhpdev, 1) +SVC_(GdiEngCheckAbort, 1) +SVC_(GdiHT_Get8BPPFormatPalette, 4) +SVC_(GdiHT_Get8BPPMaskPalette, 6) +SVC_(GdiUpdateTransform, 1) +SVC_(GdiSetPUMPDOBJ, 4) +SVC_(GdiBRUSHOBJ_DeleteRbrush, 2) +SVC_(GdiUMPDEngFreeUserMem, 1) +SVC_(GdiDrawStream, 3) // ReactOS, specific, syscalls) -SVC_(NtGdiSetDIBits, 7) -SVC_(NtGdiSetViewportOrgEx, 4) -SVC_(NtGdiSetWindowOrgEx, 4) -SVC_(NtGdiGetFontFamilyInfo, 4) -SVC_(NtGdiOffsetViewportOrgEx, 4) -SVC_(NtGdiOffsetWindowOrgEx, 4) +SVC_(GdiSetDIBits, 7) +SVC_(GdiSetViewportOrgEx, 4) +SVC_(GdiSetWindowOrgEx, 4) +SVC_(GdiGetFontFamilyInfo, 4) +SVC_(GdiOffsetViewportOrgEx, 4) +SVC_(GdiOffsetWindowOrgEx, 4) -SVC_(NtUserBuildMenuItemList, 4) -SVC_(NtUserGetMenuDefaultItem, 3) -SVC_(NtUserGetLastInputInfo, 1) -SVC_(NtUserGetMinMaxInfo, 3) -SVC_(NtUserGetMonitorInfo, 2) -SVC_(NtUserMenuInfo, 3) -SVC_(NtUserMenuItemInfo, 5) -SVC_(NtUserMonitorFromPoint, 3) -SVC_(NtUserMonitorFromRect, 2) -SVC_(NtUserMonitorFromWindow, 2) -SVC_(NtUserSetScrollBarInfo, 3) +SVC_(UserBuildMenuItemList, 4) +SVC_(UserGetMenuDefaultItem, 3) +SVC_(UserGetLastInputInfo, 1) +SVC_(UserGetMinMaxInfo, 3) +SVC_(UserGetMonitorInfo, 2) +SVC_(UserMenuInfo, 3) +SVC_(UserMenuItemInfo, 5) +SVC_(UserMonitorFromPoint, 3) +SVC_(UserMonitorFromRect, 2) +SVC_(UserMonitorFromWindow, 2) +SVC_(UserSetScrollBarInfo, 3) From 4c9f7711b53753fd17d00b8fd6a550a5dd8af1ea Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 8 Feb 2011 20:32:04 +0000 Subject: [PATCH 20/23] try to fix build. How did it work before? Probably by chance. "As usual"(tm) svn path=/trunk/; revision=50623 --- reactos/include/psdk/psdk.rbuild | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/include/psdk/psdk.rbuild b/reactos/include/psdk/psdk.rbuild index a7b5cbfcbe5..fa5f59fd909 100644 --- a/reactos/include/psdk/psdk.rbuild +++ b/reactos/include/psdk/psdk.rbuild @@ -2,6 +2,7 @@ + bugcodes activaut.idl activdbg.idl activscp.idl From 46610513c9a367c34527b1ef368cf0bcc4110dce Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Tue, 8 Feb 2011 23:36:14 +0000 Subject: [PATCH 21/23] [FREELDR/NTFS] Some fixes and addings to the NTFS header. To be used later in order to fix NTFS driver in FreeLdr svn path=/trunk/; revision=50624 --- .../boot/freeldr/freeldr/include/fs/ntfs.h | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/reactos/boot/freeldr/freeldr/include/fs/ntfs.h b/reactos/boot/freeldr/freeldr/include/fs/ntfs.h index 123508632da..f6d9e6d7cea 100644 --- a/reactos/boot/freeldr/freeldr/include/fs/ntfs.h +++ b/reactos/boot/freeldr/freeldr/include/fs/ntfs.h @@ -1,6 +1,7 @@ /* * FreeLoader NTFS support * Copyright (C) 2004 Filip Navara + * Copyright (C) 2011 Pierre Schweitzer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,16 +31,22 @@ #define NTFS_FILE_BADCLUS 8 #define NTFS_FILE_QUOTA 9 #define NTFS_FILE_UPCASE 10 +#define NTFS_FILE_EXTEND 11 #define NTFS_ATTR_TYPE_STANDARD_INFORMATION 0x10 #define NTFS_ATTR_TYPE_ATTRIBUTE_LIST 0x20 #define NTFS_ATTR_TYPE_FILENAME 0x30 +#define NTFS_ATTR_TYPE_OBJECT_ID 0x40 #define NTFS_ATTR_TYPE_SECURITY_DESCRIPTOR 0x50 +#define NTFS_ATTR_TYPE_VOLUME_NAME 0x60 +#define NTFS_ATTR_TYPE_VOLUME_INFORMATION 0x70 #define NTFS_ATTR_TYPE_DATA 0x80 #define NTFS_ATTR_TYPE_INDEX_ROOT 0x90 #define NTFS_ATTR_TYPE_INDEX_ALLOCATION 0xa0 #define NTFS_ATTR_TYPE_BITMAP 0xb0 -#define NTFS_ATTR_TYPE_SYMLINK 0xc0 +#define NTFS_ATTR_TYPE_REPARSE_POINT 0xc0 +#define NTFS_ATTR_TYPE_EA_INFORMATION 0xd0 +#define NTFS_ATTR_TYPE_EA 0xe0 #define NTFS_ATTR_TYPE_END 0xffffffff #define NTFS_ATTR_NORMAL 0 @@ -126,7 +133,8 @@ typedef struct { ULONG ValueLength; USHORT ValueOffset; - USHORT Flags; + UCHAR Flags; + UCHAR Reserved; } Resident; // Non-resident attributes struct @@ -134,8 +142,8 @@ typedef struct ULONGLONG LowestVCN; ULONGLONG HighestVCN; USHORT MappingPairsOffset; - UCHAR CompressionUnit; - UCHAR Reserved[5]; + USHORT CompressionUnit; + UCHAR Reserved[4]; LONGLONG AllocatedSize; LONGLONG DataSize; LONGLONG InitializedSize; @@ -180,7 +188,20 @@ typedef struct WCHAR FileName[0]; } NTFS_FILE_NAME_ATTR, *PNTFS_FILE_NAME_ATTR; -typedef struct { +typedef struct +{ + ULONG Type; + USHORT RecLength; + UCHAR NameLength; + UCHAR NameOffset; + ULONGLONG StartingVCN; + ULONGLONG BaseFileRef; + USHORT AttrId; + PWCHAR Name; +} NTFS_ATTR_LIST_ATTR, *PNTFS_ATTR_LIST_ATTR; + +typedef struct +{ union { struct From 014ff8c89462f36d4067ba2ebc3e21c844c6e17c Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 9 Feb 2011 01:07:30 +0000 Subject: [PATCH 22/23] [NCI] Ue macros for the other nci generated files, too and delete nci-tool. svn path=/trunk/; revision=50625 --- reactos/dll/ntdll/ntdll.rbuild | 3 - reactos/lib/lib.rbuild | 3 - reactos/lib/ntdllsys/ntdllsys.rbuild | 7 - reactos/ntoskrnl/ex/zw.S | 2 +- reactos/ntoskrnl/include/internal/napi.h | 22 + reactos/ntoskrnl/{ex => include}/sysfuncs.h | 0 reactos/ntoskrnl/ntdll.S | 12 + reactos/ntoskrnl/ntoskrnl.rbuild | 4 + reactos/tools/nci/nci.mak | 91 --- reactos/tools/nci/ncitool.c | 762 -------------------- reactos/tools/tools.mak | 1 - 11 files changed, 39 insertions(+), 868 deletions(-) delete mode 100644 reactos/lib/ntdllsys/ntdllsys.rbuild create mode 100644 reactos/ntoskrnl/include/internal/napi.h rename reactos/ntoskrnl/{ex => include}/sysfuncs.h (100%) create mode 100644 reactos/ntoskrnl/ntdll.S delete mode 100644 reactos/tools/nci/nci.mak delete mode 100644 reactos/tools/nci/ncitool.c diff --git a/reactos/dll/ntdll/ntdll.rbuild b/reactos/dll/ntdll/ntdll.rbuild index 0a09528d93f..2a0b9101df3 100644 --- a/reactos/dll/ntdll/ntdll.rbuild +++ b/reactos/dll/ntdll/ntdll.rbuild @@ -1,9 +1,6 @@ - - - diff --git a/reactos/lib/lib.rbuild b/reactos/lib/lib.rbuild index 8a5e890d55a..90f4ba6050c 100644 --- a/reactos/lib/lib.rbuild +++ b/reactos/lib/lib.rbuild @@ -46,9 +46,6 @@ - - - diff --git a/reactos/lib/ntdllsys/ntdllsys.rbuild b/reactos/lib/ntdllsys/ntdllsys.rbuild deleted file mode 100644 index 920dc148e74..00000000000 --- a/reactos/lib/ntdllsys/ntdllsys.rbuild +++ /dev/null @@ -1,7 +0,0 @@ - - - - - ntdll.S - - diff --git a/reactos/ntoskrnl/ex/zw.S b/reactos/ntoskrnl/ex/zw.S index f4b26793d2a..c619b9e1c43 100644 --- a/reactos/ntoskrnl/ex/zw.S +++ b/reactos/ntoskrnl/ex/zw.S @@ -7,6 +7,6 @@ SyscallId = 0 #define SVC_(name, argcount) STUB_K name, argcount -#include "sysfuncs.h" +#include END diff --git a/reactos/ntoskrnl/include/internal/napi.h b/reactos/ntoskrnl/include/internal/napi.h new file mode 100644 index 00000000000..62205945094 --- /dev/null +++ b/reactos/ntoskrnl/include/internal/napi.h @@ -0,0 +1,22 @@ +/* + * FILE: ntoskrnl/include/internal/napi.h + * COPYRIGHT: GNU GPL, see COPYING in the top level directory + * PURPOSE: System Call Table for Native API + * PROGRAMMER: Timo Kreuzer + */ + +#define SVC_(name, argcount) (ULONG_PTR)Nt##name, +ULONG_PTR MainSSDT[] = { +#include "sysfuncs.h" +}; +#undef SVC_ + +#define SVC_(name, argcount) argcount * sizeof(void *), +UCHAR MainSSPT[] = { +#include "sysfuncs.h" +}; + +#define MIN_SYSCALL_NUMBER 0 +#define NUMBER_OF_SYSCALLS (sizeof(MainSSPT) / sizeof(MainSSPT[0])) +#define MAX_SYSCALL_NUMBER (NUMBER_OF_SYSCALLS - 1) +ULONG MainNumberOfSysCalls = NUMBER_OF_SYSCALLS; diff --git a/reactos/ntoskrnl/ex/sysfuncs.h b/reactos/ntoskrnl/include/sysfuncs.h similarity index 100% rename from reactos/ntoskrnl/ex/sysfuncs.h rename to reactos/ntoskrnl/include/sysfuncs.h diff --git a/reactos/ntoskrnl/ntdll.S b/reactos/ntoskrnl/ntdll.S new file mode 100644 index 00000000000..ec073ac4f8f --- /dev/null +++ b/reactos/ntoskrnl/ntdll.S @@ -0,0 +1,12 @@ + +#include +#include + +.code + +SyscallId = 0 +#define SVC_(name, argcount) STUB_U name, argcount + +#include + +END diff --git a/reactos/ntoskrnl/ntoskrnl.rbuild b/reactos/ntoskrnl/ntoskrnl.rbuild index b8d4defb8f4..6a541aca975 100644 --- a/reactos/ntoskrnl/ntoskrnl.rbuild +++ b/reactos/ntoskrnl/ntoskrnl.rbuild @@ -5,3 +5,7 @@ + + include + ntdll.S + diff --git a/reactos/tools/nci/nci.mak b/reactos/tools/nci/nci.mak deleted file mode 100644 index c168b7d0d9f..00000000000 --- a/reactos/tools/nci/nci.mak +++ /dev/null @@ -1,91 +0,0 @@ -NCI_BASE = $(TOOLS_BASE_)nci -NCI_BASE_ = $(NCI_BASE)$(SEP) -NCI_INT = $(INTERMEDIATE_)$(NCI_BASE) -NCI_INT_ = $(NCI_INT)$(SEP) -NCI_OUT = $(OUTPUT_)$(NCI_BASE) -NCI_OUT_ = $(NCI_OUT)$(SEP) - -$(NCI_INT): | $(TOOLS_INT) - $(ECHO_MKDIR) - ${mkdir} $@ - -ifneq ($(INTERMEDIATE),$(OUTPUT)) -$(NCI_OUT): | $(TOOLS_OUT) - $(ECHO_MKDIR) - ${mkdir} $@ -endif - -NCI_TARGET = \ - $(NCI_OUT_)nci$(EXEPOSTFIX) - -NCI_SOURCES = \ - $(NCI_BASE_)ncitool.c - -NCI_OBJECTS = \ - $(addprefix $(INTERMEDIATE_), $(NCI_SOURCES:.c=.o)) - -NCI_HOST_CFLAGS = -Iinclude $(TOOLS_CFLAGS) - -NCI_HOST_LFLAGS = $(TOOLS_LFLAGS) - -$(NCI_TARGET): $(NCI_OBJECTS) | $(NCI_OUT) - $(ECHO_HOSTLD) - ${host_gcc} $(NCI_OBJECTS) $(NCI_HOST_LFLAGS) -o $@ - -$(NCI_INT_)ncitool.o: $(NCI_BASE_)ncitool.c | $(NCI_INT) - $(ECHO_HOSTCC) - ${host_gcc} $(NCI_HOST_CFLAGS) -c $< -o $@ - -.PHONY: nci -nci: $(NCI_TARGET) - -.PHONY: nci_clean -nci_clean: - -@$(rm) $(NCI_TARGET) $(NCI_OBJECTS) 2>$(NUL) -clean: nci_clean - -# WIN32K.SYS -WIN32K_SVC_DB = subsystems$(SEP)win32$(SEP)win32k$(SEP)w32ksvc.db -WIN32K_SERVICE_TABLE = $(INTERMEDIATE_)subsystems$(SEP)win32$(SEP)win32k$(SEP)include$(SEP)napi.h -WIN32K_STUBS = $(INTERMEDIATE_)lib$(SEP)win32ksys$(SEP)win32k.S - - - -# NTOSKRNL.EXE -KERNEL_SVC_DB = ntoskrnl$(SEP)sysfuncs.lst -KERNEL_SERVICE_TABLE = $(INTERMEDIATE_)ntoskrnl$(SEP)include$(SEP)internal$(SEP)napi.h -NTDLL_STUBS = $(INTERMEDIATE_)lib$(SEP)ntdllsys$(SEP)ntdll.S -KERNEL_STUBS = $(INTERMEDIATE_)ntoskrnl$(SEP)ex$(SEP)zw.S -NT_SPEC = $(INTERMEDIATE_)dll$(SEP)ntdll$(SEP)def$(SEP)ntsys.pspec - -NCI_SERVICE_FILES = \ - $(KERNEL_SERVICE_TABLE) \ - $(WIN32K_SERVICE_TABLE) \ - $(NTDLL_STUBS) \ - $(KERNEL_STUBS) \ - $(WIN32K_STUBS) \ - $(NT_SPEC) - -$(NCI_SERVICE_FILES): $(NCI_TARGET) $(KERNEL_SVC_DB) $(WIN32K_SVC_DB) - $(ECHO_NCI) - ${mkdir} $(INTERMEDIATE_)ntoskrnl$(SEP)include$(SEP)internal 2>$(NUL) - ${mkdir} $(INTERMEDIATE_)lib$(SEP)ntdllsys$(SEP)ntdll 2>$(NUL) - ${mkdir} $(INTERMEDIATE_)ntoskrnl$(SEP)ex$(SEP) 2>$(NUL) - ${mkdir} $(INTERMEDIATE_)subsystems$(SEP)win32$(SEP)win32k$(SEP)include 2>$(NUL) - ${mkdir} $(INTERMEDIATE_)lib$(SEP)win32ksys 2>$(NUL) - ${mkdir} $(INTERMEDIATE_)dll$(SEP)ntdll$(SEP)def 2>$(NUL) - - $(Q)$(NCI_TARGET) -arch $(ARCH) \ - $(KERNEL_SVC_DB) \ - $(WIN32K_SVC_DB) \ - $(KERNEL_SERVICE_TABLE) \ - $(WIN32K_SERVICE_TABLE) \ - $(NTDLL_STUBS) \ - $(KERNEL_STUBS) \ - $(WIN32K_STUBS) \ - $(NT_SPEC) - -.PHONY: nci_service_files_clean -nci_service_files_clean: - -@$(rm) $(NCI_SERVICE_FILES) 2>$(NUL) -clean: nci_service_files_clean diff --git a/reactos/tools/nci/ncitool.c b/reactos/tools/nci/ncitool.c deleted file mode 100644 index ca10a815a5b..00000000000 --- a/reactos/tools/nci/ncitool.c +++ /dev/null @@ -1,762 +0,0 @@ -/* - * FILE: tools/nci/ncitool.c - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: Native Call Interface Support Tool - * PURPOSE: Generates NCI Tables and Stubs. - * PROGRAMMER; Alex Ionescu (alex@relsoft.net) - * CHANGE HISTORY: 14/01/05 - Created. Based on original code by - * KJK::Hyperion and Emanuelle Aliberti. - * - */ - -/* INCLUDE ******************************************************************/ - -#include -#include -#include -#if !defined(__FreeBSD__) && !defined(__APPLE__) -# include -#endif // __FreeBSD__ - -/* DEFINES ****************************************************************/ - -#define INPUT_BUFFER_SIZE 255 -#define Arguments 8 - -/******* Table Indexes ************/ -#define MAIN_INDEX 0x0 -#define WIN32K_INDEX 0x1000 - -/******* Argument List ************/ -/* Databases */ -#define NativeSystemDb 0 -#define NativeGuiDb 1 - -/* Service Tables */ -#define NtosServiceTable 2 -#define Win32kServiceTable 3 - -/* Stub Files */ -#define NtosUserStubs 4 -#define NtosKernelStubs 5 -#define Win32kStubs 6 - -/* Spec Files */ -#define NtSpec 7 - -/********** Stub Code ************/ - -/* - * This stubs calls into KUSER_SHARED_DATA where either a - * sysenter or interrupt is performed, depending on CPU support. - */ -#define UserModeStub_x86 " mov eax, %d\n" \ - " mov ecx, KUSER_SHARED_SYSCALL\n" \ - " call dword ptr [ecx]\n" \ - " ret %d\n\n" - -#define UserModeStub_amd64 " mov eax, %d\n" \ - " mov r10, rcx\n" \ - " syscall\n" \ - " ret %d\n\n" - -#define UserModeStub_ppc " stwu 1,-16(1)\n" \ - " mflr 0\n\t" \ - " stw 0,0(1)\n" \ - " li 0,0x%x\n" \ - " sc\n" \ - " lwz 0,0(1)\n" \ - " mtlr 0\n" \ - " addi 1,1,16\n" \ - " blr\n" - -#define UserModeStub_mips " li $8, KUSER_SHARED_SYSCALL\n" \ - " lw $8,0($8)\n" \ - " j $8\n" \ - " nop\n" - -#define UserModeStub_arm " swi #0x%x\n" \ - " bx lr\n\n" - - -/* - * This stub calls KiSystemService directly with a fake INT2E stack. - * Because EIP is pushed during the call, the handler will return here. - */ -#define KernelModeStub_x86 " mov eax, %d\n" \ - " lea edx, [esp + 4]\n" \ - " pushf\n" \ - " push KGDT_R0_CODE\n" \ - " call _KiSystemService\n" \ - " ret %d\n\n" - -#define KernelModeStub_amd64 " mov eax, %d\n" \ - " call KiSystemService\n" \ - " ret %d\n\n" - -/* For now, use the usermode stub. We'll optimize later */ -#define KernelModeStub_ppc UserModeStub_ppc - -#define KernelModeStub_mips " j KiSystemService\n" \ - " nop\n" - -#define KernelModeStub_arm " mov ip, lr\n" \ - " swi #0x%x\n" \ - " bx ip\n\n" - -/***** Arch Dependent Stuff ******/ -struct ncitool_data_t { - const char *arch; - int args_to_bytes; - const char *km_stub; - const char *um_stub; - const char *global_header; - const char *declaration; -}; - -struct ncitool_data_t ncitool_data[] = { - { "i386", 4, KernelModeStub_x86, UserModeStub_x86, - "PUBLIC _%s@%d\n", "_%s@%d:\n" }, - { "amd64", 4, KernelModeStub_amd64, UserModeStub_amd64, - "PUBLIC %s\n", "%s:\n" }, - { "powerpc", 4, KernelModeStub_ppc, UserModeStub_ppc, - "\t.globl %s\n", "%s:\n" }, - { "mips", 4, KernelModeStub_mips, UserModeStub_mips, - "\t.globl %s\n", "%s:\n" }, - { "arm", 4, KernelModeStub_arm, UserModeStub_arm, - "\t.globl %s\n", "%s:\n" }, - { 0, } -}; -int arch_sel = 0; -#define ARGS_TO_BYTES(x) (x)*(ncitool_data[arch_sel].args_to_bytes) -#define UserModeStub ncitool_data[arch_sel].um_stub -#define KernelModeStub ncitool_data[arch_sel].km_stub -#define GlobalHeader ncitool_data[arch_sel].global_header -#define Declaration ncitool_data[arch_sel].declaration - -/* FUNCTIONS ****************************************************************/ - -/*++ - * WriteFileHeader - * - * Prints out the File Header for a Stub File. - * - * Params: - * StubFile - Stub File to which to write the header. - * - * FileDescription - Description of the Stub file to which to write the header. - * - * FileLocation - Name of the Stub file to which to write the header. - * - * Returns: - * None. - * - * Remarks: - * FileLocation is only used for printing the header. - * - *--*/ -void -WriteFileHeader(FILE * StubFile, - char* FileDescription, - char* FileLocation) -{ - /* This prints out the file header */ - fprintf(StubFile, - "/* FILE: %s\n" - " * COPYRIGHT: See COPYING in the top level directory\n" - " * PURPOSE: %s\n" - " * PROGRAMMER: Computer Generated File. See tools/nci/ncitool.c\n" - " * REMARK: DO NOT EDIT OR COMMIT MODIFICATIONS TO THIS FILE\n" - " */\n\n\n", - - FileDescription, - FileLocation); -} - -/*++ - * WriteStubHeader - * - * Prints out the File Header for a Stub File. - * - * Params: - * StubFile - Stub File to which to write the header. - * - * FileDescription - Description of the Stub file to which to write the header. - * - * FileLocation - Name of the Stub file to which to write the header. - * - * Returns: - * None. - * - * Remarks: - * FileLocation is only used for printing the header. - * - *--*/ -void -WriteStubHeader(FILE* StubFile, - char* SyscallName, - unsigned StackBytes) -{ - /* Export the function */ - fprintf(StubFile, GlobalHeader, SyscallName, StackBytes); - - /* Define it */ - fprintf(StubFile, Declaration, SyscallName, StackBytes); -} - - -/*++ - * WriteKernelModeStub - * - * Prints out the Kernel Mode Stub for a System Call. - * - * Params: - * StubFile - Stub File to which to write the header. - * - * SyscallName - Name of System Call for which to add the stub. - * - * StackBytes - Number of bytes on the stack to return after doing the system call. - * - * SyscallId - Service Descriptor Table ID for this System Call. - * - * Returns: - * None. - * - * Remarks: - * On i386, StackBytes is the number of arguments x 4. - * - *--*/ -void -WriteKernelModeStub(FILE* StubFile, - char* SyscallName, - unsigned StackBytes, - unsigned int SyscallId) -{ - /* Write the Stub Header and export the Function */ - WriteStubHeader(StubFile, SyscallName, StackBytes); - - /* Write the Stub Code */ - fprintf(StubFile, KernelModeStub, SyscallId, StackBytes); -} - -/*++ - * WriteUserModeStub - * - * Prints out the User Mode Stub for a System Call. - * - * Params: - * StubFile - Stub File to which to write the header. - * - * SyscallName - Name of System Call for which to add the stub. - * - * StackBytes - Number of bytes on the stack to return after doing the system call. - * - * SyscallId - Service Descriptor Table ID for this System Call. - * - * Returns: - * None. - * - * Remarks: - * On i386, StackBytes is the number of arguments x 4. - * - *--*/ -void -WriteUserModeStub(FILE* StubFile, - char* SyscallName, - unsigned StackBytes, - unsigned int SyscallId) -{ - /* Write the Stub Header and export the Function */ - WriteStubHeader(StubFile, SyscallName, StackBytes); - - /* Write the Stub Code */ - fprintf(StubFile, UserModeStub, SyscallId, StackBytes); -} - -/*++ - * GetNameAndArgumentsFromDb - * - * Parses an entry from a System Call Database, extracting - * the function's name and arguments that it takes. - * - * Params: - * Line - Entry from the Database to parse. - * - * NtSyscallName - Output string to which to save the Function Name - * - * SyscallArguments - Output string to which to save the number of - * arguments that the function takes. - * - * Returns: - * None. - * - * Remarks: - * On i386, StackBytes is the number of arguments x 4. - * - *--*/ -void -GetNameAndArgumentsFromDb(char Line[], - char ** NtSyscallName, - char ** SyscallArguments) -{ - char *s; - char *stmp; - - /* Remove new line */ - if ((s = (char *) strchr(Line,'\r')) != NULL) { - *s = '\0'; - } - - /* Skip comments (#) and empty lines */ - s = &Line[0]; - if ((*s) != '#' && (*s) != '\0') { - - /* Extract the NtXXX name */ - *NtSyscallName = (char *)strtok(s," \t"); - - /* Extract the argument count */ - *SyscallArguments = (char *)strtok(NULL," \t"); - - /* Remove, if present, the trailing LF */ - if ((stmp = strchr(*SyscallArguments, '\n')) != NULL) { - *stmp = '\0'; - } - - } else { - - /* Skip this entry */ - *NtSyscallName = NULL; - *SyscallArguments = NULL; - } -} - -/*++ - * CreateStubs - * - * Parses a System Call Database and creates stubs for all the entries. - * - * Params: - * SyscallDb - System Call Database to parse. - * - * UserModeFiles - Array of Usermode Stub Files to which to write the stubs. - * - * KernelModeFile - Kernelmode Stub Files to which to write the stubs. - * - * Index - Number of first syscall - * - * UserFiles - Number of Usermode Stub Files to create - * - * NeedsZw - Write Zw prefix? - * - * Returns: - * None. - * - * Remarks: - * None. - * - *--*/ -void -CreateStubs(FILE * SyscallDb, - FILE * UserModeFiles[], - FILE * KernelModeFile, - unsigned Index, - unsigned UserFiles, - unsigned NeedsZw) -{ - char Line[INPUT_BUFFER_SIZE]; - char *NtSyscallName; - char *SyscallArguments; - int SyscallId; - unsigned StackBytes; - unsigned int i; - - /* We loop, incrementing the System Call Index, until the end of the file */ - for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) { - - /* Extract the Name and Arguments */ - GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); - if (SyscallArguments != NULL) - StackBytes = ARGS_TO_BYTES(strtoul(SyscallArguments, NULL, 0)); - else - StackBytes = 0; - - /* Make sure we really extracted something */ - if (NtSyscallName) { - - /* Create Usermode Stubs for Nt/Zw syscalls in each Usermode file */ - for (i= 0; i < UserFiles; i++) { - - /* Write the Stub Header and export the Function */ - WriteStubHeader(UserModeFiles[i], NtSyscallName, StackBytes); - - /* If a Zw Version is needed (was specified), write it too */ - if (NeedsZw) { - - NtSyscallName[0] = 'Z'; - NtSyscallName[1] = 'w'; - - /* Write the Stub Header and export the Function */ - WriteStubHeader(UserModeFiles[i], NtSyscallName, StackBytes); - } - - /* Write the Stub Code */ - fprintf(UserModeFiles[i], UserModeStub, SyscallId | Index, StackBytes); - } - - /* Create the Kernel coutnerparts (only Zw*, Nt* are the real functions!) */ - if (KernelModeFile) { - - NtSyscallName[0] = 'Z'; - NtSyscallName[1] = 'w'; - WriteKernelModeStub(KernelModeFile, - NtSyscallName, - StackBytes, - SyscallId | Index); - } - - /* Only increase if we actually added something */ - SyscallId++; - } - } - -#if defined(_MSC_VER) - for (i= 0; i < UserFiles; i++) fprintf(UserModeFiles[i], "END\n"); - fprintf(KernelModeFile, "END\n"); -#endif -} - -/*++ - * CreateSystemServiceTable - * - * Parses a System Call Database and creates a System Call Service Table for it. - * - * Params: - * SyscallDb - System Call Database to parse. - * - * SyscallTable - File in where to create System Call Service Table. - * - * Name - Name of the Service Table. - * - * FileLocation - Filename containing the Table. - * - * Returns: - * None. - * - * Remarks: - * FileLocation is only used for the header generation. - * - *--*/ -void -CreateSystemServiceTable(FILE *SyscallDb, - FILE *SyscallTable, - char * Name, - char * FileLocation) -{ - char Line[INPUT_BUFFER_SIZE]; - char *NtSyscallName; - char *SyscallArguments; - int SyscallId; - - /* Print the Header */ - WriteFileHeader(SyscallTable, "System Call Table for Native API", FileLocation); - - /* First we build the SSDT */ - fprintf(SyscallTable,"\n\n\n"); - fprintf(SyscallTable,"ULONG_PTR %sSSDT[] = {\n", Name); - - /* We loop, incrementing the System Call Index, until the end of the file */ - for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) { - - /* Extract the Name and Arguments */ - GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); - - /* Make sure we really extracted something */ - if (NtSyscallName) { - - /* Add a new line */ - if (SyscallId > 0) fprintf(SyscallTable,",\n"); - - /* Write the syscall name in the service table. */ - fprintf(SyscallTable,"\t\t(ULONG_PTR)%s", NtSyscallName); - - /* Only increase if we actually added something */ - SyscallId++; - } - } - - /* Close the service table (C syntax) */ - fprintf(SyscallTable,"\n};\n"); - - /* Now we build the SSPT */ - rewind(SyscallDb); - fprintf(SyscallTable,"\n\n\n"); - fprintf(SyscallTable,"UCHAR %sSSPT[] = {\n", Name); - - for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) { - - /* Extract the Name and Arguments */ - GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); - - /* Make sure we really extracted something */ - if (NtSyscallName) { - - /* Add a new line */ - if (SyscallId > 0) fprintf(SyscallTable,",\n"); - - /* Write the syscall arguments in the argument table. */ - if (SyscallArguments != NULL) - fprintf(SyscallTable,"\t\t%lu * sizeof(void *)",strtoul(SyscallArguments, NULL, 0)); - else - fprintf(SyscallTable,"\t\t0"); - - /* Only increase if we actually added something */ - SyscallId++; - } - } - - /* Close the service table (C syntax) */ - fprintf(SyscallTable,"\n};\n"); - - /* - * We write some useful defines - */ - fprintf(SyscallTable, "\n\n#define MIN_SYSCALL_NUMBER 0\n"); - fprintf(SyscallTable, "#define MAX_SYSCALL_NUMBER %d\n", SyscallId - 1); - fprintf(SyscallTable, "#define NUMBER_OF_SYSCALLS %d\n", SyscallId); - fprintf(SyscallTable, "ULONG %sNumberOfSysCalls = %d;\n", Name, SyscallId); -} - -/*++ - * WriteSpec - * - * Prints out the Spec Entry for a System Call. - * - * Params: - * SpecFile - Spec File to which to write the header. - * - * SyscallName - Name of System Call for which to add the stub. - * - * CountArguments - Number of arguments to the System Call. - * - * Returns: - * None. - * - * Remarks: - * None. - * - *--*/ -void -WriteSpec(FILE* StubFile, - char* SyscallName, - unsigned CountArguments) -{ - unsigned i; - - fprintf(StubFile, "@ stdcall %s", SyscallName); - - fputc ('(', StubFile); - - for (i = 0; i < CountArguments; ++ i) - fputs ("ptr ", StubFile); - - fputc (')', StubFile); - fputc ('\n', StubFile); -} - -/*++ - * CreateSpec - * - * Parses a System Call Database and creates a spec file for all the entries. - * - * Params: - * SyscallDb - System Call Database to parse. - * - * Files - Array of Spec Files to which to write. - * - * CountFiles - Number of Spec Files to create - * - * UseZw - Use Zw prefix? - * - * Returns: - * None. - * - * Remarks: - * None. - * - *--*/ -void -CreateSpec(FILE * SyscallDb, - FILE * Files[], - unsigned CountFiles, - unsigned UseZw) -{ - char Line[INPUT_BUFFER_SIZE]; - char *NtSyscallName; - char *SyscallArguments; - unsigned CountArguments; - - /* We loop until the end of the file */ - while ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL)) { - - /* Extract the Name and Arguments */ - GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); - CountArguments = strtoul(SyscallArguments, NULL, 0); - - /* Make sure we really extracted something */ - if (NtSyscallName) { - - unsigned int i; - for (i= 0; i < CountFiles; i++) { - - if (!UseZw) { - WriteSpec(Files[i], - NtSyscallName, - CountArguments); - } - - if (UseZw && NtSyscallName[0] == 'N' && NtSyscallName[1] == 't') { - - NtSyscallName[0] = 'Z'; - NtSyscallName[1] = 'w'; - WriteSpec(Files[i], - NtSyscallName, - CountArguments); - } - - } - } - } -} - -void usage(char * argv0) -{ - printf("Usage: %s [-arch ] sysfuncs.lst w32ksvc.db napi.h ssdt.h napi.S zw.S win32k.S win32k.S\n" - " sysfuncs.lst native system functions database\n" - " w32ksvc.db native graphic functions database\n" - " napi.h NTOSKRNL service table\n" - " ssdt.h WIN32K service table\n" - " napi.S NTDLL stubs\n" - " zw.S NTOSKRNL Zw stubs\n" - " win32k.S GDI32 stubs\n" - " win32k.S USER32 stubs\n" - " nt.pspec NTDLL exports\n" - " -arch is optional, default is %s\n", - argv0, - ncitool_data[0].arch - ); -} - -int main(int argc, char* argv[]) -{ - FILE * Files[Arguments] = {0}; - int FileNumber, ArgOffset = 1; - char * OpenType = "r"; - - /* Catch architecture argument */ - if (argc > 3 && !strcmp(argv[1],"-arch")) { - for( arch_sel = 0; ncitool_data[arch_sel].arch; arch_sel++ ) - if (strcmp(argv[2],ncitool_data[arch_sel].arch) == 0) - break; - if (!ncitool_data[arch_sel].arch) { - printf("Invalid arch '%s'\n", argv[2]); - usage(argv[0]); - return 1; - } - ArgOffset = 3; - } - /* Make sure all arguments all there */ - if (argc != Arguments + ArgOffset) { - usage(argv[0]); - return(1); - } - - /* Open all Output and bail out if any fail */ - for (FileNumber = 0; FileNumber < Arguments; FileNumber++) { - - /* Open the File */ - if (FileNumber == 2) OpenType = "wb"; - Files[FileNumber] = fopen(argv[FileNumber + ArgOffset], OpenType); - - /* Check for failure and error out if so */ - if (!Files[FileNumber]) { - perror(argv[FileNumber + ArgOffset]); - return (1); - } - } - - /* Write the File Headers */ - WriteFileHeader(Files[NtosUserStubs], - "System Call Stubs for Native API", - argv[NtosUserStubs + ArgOffset]); - fputs("#include \n" - "#include \n" - ".code\n\n", Files[NtosUserStubs]); - - WriteFileHeader(Files[NtosKernelStubs], - "System Call Stubs for Native API", - argv[NtosKernelStubs + ArgOffset]); - fputs("#include \n" - "#include \n" - ".code\n" - "EXTERN _KiSystemService:PROC\n\n", Files[NtosKernelStubs]); - - WriteFileHeader(Files[Win32kStubs], - "System Call Stubs for Native API", - argv[Win32kStubs + ArgOffset]); - fputs("#include \n" - "#include \n" - ".code\n\n", Files[Win32kStubs]); - - /* Create the System Stubs */ - CreateStubs(Files[NativeSystemDb], - &Files[NtosUserStubs], - Files[NtosKernelStubs], - MAIN_INDEX, - 1, - 1); - - /* Create the Graphics Stubs */ - CreateStubs(Files[NativeGuiDb], - &Files[Win32kStubs], - NULL, - WIN32K_INDEX, - 1, - 0); - - /* Create the Service Tables */ - rewind(Files[NativeSystemDb]); - CreateSystemServiceTable(Files[NativeSystemDb], - Files[NtosServiceTable], - "Main", - argv[NtosServiceTable + ArgOffset]); - - rewind(Files[NativeGuiDb]); - CreateSystemServiceTable(Files[NativeGuiDb], - Files[Win32kServiceTable], - "Win32k", - argv[Win32kServiceTable + ArgOffset]); - - /* Create the Spec Files */ - rewind(Files[NativeSystemDb]); - CreateSpec(Files[NativeSystemDb], - &Files[NtSpec], - 1, - 0); - - rewind(Files[NativeSystemDb]); - CreateSpec(Files[NativeSystemDb], - &Files[NtSpec], - 1, - 1); - - /* Close all files */ - for (FileNumber = 0; FileNumber < Arguments-ArgOffset; FileNumber++) { - - /* Close the File */ - fclose(Files[FileNumber]); - - } - - return(0); -} - diff --git a/reactos/tools/tools.mak b/reactos/tools/tools.mak index db4d27eb742..d2d846c749c 100644 --- a/reactos/tools/tools.mak +++ b/reactos/tools/tools.mak @@ -45,7 +45,6 @@ include tools/buildno/buildno.mak include tools/gendib/gendib.mak include tools/log2lines/log2lines.mak include tools/pipetools/pipetools.mak -include tools/nci/nci.mak ifeq ($(ARCH),powerpc) include tools/ofw_interface/ofw_interface.mak endif From ebe0662d8c28bef76d7e411c33a55218e33eec7a Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 9 Feb 2011 09:31:37 +0000 Subject: [PATCH 23/23] [WIN32K] add missing file svn path=/trunk/; revision=50626 --- .../subsystems/win32/win32k/include/napi.h | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 reactos/subsystems/win32/win32k/include/napi.h diff --git a/reactos/subsystems/win32/win32k/include/napi.h b/reactos/subsystems/win32/win32k/include/napi.h new file mode 100644 index 00000000000..9ae543bc76a --- /dev/null +++ b/reactos/subsystems/win32/win32k/include/napi.h @@ -0,0 +1,22 @@ +/* + * FILE: subsystems/win32/win32k/include/napi.h + * COPYRIGHT: GNU GPL, see COPYING in the top level directory + * PURPOSE: System Call Table for Native API + * PROGRAMMER: Timo Kreuzer + */ + +#define SVC_(name, argcount) (ULONG_PTR)Nt##name, +ULONG_PTR Win32kSSDT[] = { +#include "w32ksvc.h" +}; +#undef SVC_ + +#define SVC_(name, argcount) argcount * sizeof(void *), +UCHAR Win32kSSPT[] = { +#include "w32ksvc.h" +}; + +#define MIN_SYSCALL_NUMBER 0 +#define NUMBER_OF_SYSCALLS (sizeof(Win32kSSPT) / sizeof(Win32kSSPT[0])) +#define MAX_SYSCALL_NUMBER (NUMBER_OF_SYSCALLS - 1) +ULONG Win32kNumberOfSysCalls = NUMBER_OF_SYSCALLS;