Commit graph

47201 commits

Author SHA1 Message Date
Alex Ionescu d66140d475 [KERNEL32]:
Bug #35: TlsSetValue should allocate the TlsExpansionSlots under the PEB Lock.
Bug #36: TlsGetValue needs to set the last error to ERROR_SUCCESS when the index is valid (amd even if no expansion slots exist!).
Bug #37: TlsFree did not check the return of NtSetInformationThread(ThreadZeroTlsCell).
Bug #38: TlsAlloc was setting error to ERROR_NO_MORE_ITEMS instead of STATUS_NO_MEMORY. In principle the former is more accurate, but that's not how API compatibility works.
Optimize TLS functions not to call NtQueryTeb/Peb all the time. Cache the TEB/PEB value instead.


svn path=/trunk/; revision=52800
2011-07-23 11:28:35 +00:00
Alex Ionescu 2179ae0c5e [KERNEL32]: Fix Bugs #30, #31, #32, #33: WaitForSingleObjectEx, WaitForMultipleObjectsEx, SignalObjectAndWait, SleepEx need to set the default activation context active so that APCs can execute under it in the case of alertable wait.
[KERNEL32]: Fix Bug #34: WaitForMultipleObjectsEx was leaking the wait block array in case of a wait failure.

svn path=/trunk/; revision=52799
2011-07-23 11:17:36 +00:00
Alex Ionescu 72e42d63b1 [KERNEL32]: Implement a BaseFormatTimeOut helper function to take care of dwMillisecond->LARGE_INTEGER timeout conversion instead of duplicating 3 different versions of the code required to do so.
svn path=/trunk/; revision=52798
2011-07-23 11:05:00 +00:00
Alex Ionescu 293d54ec7e [KERNEL32]: Fix bugs #22, #23, #24, #25: (Un)RegisterWait(Ex) APIs were not checking for an invalid wait handle.
[KERNEL32]: Fix bugs #26, #27: RegisterWait(Ex) was not calling GetConsoleInputWaitHandle, so waits on console handles were given straight to the kernel (which obvioulsy doesn't grok them).
[KERNEL32]: Fix bugs #28, #29: UnRegisterWait(Ex) was not checking for STATUS_PENDING, which is a "warning" in NT, but an error as far as this API is concerned, so FALSE should be returned.

svn path=/trunk/; revision=52797
2011-07-23 10:16:10 +00:00
Alex Ionescu 89a3b49840 [KERNEL32]: And finally, the timer APIs and bugs #20 and #21.
svn path=/trunk/; revision=52796
2011-07-23 10:08:57 +00:00
Alex Ionescu 5e0d0909a0 [KERNEL32]: Apply macros to Semaphore APIs. Fix bugs #18/#19 (same as before).
svn path=/trunk/; revision=52795
2011-07-23 10:05:02 +00:00
Alex Ionescu d99b2bd865 [KERNEL32]: Arch, next time hit "Save" before comitting.
svn path=/trunk/; revision=52794
2011-07-23 10:03:10 +00:00
Alex Ionescu fd601c6a41 [KERNEL32]: Make Mutex APIs use the macros too. Fixes bugs #16/#17, same as #14/#15.
svn path=/trunk/; revision=52793
2011-07-23 10:00:32 +00:00
Alex Ionescu 9560a7dff9 [KERNEL32]: Forgot this, sorry.
svn path=/trunk/; revision=52792
2011-07-23 09:58:48 +00:00
Alex Ionescu defe10424f [KERNEL32]: Small fix to the macros (not functional, just for compiler's sake).
[KERNEL32]: Update Event APIs to use the new macros. Fixes bugs #14, #15: the create/open ANSI APIs were not returning the right error in case of object names that were too large.

svn path=/trunk/; revision=52791
2011-07-23 09:58:33 +00:00
Alex Ionescu 761add0ea0 [KERNEL32]: Create OpenNtObjectFromWin32Api macro (last one).
[KERNEL32]: Make OpenJobObjectW use this macro (nothing fixed, it was already doing the right thing).

svn path=/trunk/; revision=52790
2011-07-23 09:40:34 +00:00
Alex Ionescu d06e82af03 [KERNEL32]: Add ConvertOpenWin32AnsiObjectApiToUnicodeApi macro.
[KERNEL32]: Fix bugs #11, #12, #13: OpenJobObjectA did not correctly set the error code in case the string was too long, nor did it use the TEB's static unicode cache, nor did it enforce a 260 character object name limit. Fixed by using the new macro.

svn path=/trunk/; revision=52789
2011-07-23 09:28:15 +00:00
Alex Ionescu 5496adb4bc [KERNEL32]: Fix the object macros to be MSVC/C99 compatible. Also allow for the variadic part to contain no arguments.
[KERNEL32]: Fix bugs #7, #8, #9, #10: CreateJobObjectW did not add OBJ_OPENIF to named jobs, it did not add named objects in the BaseNamedObjects directory, it did not correctly set ERROR_ALREADY_EXISTS when collisions happened, and it did not set ERROR_SUCCESS when the object was created. All this was fixed by using the new CreateNtObjectFromWin32Api macro.

svn path=/trunk/; revision=52788
2011-07-23 02:17:26 +00:00
Alex Ionescu 19366d1781 [KERNEL32]: Fix bugs #4, #5, #6. CreateJobObjectA was building a dynamic string isntead of using the TEB. It was also not returning the right error code in case of error. It was also allowing jobs to have names past 260 characters. Fixed by using the ConvertWin32AnsiObjectApiToUnicodeApi macro from 5-6 revisions ago.
svn path=/trunk/; revision=52787
2011-07-23 00:30:56 +00:00
Alex Ionescu 59a6314a13 [KERNEL32]: Reformat (of my own code).
svn path=/trunk/; revision=52786
2011-07-23 00:29:00 +00:00
Alex Ionescu f185a728a7 [KERNEL32]: New macro, not yet used. This one implements the CreateXxxW APIs (or rather, will).
svn path=/trunk/; revision=52785
2011-07-23 00:28:33 +00:00
Cameron Gutman acd4c15b61 [AFD]
- Fix (hopefully) the final disconnect bugs

svn path=/trunk/; revision=52783
2011-07-22 15:11:01 +00:00
Alex Ionescu 2374f5b1aa [KERNEL32]: Clarify the difference between the macro and Basep8BitStringToStaticUnicodeString.
svn path=/trunk/; revision=52779
2011-07-22 10:10:15 +00:00
Alex Ionescu 278fb2f2b6 [KERNEL32]: Fix Bug #3. Make CreateNamedPipeA use our new macro. Fixes the fact it wasn't checking for success when doing the ANSI->Unicode translation, and just assumed things would work.
svn path=/trunk/; revision=52778
2011-07-22 09:50:33 +00:00
Alex Ionescu 45f4cd3964 [KERNEL32]: Fix Bug #2: FindFirstChangeNotificationA actually returns FALSE instead of INVALID_HANDLE_VALUE if the name conversion failed. In fact, up until Win7, all the *A object APIs do so, even though MSDN has always claimed the APIs return INVALID_HANDLE_VALUE. Since we don't have the Shim Database Microsoft has to unbreak apps on Win7 that probably depend on the old behavior, we'll keep the old behavior (especially since we target NT 5.2 -- and even Vista does it this way).
[KERNEL32]: Bug was fixed by using the new macros implemented last commit.

svn path=/trunk/; revision=52777
2011-07-22 09:09:05 +00:00
Alex Ionescu d19dfaa93c [KERNEL32]: Add a macro function that automatically takes care of A->W conversion for Win32->NT Object Create APIs, and does AllTheRightStuff.
[KERNEL32]: Fix bug #1: CreateFileMappingA was not returning the right error if the file mapping name was too long. By making it use the new ConvertWin32AnsiObjectApiToUnicodeApi macro, it now does.

svn path=/trunk/; revision=52776
2011-07-22 08:59:27 +00:00
Cameron Gutman cb26a7762f [AFD]
- Only trigger the close event if the pending receive list is empty

svn path=/trunk/; revision=52775
2011-07-22 04:31:33 +00:00
Cameron Gutman 2e54713de3 [AFD]
- Wait to signal a graceful receive shutdown until all buffered transport data is read by the application

svn path=/trunk/; revision=52774
2011-07-22 04:11:50 +00:00
Alex Ionescu 5965cf4895 NO CODE CHANGE:
[KERNEL32]: Rename "misc" to "wine" since this is what this is now.

svn path=/trunk/; revision=52773
2011-07-22 03:26:28 +00:00
Alex Ionescu c4e918f7a9 NO CODE CHANGE
[KERNEL32]: And at last, the final stroke. Move toolhelp.c into client, and split time.c into timezone.c (wineisms) and time.c (incorrect/buggy ntisms), which goes into client. Now "misc" truly only contains Wine-code (along with winnls), and the true NT base API that needs to be focused on is in "client".

svn path=/trunk/; revision=52772
2011-07-22 03:21:17 +00:00
Alex Ionescu 2780d189fc [KERNEL32]: We lost an API. Rbuild didn't care.
svn path=/trunk/; revision=52771
2011-07-22 02:43:12 +00:00
Alex Ionescu 222e577a94 [KERNEL32]: Remove stubs.c and instead distribute stubs in their appropriate files.
[KERNEL32]: Create vdm.c and appcache.c since no files existed for these kinds of APIs.

svn path=/trunk/; revision=52770
2011-07-22 02:13:57 +00:00
Sylvain Petreolle e18ef1f5a7 [ROSTESTS]
Add 3 missing tests to rbuild testcd.
Thanks to Caemyr and Testman.

svn path=/trunk/; revision=52769
2011-07-21 23:14:57 +00:00
Jérôme Gardou 39b9815f2e [SPEC2DEF]
- fix forward name export for c++ mangled functions.

svn path=/trunk/; revision=52768
2011-07-21 21:13:28 +00:00
Timo Kreuzer fe6c036e04 [CMAKE]
Add msvcrt20 and msvcrt40 to build

svn path=/trunk/; revision=52766
2011-07-21 18:40:41 +00:00
Timo Kreuzer 59f0449d2a [SPEC2DEF]
Fix creation of stubs for c++ mangled names

svn path=/trunk/; revision=52765
2011-07-21 18:39:24 +00:00
Sylvain Petreolle c5dc599680 [HIVES]
Fix Nls registry keys casing.
Tested by Alex.

svn path=/trunk/; revision=52764
2011-07-21 17:33:38 +00:00
Alex Ionescu cb35516e05 [KERNEL32]: Don't know how to fix this without breaking the synch... but this should fix CMAKE.
svn path=/trunk/; revision=52763
2011-07-21 17:28:21 +00:00
Alex Ionescu 1d0de632fd [KERNEL32]: C'mon cmake..you can do it!
svn path=/trunk/; revision=52762
2011-07-21 17:21:43 +00:00
Alex Ionescu 7d27bafbd7 [KERNEL32]: Add the #defines only to Winesynched code. Should fix CMAKE build...
[KERNEL32]: Move more Vista APIs out of the way and un-export some functions. Reset the WINNT_VERSION to 0x502 instead of 0x600, except for synch.c (TBD).
[KERNEL32]: Fix casts and math in GetTickCount and GetTickCount64. GetTickCount64 is Vista, but Wine-synched DLLs need it, so leave it exported.

svn path=/trunk/; revision=52761
2011-07-21 17:02:48 +00:00
Alex Ionescu 03c9810bee [NLS]: Kill this directory from the build. It produced nothing other than a Vista-calling DLL which was never even on the BootCD.
[KERNEL32]: Remove GetLocaleInfoEx again.
[KERNEL32]: It seems CMAKE build doesn't like kernel32 code calling "HeapAlloc" because HeapAlloc doesn't exist -- it's a forward to RtlAllocateHeap. As a hack, add compiler defines to do the forwarding in C code as well.

svn path=/trunk/; revision=52760
2011-07-21 15:39:28 +00:00
Alex Ionescu abbef1be00 [NTDLL]: Export RtlActivateActivationContextEx.
svn path=/trunk/; revision=52759
2011-07-21 15:38:05 +00:00
Timo Kreuzer eb8ac37dc0 [CMAKE]
Add msconfig to build

svn path=/trunk/; revision=52758
2011-07-21 14:20:50 +00:00
Ged Murphy 801b51ce18 [KERNEL32]
Add GetLocaleInfoEx back to the exports, idndl needs it.
Should fix default (rbuild) build. No idea (and don't care) about the cmake build, the cmake boys will have to deal with that if it breaks.

svn path=/trunk/; revision=52757
2011-07-21 13:40:57 +00:00
Alex Ionescu 9da861ac5c [KERNEL32]: Try to fix CMAKE build. I love how the RBUILD build is fine though.
svn path=/trunk/; revision=52756
2011-07-21 05:56:31 +00:00
Alex Ionescu ca5fb1b692 [KERNEL32]: Now really kill combdcb.c, as the Wine implementation is now in comm.c
svn path=/trunk/; revision=52755
2011-07-21 05:26:12 +00:00
Alex Ionescu 8d4cdb4ba1 [KERNEL32]: Winesync all there is to Winesync in ReactOS' kernel32. This mainly affects LZ*, Comm*, *ProfileString* (INI), and *Resource* APIs, however the changes in there are relatively minor. More substantial changes affect the locale/NLS/language functions, many which were bitrotting for 6+ years.
In theory, this code is "better" than before, and it is closer to Wine (which arguably has better compatibility). It also resets things in sync with Wine however, and may lose and "fixes" ReactOS may have added over the years. But this is a good thing, since these fixes have been "lost" (they obviously never made it into Wine), and if regressions are now found due to this, actual upstream patches can be sent and picked up on the next sync. This avoids maintaining duplicate code, at the expenses of some potential short-term regressions in i18n.
Finally, note that much of /string seems to be taken from Wine's Unicode library (which a host "unicode" already exists in ReactOS' tools/. It may be better (for someone with more experience as to these wine-isms) to simply just pull-in whatever winelib files are not currently present in ReactOS, and have kernel32 and tools/unicode use winelib, instead of having 2 or 3 copies of the code.

svn path=/trunk/; revision=52754
2011-07-21 05:24:59 +00:00
Alex Ionescu b61bacd753 [WINE]: Fix build.
svn path=/trunk/; revision=52753
2011-07-21 03:19:44 +00:00
Alex Ionescu 2d6abdac2d NO CODE CHANGE
[KERNEL32]: Final part of the re-structure: move the last few files from "misc" into "client". Now "misc" is mostly composed of Wine-based code (which will soon by Winesynched) that provides functionality such as INI, .rsrc parsing and LZip expansion, as well as the RS232-based APIs. The rest of "client" is NT-layer glue, much of it buggy and in need of help.
[KERNEL32]: Move "Beep" from environ.c to deviceio.c... seems to make more sense there.
[KERNEL32]: Set kernel32_handle since Wine-synched code will depend on this.
[KERNEL32]: Link with winelib, don't link with normaliz anymore.

svn path=/trunk/; revision=52752
2011-07-21 02:55:56 +00:00
Alex Ionescu fcd58d94bb [PSDK]: Add missing RESETDEV define to winbase.
[WINE]: Wrap Wine's get_char_typeW to iswctype in unicode.h, which will allow better sharing of synched code.

svn path=/trunk/; revision=52751
2011-07-21 02:51:50 +00:00
Timo Kreuzer 1519ee0ed7 [KERNEL32]
Hey Arch, stop deleting our code!

svn path=/trunk/; revision=52749
2011-07-20 20:18:17 +00:00
Cameron Gutman 1e3d0d1bb6 [USETUP]
- Fix length calculation for FAT16 volumes

svn path=/trunk/; revision=52748
2011-07-20 19:56:58 +00:00
Timo Kreuzer 94cd89e643 [CMAKE]
Really fix build

svn path=/trunk/; revision=52747
2011-07-20 19:04:59 +00:00
Cameron Gutman e399b918e2 [RTL]
- Fix a couple of potential null pointer accesses

svn path=/trunk/; revision=52746
2011-07-20 18:38:13 +00:00
Cameron Gutman 04db4cde59 [KERNEL32]
- Try to fix CMake build

svn path=/trunk/; revision=52745
2011-07-20 18:14:08 +00:00