We now use BalancedRoot->Parent as the nil element and distinguish it from
the embedded element.
Fix null and root macros, assert macro and some other stuff.
svn path=/trunk/; revision=24495
- Restructure memory-map building loop to create special descriptor for NLS data
- Fix a bug in memory-map building loop which lead to not covering last XXX pages of memory
svn path=/trunk/; revision=24483
in generictable.
Not tested, (but nothing relies on it yet).
Austin is
Copyright (C) 2000 Kaz Kylheku <kaz@ashi.footprints.net>
Copyright (C) 2000 Carl van Tast <vanTast@netway.at>
Copying, reuse and modification are permitted on liberal terms.
svn path=/trunk/; revision=24482
- Perform hardware detection in the beginning (I had to insert RegInitializeRegistry() hack because MachHwDetect initializes certain stuff in registry)
- Convert info from hwdetect to suitable form in LPB (code by Alex Ionescu, just moved/adapted). Debug routine added to output its contents.
- Move allocation memory for NlsData into "phase 0" (AllocateAndInitLPB)
- Fixed SystemRoot to be of a correct form (later will be autogenerated of course, now just for reference)
svn path=/trunk/; revision=24480
- HAL DMA enhancements by Filip Navara.
- CSRSS Console enhancements by Filip Navara.
- Win32k Primitive Queue/Input/Painting/Focus enhancements by Filip Navara.
- Other misc win32k/CSR bug fixes by Filip Navara.
- The new bootvid code has some bugs, but try out a GUI Boot!
svn path=/trunk/; revision=24464
- Initialize Io in one shot, with IoInitSystem.
- Locate the system DLL a bit later, since on the boot CD this creates a small incompatibility due to the wrong path being in use.
svn path=/trunk/; revision=24463
- Fix a pretty bad stack/memory corruption bug related to IoReassignSystemRoot.
- Combine IoInit2 and IoInit3 into IoInitSystem, and make it return a BOOLEAN, and handle error with the appropriate IO1_INIT_FAILED bugcheck. Will combine IoInit1 soon.
svn path=/trunk/; revision=24462
- Call IoAssignDriverLetters with the proper parameters, and give it a chance to update the SystemRoot path (although our version doesn't yet do this).
svn path=/trunk/; revision=24461
* Rename IoCreateArcNames to IopCreateArcNames and set it to NTAPI, as well as pass the loader block as a parameter.
* Reduce buffers to 128 bytes, since ARC Paths don't get longer then that.
* Optimize stack usage by using a single ANSI_STRING instead of 3 or 4.
* Optimize stack usage by using a single ansi buffer, not 2 or more.
svn path=/trunk/; revision=24458
- Also optimize stack usage by only using an ANSI buffer instead of having another Unicode buffer and unicode strings. Saves 530 bytes of stack.
svn path=/trunk/; revision=24457
- Inline IopAssignArcNamesToDisk to reduce some stack size abuse and too much parameter shuffling.
- Stack use is still very inefficient, will fix next.
svn path=/trunk/; revision=24456
- Last step is to stop using a list of drives and pool allocated entries, to optimize memory usage and re-factor the code.
svn path=/trunk/; revision=24453
- Add code to KiRosFrldrLpbToLpb to convert this array to the official ARC_DISK_INFORMATION structure that contains LIST_ENTRYies for each ARC_DISK_SIGNATURE, and initialize the ArcDiskSignatureListHead.
- The end result will be that in the next patch we can remove a bunch of registry-reading code in IoCreateArcNames.
svn path=/trunk/; revision=24452
- Optimize some code paths, mostly by not querying the whole GET_DRIVE_GEOMETRY IRP twice and reducing some buffer usage. Also re-factor some code better into smaller functions.
- Document and work around currently FreeLDR incompatibility (lack of ARC_DISK_INFORMATION) data in LoaderBlock.
svn path=/trunk/; revision=24451
- Implement WinLdrScanRegistry() (based on freeldr's already existing implementation) which searches for boot-loading drivers
- Implement WinLdrAddDriverToList() - it correctly fills an entry in the BootDriversList in LoaderParameterBlock
svn path=/trunk/; revision=24444
- Split Po init in two, so the early Po init (which we'll need to do eventually) doesn't depent on the later Po init (which uses a PnP notification which depends on the Io system).
- Make I/O initialize quite a bit later.
svn path=/trunk/; revision=24439
- Improve Init bugchecks to give the exact module that failed. Add Kd initilization in the same block as the other subsystems.
- Rename and re-arrange some initlization calls.
svn path=/trunk/; revision=24438
- Separate locating the system DLL from initializing it.
- Implement split-phase PsInitSystem for Phase 0 and 1, and make system dll initialization as part of phase 1.
- Add MmVerifyImageIsOkForMpUse and MmCheckSystemImage to validate the system DLL.
- Add a separate bugcheck for each failure in PsLocateSystemDll, matching with the NT bugchecks that would occur.
svn path=/trunk/; revision=24437
- Fixup HAL's image base in the loader parameter block, since we load it at a different place then freeldr tells us.
- We've reached a dead end in NTLDR compatibility. Out memory manager initialization code makes some assumptions which are totally incompatible with the page table state that NTLDR gives us.
svn path=/trunk/; revision=24436
- Rename some LastKrnl... addresses into MmFreeLdr to easily identify them, and remove the need to use MmFreeLdrMemLower and MmFreeLdrPageDirectoryStart.
- Remove the static KERNEL_BASE definition based on a GCC-specific external. Everything now uses the actual module entry's saved base address.
- Fix a Ps Initialization hack and properly set the boot PDE.
- Add a hack for NTLDR's lack of MmFreeLdrMemHigher and MmFreeLdrPageDirectoryEnd.
svn path=/trunk/; revision=24435
- Query NLS file names from registry instead of hardcoding
- Move loading of NLS data to WinLdrLoadAndScanSystemHive()
svn path=/trunk/; revision=24429
- Add KdCom.dll loading along with ntoskrnl.exe and hal.dll
- Move registry-related code to a new file wlregistry.c
- WinLdrLoadAndScanSystemHive() is going to combine loading, initializing and parsing registry. NLS / OEM font data loading is marked with FIXMEs now, since it needs going into that routine (because registry tells the file names, not hardcoding them)
svn path=/trunk/; revision=24427
- Fix HvInitialize definition to match more closely NT's since I need some of the extra parameters for the cm rewrite.
- Implement ExInitializePushLock and ExConvertPushLockSharedToExclusive macros.
svn path=/trunk/; revision=24426
- Make ExpInitNls responsible for NLS initialization in Phase 0 as well, to clean up the code in ExpInitailizeExecutive a bit.
- Initialize the system time/clock in Phase 1, not in Phase 0.
- Do HAL Phase1 initialization as the first step in Phase 1 initialization, then initialize the system clock (since the HAL's RTC is now configured).
- Do Ob Phase 1 init in Phase 1 initialization, not in phase 0.
- Do Ke Phase 1 init after HAL, Ob and Ex phase 1 inits.
- Initialize NLS for Phase 1 after Ke Phase 1, instead of much later.
svn path=/trunk/; revision=24414
- Promote the Phase 1 initialization thread by jumping directly into the zero-page thread, and remove manual zero-page thread initialization code since we simply jump into its main routine.
- 100 less lines of code :)
svn path=/trunk/; revision=24413
- This optimizes booting as well as gets use the differnet SESSIONY_INITIALIZATION_FAILED, where Y is a number representing which step of the process parameter/envieonment creation failed.
svn path=/trunk/; revision=24411
- Get rid of the CACHED_MODULE array and associated structures and stop using them, get rid of ParseAndCacheLoadedModules. Stop using KeLoadedModules and KeLoadedModuleCount outside of freeldr.c.
- Except for MmInit1, the kernel should now be totally isolated from FreeLDR-specific data.
svn path=/trunk/; revision=24409
- Delete rtl/nls.c and all the associated deprecated code.
- Do MmInit1 and SharedUserData stuff *after* initializing the initial thread, to avoid an ASSERT during bootup.
svn path=/trunk/; revision=24408
- FIXME: Since FreeLdr doesn't really keep track of which memory is of which type, this code has a massive hack for guessing the memory type, which is incorrect for future usage
svn path=/trunk/; revision=24405
- Implement WinLdrAllocateDataTableEntry() used for allocating and initializing the DTE
- Implement WinLdrLoadImage(), which uses LdrRelocateImageWithBias() from RTL, calling it with loader name "FLx86" (RTL should treat it differently -- ROS/WinLdr-specific behavior)
svn path=/trunk/; revision=24402
- Change debugging checkpoint to online-asm (all this is temporary), since any code after while(1){}; seems to be just optimized away by gcc
- Uncomment NDEBUG for now
svn path=/trunk/; revision=24401
- Tag the Device ID onto the treeview items and provide functionality to tear it down
- Remove/change some code which wasn't needed to speed up opening time3
- We now have a pretty functional device manager. However it's heavily reliant on devmgr.dll, therefore functionality per device will rely on how complete this lib is.
svn path=/trunk/; revision=24396
- Someone (FILIP!) please fix LdrGetProcedureAddress. It's broken and I had to rename an ntdll export to make it work (see comments).
- Make sure you REBUILD CLEAN. This commit changes NCITool!!!
- Setup some NPX-related CPU features in SharedUserData during KiInitializeKernel.
- Remove some now-deprecated initialization functions.
svn path=/trunk/; revision=24395
- Change installation logic when installing to a NTLDR's boot.ini: Firstly freeldr.ini is checked for existence, and either created or updated, then boot.ini is checked for having a proper entry, and if needed - entry is added. Fixes related bugs (having more and more ReactOS entries, no entry added if freeldr.ini already exists in the root folder)
svn path=/trunk/; revision=24392
2. fixed sub languages on allot languages rc files
3. add LMH1 Norwegian translations.
See issue #1698 for more details.
svn path=/trunk/; revision=24389
- Scanfor NOEXECUTE/EXECUTE/OPTIN/OPTOUT/ALWAYSON/ALWAYSOFF load strings and set the appropriate NX policy in KUSER_SHARED_DATA as well as kernel CPU Feature flags.
svn path=/trunk/; revision=24387
- Detect Hyper-Threading and set Local APIC ID (put back Thomas's code that he added in an old revision and that I had accidentally removed and forgotten to re-convert into the new KiGetFeatureBits function).
- Add code to set the kernel MX Csr Mask in the FX Save Area.
- Startup the sysenter handler on the DPC stack.
- Detect and notify users with broken Pentiums.
- Do some NPX checks to forcefully disable any FPU flags that might be set (SSE, MMX, 3DNOW) if the NPX is disabled.
svn path=/trunk/; revision=24386
- Do all CPU configuration through IPIs and synchronize with potential multiple CPUs.
- Add mtrr.c and patpge.c for future support of MTRR, AMD K6 MTRR, PGE and PAT support, with initilization calls in each of them (which only print out a "Sorry" message).
- Add some stubbed code for extra initizliation to do later once some detection things are fixed.
svn path=/trunk/; revision=24385
"The current implementation continues to register or unregister additional DLLs
that were specified, even if one of the earlier ones failed. The behavior on
the Microsoft version is different; if one fails, it stops there instead of
continuing. Some installers may possibly depend on this behavior."
svn path=/trunk/; revision=24371
- Add the last bit to the usb mouse driver to make it functional - recognition by mouclass.sys, and sending input data to it
- Misc small changes
Now USB mouse works in 2nd stage (you need to add usbdriver.sys as a legacy driver to the registry certainly)
TODO, but not of the top priority:
- Make unloading correct
svn path=/trunk/; revision=24369
Wait for Pnp manager to finish its job before displaying the 2nd stage setup
Thanks Filip for his precious help on the umpnpmgr.exe side (not thread-safe as Single linked list functions are not implemented in ntdll)
svn path=/trunk/; revision=24365
- Call PsInitSystem instead of PspInitPhase0, since PsInitsystem is the "external" phase-choosing routine.
- Implement ExComputeTickCountMultiplier to create a 24-bit precision remainder + whole integer of the ms/clock tick used in SharedUserData.
- Set the OS version and Machine Type (i386/PPC (<3 Arty) in SharedUserData.
- Move some HAL calls in Phase 2 (actually Phase 1...), same for KeInit2.
- Break into KDBG a bit earlier.
svn path=/trunk/; revision=24363
- Loop security descriptors to find NLS data and make a copy of it in kernel pool, because the NLS buffer from NTLDR will be freed on NT. Also discovered a bug in Freeldr where it doesn't allocate ths NLS files sequentially, leaving a hole of 0x1000 between them. Added a hack to compensate (won't break NTLDR booting, just will waste 8KB of memory).
- Allocate the system call count table on checked builds.
- Refactor Ob/Se booting to match more closely NT, and so that we can do Se initialization in one shot.
svn path=/trunk/; revision=24362
- Clear the crypto exponent on boot-up.
- Set default global flags for checked builds.
- Set NtSystemRoot (SharedUserData) to C:<NT BOOT PATH> on startup.
- Cleanup lookas.c file and implement routines to initialize the system lookaside list in phase 0.
svn path=/trunk/; revision=24360
* Removing the ARC Boot path and splitting it into the ARC Boot Device Name, the ARC HAL Device Name, and the NT Boot and HAL Path Names, saved in their respective LoaderBlock pointers.
* Converting every slash to a space. ("/DEBUGPORT" -> " DEBUGPORT")
* Now we can fully parse and read NTLDR command lines.
- Update various code in the kernel to:
* Use LoaderBlock->ArcDeviceNamePath & friends instead of the command line.
* Stop depending on slashes, and instead use strstr for parameters.
svn path=/trunk/; revision=24358
- Add a function for creating a stub of hardware config (config consisting of only one node - root)
- Implement two steps of LPB initialization (names Phase 0 and Phase 1 are used internally by me, and doesn't correspond to anything)
- Implement a WinLdrSetupForNt, which allocates and initializes some specific structures (PCR, TSS, GDT, IDT)
- Respectively enable calls to these functions from LoadAndBootWindows()
svn path=/trunk/; revision=24354
- This gets NTLDR working with ReactOS and I can boot all the way to MmInit1 (which fails due to missing KeMemoryMap & freeldr data).
- Serial port output works with DPRINT1 as well ;-)
svn path=/trunk/; revision=24352
- Add address conversion routines for windows loader
- Add stubs for PE loading, memory operations
- Add some code to the LoadAndBootWindows()
Some notes:
- The windows loader is going to become some kind of a library in future, shared at least between freeldr and EFI loader.
- The code in windows loader is specific to i386 architecture for now, but I add it to the "freeldr_base". I better separate it a bit later, after discussion with arty (because I hardly want compatibility with loading windows on PPC).
svn path=/trunk/; revision=24350
- Also move some ROS-specific/Freeldr hacks on top of the file so they'll be easier to remove later when needed.
- Fix a bug in ExInitPoolLookasidePointers which was making us overwrite low-memory.
- Initialize NLS tables during Phase 0, so that the associated APIs can work earlier.
- Bugcheck if HAL Phase 0 initialization failed, and force interrupts enabled after the HAL is ready.
svn path=/trunk/; revision=24348
- Update ExpInitializeExecutive to check for a valid setup block and detect text-mode and network installation modes. Use ExpInTextModeSetup instead of SetupMode variable, to make detection compatible with NTLDR.
svn path=/trunk/; revision=24347
- Add code in KiRosFrldrLpbToNtLpb to setup a LOADER_PARAMETER_EXTENSION and set the right version and size.
- Initialize the per-CPU PRCB Paged/NPaged lookaslide pool lists.
- Add code to support application CPUs booting in ExpInitializeExecutive, and pass the loaderblock as a parameter.
svn path=/trunk/; revision=24346
- Fix Ki386InitializeTss to properly set Boot TSS descriptor data (set it to 32-bits). Also properly setup the DF/NMI Task Gates in the IDT.
svn path=/trunk/; revision=24336
- Fix a double bug in KiSystemStartup. First, we were setting KPCR->Number instead of KPRCB->Number. Second, we were using KeGetPcr instead of __writefsdword. It worked on ROS because KeGetPcr is hard-coded to ROS's KPCR buffer.
svn path=/trunk/; revision=24334
- Use freeldr's stack during all of freeldr.c, and only switch to the boot stack in KiSystemStartup before calling KiInitializeKernel. This is what NT does as well (it piggybacks on NTLDR's stack until then). This allowed us to clean boot.S and now we can boot from NTLDR properly.
svn path=/trunk/; revision=24333
- Change some internal functions to use UNICODE_STRING instead of PCHAR since this is how LdrEntry->BaseDllName is, and also it's closer to NT Design.
svn path=/trunk/; revision=24331
- Create a LDR_DATA_TABLE entry for each module (driver, hal, kernel) and properly fill it out and insert it into the loader block.
- Use the NLS data block to hold pointers to the NLS tables.
- Use the ->RegistryBase/Length loader block members to hold pointers to the SYSTEM hive.
- Create a MEMORY_ALLOCATION_DESCRIPTOR for each type of memory currently used (LoaderNlsData, LoaderRegistrydata, LoaderSystemCode, LoaderHalCode, LoaderBootDriver).
- Changes are currently UNUSED!
- Revert LOADER_PARAMETER_BLOCK change, it actually really is PNLS_DATA_BLOCK.
svn path=/trunk/; revision=24318
- Set the booting CPU as idle if no next thread was scheduled.
- Raise IRQL to HIGH_LEVEL upon exiting KiInitializeKernel to match the re-lowering to DISPATCH_LEVEL in KiSystemStartup (and subsequent interrupt flush).
svn path=/trunk/; revision=24308
- Only check for break-in on the Boot CPU.
- Set priority to 0 *Before* lowering to DISPATCH_LEVEL.
- Also force interrupts to be enabled before lowering IRQL.
- Also set the idle thread's wait irql to DISPATCH_LEVEL (might fix some odd crashes) and set it as Running on UP builds (on SMP builds this is done in other code).
svn path=/trunk/; revision=24307
- Remove intrinsics in winddk.h since they're now properly done in intrin.h (thanks KJK!!!)
- Make freeldr.c setup the boot KTSS like NTLDR does, so that the GDT entry for it is valid (and remove the code that was doing this from Ki386InitializeTss)
- Refactor KiSystemStartup to use 100% dynamic pointers and machine data queried from the Loader Block or actual GDT/IDT/Selectors in memory, isntead of hard-coded ntoskrnl offsets. This makes it possible to be loaded by NTLDR, which sets these system structures up by itself. (we do it in freeldr.c, as hacks).
svn path=/trunk/; revision=24306
- Implemented KiRosFrldrLpbtoNtLpb to do a lightweight conversion and setup. Next patches will try to get rid of PLOADER_MODULE and use LDR_DATA_TABLE_ENTRY as well as increase bootstrap compatibility.
svn path=/trunk/; revision=24305
- Add stub for processing IRPs sent to the mouse driver
TODO (will be done once problem with load-order will be resolved):
- Store mouclass's callback address
- Actually call it thus making driver working
- Cleanup routines
svn path=/trunk/; revision=24300
- display the device icons for each item
- other bits and bats I'm too lazy to list
- it still load slowly due to multiple calls to SetupDiGetClassDevs. Need to think of a better way of gathering the info. For now though, it works.
svn path=/trunk/; revision=24297
- Spelling fixes
- More debug prints added to ease debugging
- Added entries for mouse and keyboard drivers (keyboard is currently commented out)
- Implemented actual usb mouse driver - contains 1 hack aimed to correct determining the endpoint. Driver fully works except for actually sending data to win32k/HID driver stack
svn path=/trunk/; revision=24296
Frank Richter <frank.richter@gmail.com>
setupapi: Duplicate behaviour of native SetupGetInfInformation with NULL ReturnBuffer and certain ReturnBufferSizes.
svn path=/trunk/; revision=24279
Change winlogon registry key to "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" for compatibility reasons, as some programs read it directly
svn path=/trunk/; revision=24278
restore no i386 arch define in rbuild
do not remove it, it is for build on no i386 platform
the was accident delete in r23830
svn path=/trunk/; revision=24272
1. fix do not delete all hdc and the restore hdc.
2. fix calc of SaveLevel the calc are not perfect
we only have 6 fails when we try restore dc now with wine gdi32 test dc
svn path=/trunk/; revision=24268
Adding a filesystem is now only a matter of creating a u{FS}.dll + one registry entry to be able to use normal format.exe/chkdsk.exe/...
svn path=/trunk/; revision=24254
Remove the if table I did.
Remove Color = Color & 0xffffff to Color = Color
that gave same result and pass equal many wine test.
we still have some werid xlate bugs some where, for set/get pixel. I should have remove Color & 0xffffff in frist place. but the code did look right.
svn path=/trunk/; revision=24235
- Patch by Dmitry Timoshkov
- If there is no space for strings GetOutlineTextMetricsA should not indicate that they present.
svn path=/trunk/; revision=24219
- Don't display a warning to user if allocating memory at certain address fails
- Change debug prints so they tell in which function allocation failed
- Include RTL and LDR headers from NDK, so that it's possible to use functions from RTL in FreeLdr in future
svn path=/trunk/; revision=24216
- We can now properly handle FPU faults (wrote a small test for invalid fpu precision).
- OpenGL probably still doesn't work, as there might be some bugs around the place. However, you should not see FPU Bugchecks anymore.
svn path=/trunk/; revision=24187
- Implement some extra checks in KiTrap7 and start coding the NPX shared handler. We *almost* have full FPU support now... (trying to get this done for tomorrow morning so that Greatlord can sent me the 15 000$ he promised...)
svn path=/trunk/; revision=24186
- Get CR0, read the KTHREAD NPX State, disable interrupts and verify if the NPX state is dirty. If it is, then reload CR0 with the new value. Re-enable interrupts. This sequence should make FPU work during context switching, but I haven't tested yet. At the very least, it should get rid of TRAP_FAULT_UNKNOWN blue screen.
- Set TEB in the same time as the selector is being configured, not way earlier.
svn path=/trunk/; revision=24184
- Don't read a useless stack pointer anymore.
- Update KTSS_ESP0 near the end of context switching, not at the beginning anymore.
- Same for IOPM and I/O Redirection Map Base Address.
svn path=/trunk/; revision=24182
- Stop using XP KPCR fields for storing stack values, they're not used inside the kernel anymore and now have 2003 values (WMI tracing, etc).
- Move parts of the process switch (LDT reload) out-of-line.
svn path=/trunk/; revision=24181
- Add code to wait for SwapBusy == FALSE on SMP.
- Add stub code to check for new PCR fields in 2003. Currently disabled because thread swap code still uses XP fields.
- Check for active DPCs at the end of thread swap, not at the beginning.
- Set PRCB->IdleThread outside of the thread swap routine.
- Don't set the thread state to running inside the swap routine, we already do it outside.
svn path=/trunk/; revision=24180
- Can't name specifics, but probably fixes multiple SEH/application bugs/regressions since about 6-8 months ago. Fixes my personal SEH test from 22 failures/crashes/BSODs to 22 succeesses...
- Also fixes some crashes in kernel-kqemu mode.
svn path=/trunk/; revision=24178
- Fix a terrible stack corruption bug in KeRaiseUserExceptionDispatcher which was causing us to eventually fuck up the stack in user mode (0x14 bytes instead of 0x50 bytes were reserved).
- Protect User-mode Callbacks with SEH, and use STATUS_POP_CALLBACK_STACK.
- Fix another nasty stack corruption bug in user-mode APC delivery.
- Protect User-mode APC delivery with SEH.
- Fix SEH handlers to return EXCEPTION_EXECUTE_HANDLER isntead of ExceptionContinueSearch.
svn path=/trunk/; revision=24173
follow thing need be done before it is finish but it will slov leaked memory and filehandle from NtGdiCreateEnhMetaFile
for we have NtGdiCreateEnhMetaFile implement. NtGdiCloseEnhMetaFile is base on wine cvs 15/9-2006
Todo
1. Rewrite it to own api call IntGdiCloseEmhMetaFile
2. Use Zw and Int direcly so we do not need todo context swith each call
3. Translate follow api to kernel api
// hMapping = CreateFileMappingW(Dc->hFile, NULL, PAGE_READONLY, 0, 0, NULL);
// Dc->emh = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
// hmf = EMF_Create_HENHMETAFILE( Dc->emh, (Dc->hFile != 0) );
svn path=/trunk/; revision=24172
reason
1. Bugfix some charters that did not show in Windows/ReactOS
2. Fixing space between some charters
3. Dejvau san font support 100% folllow Latin Extended-B, Latin Extended-C, Greek and Coptic, Superscripts and Subscripts, Currency Symbols.
4. and allot more new charters
svn path=/trunk/; revision=24167
James Hawkins <truiken@gmail.com>
- Add stubs for SetupOpenLog, SetupCloseLog, and SetupLogError
- Implement pSetupGetField, with tests.
svn path=/trunk/; revision=24162
- Optimize PspLookupUserEntrypoints to use static ANSI_STRINGs instead of building them at runtime.
- Fix mapping/loading of the System DLL so that it's loaded as executable code, not read-only code. Also fix a handle leak of the section, and re-factor some code into smaller shared functions to reduce code duplication.
svn path=/trunk/; revision=24154
Installing a driver is not as easy as copying files and adding some registry entries, especially when autogenerated PnP ids change...
svn path=/trunk/; revision=24153
* remove unused members in ConsoleInfo struct
* update global struct on UDN_DELTAPOS events
* update WindowSize ScreenBuffer member when bigger / smaller on scroll events
svn path=/trunk/; revision=24151
- Implemented SeAssignPrimaryToken.
- Setup Boot/System Token for Idle Process in SeInit2.
- Remove ROS hack in SeCaptureSubjectContextEx.
- Call SeAssignPrimaryToken in PspInitializeProcessSecurty when called for the Initial Process creation.
- Implement PsInitiailizeQuotaSystem and set PspDefauptQuotaBlock for the idle process so that it can be used for the initial process.
- Rewrite Process Manager Phase 0 initialization from scratch, to create a new initial system process and thread which will be used for Phase 1 (in ROS, phase 2) initialization of the executive.
- Fix a bug in PspCreateProcess which was using an uninitialized value of SectionObject in some cases, instead of NULL.
- Call PsInitailizeQuotaSystem from ObInit, and also create the system handle table inside the idle process, and make it the ObpKernelHandleTable.
- Do Executive Phase 0 Initialization at APC_LEVEL.
- Start idle thread at HIGH_PRIORITY then lower it to 0 once the Initial Thread is setup, so that it can run, then keep priority to 0 at DISPATCH_LEVEL and jump into idle loop code.
- Add NtYieldExecution to idle loop code since it's now being used.
- Fix IoGetCurrentProcess which was previously hacked.
- Remove some checks for Thread == NULL in ke_x.h, since this is now impossible.
- Split Phase 0/1 initialization in ex\init.c, since one runs in a separate thread now. Also don't lower IRQL to PASSIVE_LEVEL anymore (run at APC_LEVEL).
svn path=/trunk/; revision=24148
- Also fixed a previous bug where we didn't respect alertable waits anymore for KeWaitForMultiple...
- Remove krnlfun entry, the rest of dispatcher changes are tied to the new timer implementation for later.
svn path=/trunk/; revision=24138
Our are not complete it can not create the file.
But we parseing now some NULL pointer test and some other test in winetest for gdi32.
svn path=/trunk/; revision=24137
- Let Root bus report BootResources
- If no resource requirement are found, use the boot resource list (not sure of this one)
svn path=/trunk/; revision=24128
- completely rewrite the resource file to make it readable and logical
- do the same with the resource.h file (I'll cry if anyone messes these 2 up, it's mega neat now ... ;p)
- add the ReactOS logo to the first page (general tab)
- move the licence to it's own dialog accessable from the general tab
- rearrange the computer name and hardware pages
- delete the user profile page and add it as a separate dialog accessable from the advanced page
- add an error reporting button (as per XP) which opens a web browser directly to bugzilla.
- loads of other little alterations.
*note, I've dissabled language files until I've finished messing with the resources*
svn path=/trunk/; revision=24121
2. accepted LMH1 languages patch (with small modification)
3. fixed right sublang on few languages rc files
See issue #1685 for more details.
svn path=/trunk/; revision=24117
- Modified KeDelayExecutionThread and KeWaitForSingleObject to be much simpler and readable, reducing some of the loops and continues, and 4th-level indentation. Also packed up common wait initialization at the beginning of the function, and into two new inline functions: KxDelayThreadWait and KxSingleThreadWait. No actual semantic changes, just re-ordering.
- Rename KiUnwakeQueue to KiActivateWaiterQueue.
svn path=/trunk/; revision=24110
- Make sure all a process's threads are ready if they're on the ready queue, during attachment.
- Merge in KiReadyThread from scheduler code, with a small code change to keep working with ROS's scheduler lists instead.
svn path=/trunk/; revision=24108
1. This change are right but binutils setting
PE header flags wrongs for cpl/dll wrong
2. Remove entrypoint for cpl until this bug have
been fixed in binutils.
svn path=/trunk/; revision=24107
- Implement KiTryThreadLock which tries to acquire the lock but exits if it can't, isntead of looping.
- Re-factor KeWaitForGate to make it SMP-safe by acquiring various locks when required.
- Fixed up KeSignalGateBoostPriority so it can also be SMP-safe, and also fix what exactly happens when the gate is signaled (directly make the other thread ready instead of doing a KiUnwaitThread on it).
- Split KxAcquireSpinLock/KxReleaseSpinLock into SMP vs UP like the other routines.
svn path=/trunk/; revision=24103
- Don't play with priorities in KiAbortWaitThread anymore, since we'll soon support Win2003 delayed "adjust increment" functionality, so that the code is not repeated many times.
- Rename KiAbortWaitThread to KiUnwaitThread, make it use KiUnlinkThread and delayed adjustment.
- Implement KxUnwaitThread and KxUnwaitThreadForEvent, optimized versions of KiWaitTest that can be used in special circumstances (notification events, thread termination, process signalling).
- Optimize KeSetEvent by handling signaled notification events without acquiring the dispatcher lock, and by using new inlined routines described above.
- Reimplement KeSetEventBoostPriority properly to actually do boosting.
- Fixup KeRundownQueue with a more typical/proper LIST_ENTRY loop.
- Let me know if you see regressions...
svn path=/trunk/; revision=24102
- Rename exception.c to except.c, mostly due to MSVC's incompatibility with multiple identically named files.
- SVN delete usercall.c leftover.
- Fix KeSetPriorityAndQuantumProcess to use Queued Spinlocks and KiAcquireProcess/ThreadLock when needed.
svn path=/trunk/; revision=24094
- Undefine all functions for UP builds, except KeIpiGenericCall.
- Implement KeIpiGenericCall for UP builds and add @implemented tag.
svn path=/trunk/; revision=24093
- Also fixed the above for incorrect formatting/excessive whitespace.
- The other routines in device.c were moved to cpu.c, since they deal with CPU-specific things.
- Cleaned up KeFlushEntireTb.
- Added inlined routines for setting/getting CR, and also getting GDTR, IDTR, LDTR, TR. Used to implement KiSaveProcessorControlState.
- Implemented KeSaveStateForHibernate.
svn path=/trunk/; revision=24092
- Remove code in userapc.c and move it into usercall.c, since both functions basically deal with user-mode callouts.
- Handle STATUS_CALLBACK_POP_STACK and add the status to ntstatus.h
- Also handle future support for GDI Batch flushing.
svn path=/trunk/; revision=24089
1. Removed the stricmp guard
2. Added a #ifdef->#undef solution
If this break compilation on linux or on gcc 4 on win32 (very low probability, if any), let's think further.
svn path=/trunk/; revision=24076
- Fix KiIdleLoop to actuall load the PCR in EBX. It was using a completely random value.
- Call the Processor Idle Routine now, isntead of hard-coding STI+HLT. This routine had already been setup during bootup by PoInitailizePrcb.
- Implemented PopIdle0 and made it call HalProcessorIdle. No performance/throttling is done yet.
svn path=/trunk/; revision=24063
- Implement CPU Idle Loop in assembly for UP and SMP systems. Differences:
* Runs with interrupts off most of the time, except when it does interrupt cycling at each iteration.
* Calls KiRetireDpcList directly, instead of going through KiDispatchInterrupt.
* Support for new scheduler and immediate thread switch.
* Support for Idle Scheduler.
* Support for HAL/ACPI/CPU Driver-defined "Idle Function". currently disabled and STI+HLT harcoded instead.
- Removed ps/idle.c and dumped the hack code directly in psmgr.c wher eit's used.
svn path=/trunk/; revision=24062
- Add KiExitDispatcher from my new scheduler code. Same as KiQuantumEnd, added an assertion to make sure it doesn't enter in code paths that shouldn't yet happen.
svn path=/trunk/; revision=24061
- Fix a bug in KiSetPriorityThread which wasn't setting *released = FALSE, which left the var uninitailized and usually = TRUE on the stack.
- Half-copy KiQuantumEnd from my new scheduler code. Main difference is usage of newly created locks, support for quantum-disable and RT threads, and usage of KiComputeNewPriority.
svn path=/trunk/; revision=24060
- Fixup comment header for KiDeliverApc and KiInsertQueueApc.
- Set APC trap frame during APC delivery. We actually weren't doing this before (I'm kind of amazed at ROS's previous functionality due to importance of this bug!).
- Use proper in-stack queued spinlock mechanisms.
- Make sure that the Kernel APC list didn't become empty while we acquired the APC lock after the first verification.
- Validate IRQL on return from APC routines, to catch bad code.
svn path=/trunk/; revision=24059
- Support and document InsertApcEnvironment KAPC_ENVIRONMENT type.
- Fixup formatting and ASSERTify.
- Acquire dispatcher lock when insereting an APC into another thread.
- Use delayed interrupt request on SMP systems (and fixup KiRequestApcInterrupt accordingly).
svn path=/trunk/; revision=24058
- Fixup KeInitalizeApc like all the other functions.
- Don't use an expensive 48-byte RtlZeroMemory instead of just clearing two members.
svn path=/trunk/; revision=24056
- Optimize KeFlushQueueApc: we can check if the Kernel-Mode APC list is empty without acquiring the lock. If it's empty, we can quit immediately, if not, then we'll acquire and check it again. For user APCs we always need to acquire the lock, though.
svn path=/trunk/; revision=24054
- Move NtQueueApcThread to ps/state.c since it's a Ps-level function.
- Make NtQueueApcThread use POOL_QUOTA_FAIL_INSTEAD_OF_RAISE and add that flag to our DDK. Also fix the check for SystemThread by looking at the flag, not checking if TEB == NULL. Also fix a memory leak and comment header.
- Fix comment header in KiInitalizeUserApc.
svn path=/trunk/; revision=24051
- Move KiInitializeUserApc to ke/i386/userapc.c. The routine is non-portable.
- Force Ring 3 state into User APC TrapFrame to maintain system integrity and coherency. Also respect IOPL.
- Use SEH handling routine just like when handling exceptions, to properly re-direct a crash here. Thanks to KJK again for showing me how to write these kinds of routines.
svn path=/trunk/; revision=24050
- Release dispatcher lock from DPC level in KiAttachProcess.
- Add missing decoration/assert to KeAttachProcess, and only acquire APC lock after we've made the invalid attach test. Also acquire dispatcher lock at DPC level here and in KeStackAttachProcess.
- Loop in KeUnStachDetachProcess to avoid the case where we acquired the APC lock while a kernel APC was pending. Keep releaing the loop and re-attemping acquire until it has been delivered.
- Add Decoration for *ServiceTable* functions.
svn path=/trunk/; revision=24048
- Add some missing decoration.
- NUMA node semantics for KeInitializeProcess are only required on SMP builds.
- Allow KeInitailizeProcess to receive an argument specifying if alignment faults should be enabled or not.
- Use KiComputeIopmOffset to get the IopmOFfset instead of setting -1
svn path=/trunk/; revision=24047
- Add assertions to relevant functions in process.c and re-format some code.
- Check for invalid APC state in KeDetachProcess.
- Decrease process stack count while holding the Dispatcher Lock at DPC level.
- Implement KiSwapProcess in ctxswitch.S and add SMP-support and LDT swap support for the future, as well as updating the IOPM base in the TSS.
svn path=/trunk/; revision=24044
- Same changes to event.c as with the other files.
- Remove lock property, these files have already been audited as clean and were unlocked.
svn path=/trunk/; revision=24040
- Cleanup mutex.c and sem.c. No real code changes, just add ASSERTs, STDCALL->NTAPI, IN/OUT decoration.
- One change though, in KeReleaseMutant, use KeLeaveCriticalRegion instead of manually writing down the code, it's more readable this way.
svn path=/trunk/; revision=24039
- apc.c -> Also multiple optimizations to use the APC lock instead of the full-fledged dispatcher lock.
- gate.c -> Use APC lock as well, the full dispatcher lock isn't required because a thread can only wait on one and only one gate.
- process.c -> Optimize the code to use the Process and/or APC lock instead of the dispatcher lock. Also delay acquiring the locks after some checks, to make the exit paths simpler.
- More fixes are teh needed.
svn path=/trunk/; revision=24038
- Update KeSetAFfinityThread, KeSetPriorityThread with new locks and assertions (plus the current ROS scheduler hack).
svn path=/trunk/; revision=24034
- Update KeSetIdealProcessorThread to properly do Ideal CPU logic instead of blindgly setting it (most importantly, respect UserIdealProcessor and SystemAffinityActive seettings).
svn path=/trunk/; revision=24033
- Stargint reorganizing some public functions to the bottom of the file.
- Don't hold lock during KeSetKernelStackSwapEnable.
svn path=/trunk/; revision=24030
- Update KeFreezeAllThreads to use the Process and APC In-Stack Queued Spinlock.
- Update KeTerminateThread to use the Process Lock. Call KiRundownThread to cleanup the NPX thread. Add some assertions for Stack in/out-paging. Use KiSetThreadSwapBusy for proper SMP vs UP building.
- NUMA Node semantics in KeStartThread only need to be done for CONFIG_SMP builds, so #ifed them appropriately. Also made it use the Process In-Stack QSL.
svn path=/trunk/; revision=24029
- Implement KeAcquireInStackQueuedSpinLockRaiseToSynch for UP systems.
- Implement KiAcquireApcLock, KiAcquireApcLockAtDpcLevel, KiReleaseApcLock, KiReleaseApcLockFromDpcLevel.
- KeResumeThread, KeSuspendThread, KeAlertThread, KeForceResumeThread, KeTestAlertThread, KeAlertResumeThread are now the first to use the new APC In-Stack Queued Spinlock for sychronization.
svn path=/trunk/; revision=24028
- Also fix KeSetAffinityThread to return the old affinity, instead of NTSTATUS and move NtYieldExecution from Ps to Ke, and move NtDelayExecution to wait.c
- No code changes.
svn path=/trunk/; revision=24024
- Finally get rid of duplicated relocation code in ntdll by using the relocate function from RTL and enable/disable protection
- Some improvements added to RTL's relocation function, it's split up into two functions now
svn path=/trunk/; revision=24020
It did not catch the last input tick from keyboard or mouse.
This code is not tested in reactos, but should work.
See issue #1753 for more details.
svn path=/trunk/; revision=24005
- PE loading/relocating/fixups/etc is greatly documented in a number of sources (e.g. good russian-language article - http://www.uinc.ru/articles/41/, it has links to a different media describing loading process of PE)
- Nothing suspicious found in the code itself
svn path=/trunk/; revision=23987
Added S_OK and S_FALSE
modified Resources/ntstatus.xml
Added all possible STATUS_WAIT_XX codes as STATUS_WAIT_0 + XX
modified TechBot.Console/App.config
Don't use hard-coded paths, please!
modified TechBot.Library/ErrorCommand.cs
New and improved !error command, now performs heuristics to catch all possible or likely uses
modified TechBot.Library/HresultCommand.cs
Removed useless field
modified TechBot.Library/NumberParser.cs
Made a couple of methods static
modified TechBot.Library/TechBotService.cs
Disable !api until it fails gracefully
svn path=/trunk/; revision=23984
1>ReactOS Kernel - 0 error(s), 253 warning(s)
- Add winerror.h to ps/win32.c so it can get the Win32 error definition it needs (winerror.h doesn't add any other nasty win32 headers, so this isn't really a header policy violation).
- Fix prototypes of KdEnableDebugger and KdDisableDebugger.
- Write one of the cleanest and most ingenious hacks I've ever come up with it, which bypasses the incompatibility of hard-coded WDK externals.
svn path=/trunk/; revision=23973
- Header changes: fix FILE_LOCK_INFO, LARGE_MCB, BASE_MCB, MM_SYSTEMSIZE.
- Remove many things in W32API which are incorrectly there (due to winnt being used by the win32api DDK). Defined them in the NDK instead, where appropriate (mostly definitions that are present in user-mode headers, but not kernel-mode headers).
- Hacked the ERESOURCE functions to define a special ERESOURCE_XP type. This is necessary because ERESOURCE is an opaque-yet-exported structure, and its structure changed in Vista.
- Removed support for IMAGE_SCN_TYPE_NO_LOAD. It is a reserved field and Windows does not "respect" it. (sections marked as no-load will still be loaded by NT).
svn path=/trunk/; revision=23972
- Import the mingw startup library and customized it a little. _tmain() is now supported, compiling an application as unicode is now just a matter of setting the module attribute unicode="true"
- Fixed .rbuild files to import all libraries neccessary
- Various GUID header changes and hacks to get everything to build/link properly
- Fixed the IShellView2 interface
svn path=/trunk/; revision=23933
* remove hardcoded constants
* shuffle initialization code :-)
* changing console text / background color now works :-)))))))
* changing cursor works only for one input (needs be investigated)
svn path=/trunk/; revision=23930
- Patch by Dmitry Timoshkov
- do not force repainting on WM_WINDOWPOSCHANGED in combobox, it
breaks Z-order based painting.
- do nothing in the combobox WM_ERASEBKGND handler do all painting in
WM_PAINT like Windows does.
svn path=/trunk/; revision=23905
- main.c -> freeldr.c + cleanups and nice formatitng.
- Move out variables that were in main.c to ex\init.c or cpu.c, depending.
- Separate i386/kernel.c into i386/kiinit.c for X86-specific intiailization, and /krnlinit.c for portable initialization across all architectures. Also move out global variables appropriately.
- main_asm.S -> cpu.S
svn path=/trunk/; revision=23903
- Rename and fixup initial stacks, instead of using 16 different variables all with confusining meanings and values. Define P0BootStack as the initial kernel stack, and KiDoubleFaultStack as the double-fault trap (and initial DPC) stack.
- Fix call to KiInitializePcr which was setting an incorrect DPC stack.
- Make space on the initial stack for a KTRAP_FRAME as well, not only for the FPU save area.
- Also push initial CR0 NPX state on the initial stack.
- Load the IDT and GDT directly in KiRosPrepareForSystemStartup.
- Completely rewrite main_asm.S in Intel syntax and clean it up.
svn path=/trunk/; revision=23901
it is always 1Bpp and 1Plans and we are doing same now if HDC is NULL, some wine test deepness on it.
Hopply it will take care of some program problem.
svn path=/trunk/; revision=23899
- Also setup an NMI Task gate after the double fault task gate. Will be useful when we hand to handle NMIs later.
- Setup FS in KiSystemStartup and initialize the TSS before the PCR. Also add a bit more support for SMP systems (To skip boot-cpu-only initialization).
- Also setup DS/ES directly in KiSystemStartup.
- Initialize KD at phase 0 in KiSystemStartup, not in KiInitializeKernel, and also check for debug break at this time.
svn path=/trunk/; revision=23898
- Move LDT-only GDT routines to ldt.c
- Cleanup formatting of GDT-related exported function stubs in gdt.c and rename file to abios.c. Those routines deal specifically with the ABIOS GDT selectors and are for ABIOS support.
- Move the lone 2 routines in fpu.c to cpu.c.
svn path=/trunk/; revision=23895
- Add GetSegment inlines (ie: GetSs, GetDs, etc)
- Fix up definition of KiBootGdt to use KGDTENTRY instead of USHORT. Also define KiGdtDescriptor using KDESCRIPTOR.
- Remove GDT initialization code completely. The GDT is already initialized on boot.
- Remove tss.c and add KiInitializeTss(2) to setup a TSS and proper IOPM/Interrupt Direction map settings for V86/VDM.
- Copy the TSS code over but prettyify it to use NT/NDK structures instead of ugly USHORT typecasts.
svn path=/trunk/; revision=23894
2. Bugfix NtGdiGetDIBits the BITMAPCOREHEADER is not same as BITMAPINFOHEADER
we now separate it in if(Bits==NULL) that will allow us pass two more wine tests
follow winetest is working now
1. bitmap.c 227 Test failed: GetDIBits doesn't work with a BITMAPCOREHEADER
2. bitmap.c 233 GetDIBits doesn't work with a BITMAPCOREHEADER
both of them are fixed now
svn path=/trunk/; revision=23891
- Use interrupt enable/disable instead of raising to HIGH_LEVEL.
- Better use and pairing of locks.
- Fix a lot of race conditions in DPC dispatching, due to the fact almost all data we're touching is ultra-volatile and can change at any time depending on various locks being held/released + interrupt state.
- Add stub code/support for tick-hased table-based timer implementation and deferred threads.
svn path=/trunk/; revision=23888
- Fix KDPC definition in DDK. You can always count on the w32api to get even the simplest structures wrong.
- Fix memory overwrite bug in KiInitSpinlocks.
- Part 1 of 2: Cleanup and improve DPC implementation to add partial support for Threaded DPCs and remove SMP vs non-SMP ifdefs. (At the expense of, oh God, 5 wasted CPU cycles!).
svn path=/trunk/; revision=23886
- Initialize bugcheck messages much earlier, separate clock initialization from KeInit2.
- Completely move out and isolate ROS/FREELDR PE loading hacks to KiRosPrepareForSystemStartup so that KiSystemStartup is clean of them.
svn path=/trunk/; revision=23881
- Initialize bugcheck lists, timer DPC, profile list/locks, timer lists, the swap lists and syscall table as part of KiInitSystem (portable).
- Add more initialization for the initial/idle process+thread (some code disabled due to dispatcher problems).
- Add code to support future Timer implementation (based on tick-hashes)
- Separate post-boostrap initialization code in KiInitializeKernel.
- Add some support for future SMP paths.
- Create a DPC stack.
- Changes based on WI4 and my automated parsing tool.
svn path=/trunk/; revision=23880
- don't assign a service name at the start as it causes problems when query(ex) doesn't supply one.
- Simplify the service starting code.
- Add missing options to the print type
- rewrite the querying functionality to be cleaner, and use existing code.
- remove the braces I left, used for collapsing dbg info
svn path=/trunk/; revision=23868
- Main difference is new CPU detection algorithms for ID, cache, etc, as well as using KF_ Kernel Feature bits instead of x86 CPU features (For portability).
- Also many many other cleanups and re-sequencing.
svn path=/trunk/; revision=23852
- Add support for recovering from user-mode win32k callback fault.
- Also add support for debug register saving/reloading during user-mode callbacks and return.
svn path=/trunk/; revision=23849
- establish a connection to the SCM for each separate request, allowing the minimum privlidges required, instead of a generic (over privlidged) one.
- start to move service printing to separate functions and reduce code duplication
- make output 100% as per Windows
- fix some commands, e.g. 'interrogate'
- improve error checking
- improve code structure
svn path=/trunk/; revision=23848
- The same functions as in Win32 Console API, prefixed with Con
- The helpers (which call Con* functions) prefixed with CONSOLE_
Do according changes in other files
svn path=/trunk/; revision=23834
- Properly load DS/ES on system startup and GDT load
- Use proper DS/ES during deprecated IRQ handling.
- Always use GS as 0 for all of the above.
- *FINALLY* fixes the oldest bug there ever was -> DS/ES corruption noticed in VMWare (And recently in QEMU+KERNELKQEMU, since it behaves internally like vmware). Hacks in trap code have FINALLY been removed!
svn path=/trunk/; revision=23833
- Add support for lazy loading.
- QEMU + -kernel-qemu seems to work now.
- Hack away the Win32k bug that's been there for ages (copy to user-mode from kernel-mode failing due to probe due to incorrect previous mode). It's not the right fix, but nobody seems to be willing to fix it, and it doesn't make anything less stable, sicne the actually copy is in SEH anyway. It opens a security vuln. (wow, not like we have 15000) in exchange for fixing dozens of win32k bugs and failures.
svn path=/trunk/; revision=23832
- Add probing macros for IO_STATUS_BLOCK structures
- Added two inline functions ProbeArrayForRead() and ProbeArrayForWrite(), mainly for use in win32k as they also check for integer overflows.
svn path=/trunk/; revision=23827
* Clipboard implemtation in win32k and user32
* Added a clipboard system for each Window Station
* GetLastInputInfo implementation
* GetLayout in win32k Stubs
* Shell32 changes to cut/copy & paste link/paste
* Implemented ALT+PrintScreen to clipboard
svn path=/trunk/; revision=23811
* Clipboard implemtation in win32k and user32
* Added a clipboard system for each Window Station
* GetLastInputInfo implementation
* GetLayout in win32k Stubs
* Shell32 changes to cut/copy & paste link/paste
* Implemented ALT+PrintScreen to clipboard
svn path=/trunk/; revision=23810
- Implement AcquireSRWLockExclusive(), AcquireSRWLockShared(), InitializeSRWLock(), ReleaseSRWLockExclusive(), ReleaseSRWLockShared()
- NOTE: Some versions of GCC have a code generation bug with specially aligned structures on the stack. If compiled with such a compiler, the code might trigger special assertions. Pushlocks are also affected by this compiler bug.
- NOTE: The algorithms are most likely not the same as in Windows. Applications are supposed to treat the lock variables as opaque data, therefore it shouldn't matter.
svn path=/trunk/; revision=23806
ms have two different implement, One random is faster that other, (in some doc I read (maybe from osr) some year ago), the RtlRandomEx is not document in the free ddk/sdk, but it is include in ddk/ifs kit, according the doc.
svn path=/trunk/; revision=23799
- Get rid of KeRosGetStackFrames and replace usage by RtlWalkFrameChain or RtlCaptureStackBackTrace, depending.
- Remove this entry from Kernel Fun.
svn path=/trunk/; revision=23795
- Major cleanup of exp.c to move out deprecated and old code.
- Use KdDebuggerNotPresent to determine if KDBG is there or not. KdDebuggerEnable is now set whenever booting with debugging -- even if only serial port or screen debugging.
- Complete cleanup and major rewrite/improvement of bugcheck code:
- Moved stack dump routines to bug.c and cleaned them up. Next step is to remove most of them and implement them properly as part of RtlCaptureStackBackTrace and RtlWalkFrameChain.
- Use InbvDisplayString for everything now. BSODs will only truly show on screen. (however, part of the KeBugCheckWithTf improvements, a special "if debugger enabled" BSOD will also be displayed for debugging purposes).
- Do checksum calculation in bugcheck callbacks.
- Detect and display which drivers belong to which EIP.
- Implemented code to select the proper verbose BSOD message depending on the bug check code.
- Also implemented code to detect a variety of "known" bug check codes and to recover more data on them, and/or modify them accordingly. Sadly ROS doesn't yet make use of most of these codes.
- Factored out and split some code into individual routines.
- Look and functionality is now identical to Windows XP.
- Stack trace will only be shown if KDBG isn't connected. If KDBG is connected you can do "bt" anyway (which is more powerful).
svn path=/trunk/; revision=23794
1. move all inline asm to folder i386
2. to do : seh.s should be rewrites to intel syntax
3. to do : almost all c files in folders i386 need be convert to true asm instead using inline asm
4. add dection for x86 arch in rbuild for each found I have done
svn path=/trunk/; revision=23790
2. Rewote log10 to pure asm
3. Delete unuse c/asm files like ceil, cos, fabs, flor, sin, sqrt, and tan
4. Switch to rtl asm version of pow
5. Follow need be convert to asm atan2, exp, fmod, ldexp
6. Follow need c version atan2, exp, fmod, ldexp, atan, log10, pow
7. Add i386 arch dections in rbuild for asm/inline asm so we using only i386 asm on x86 cpu
svn path=/trunk/; revision=23784
- Got rid of all the previous related assembly code and implemented Ki386SetupAndExitToV86Mode and Ki386BiosCallREturnAddress.
- Implemented GPF (Trap 13) code for V86 faults (which will happen in V86 mode). Implement a generic Ki386HandleOpcodeV86 handler that increments counts and calls the right opcode handler.
- Implemented an Opcode Table Entry Index and Opcode Table array for mapping opcodes that caused a GPF to their V86 handlers/emulators.
- Implemented handlers for PUSHF, POPF, CLI, STI, IRETD and INTnn, which is what QEMU/VMWare and *most* VIDEO ROM BIOS code should use.
- Created a /vdm tree and moved all NTVDM/VDM specific code there.
- Halfplemented VdmStart/EndExecution APIs which the BIOS ROM V86 implementation is built upon. Currently don't handle VDM at all, only this V86 mode.
- Also added code for NtVdmControl and fixed up CSRSS and ACPI's calls to this API.
- Added detection and FIXMEs for support of VMEs in VMWare, Bochs and real hardware (VME is not yet supported).
- Move exp.c fixmes to krnlfun and remove kernel fun entries that this patch fixes.
svn path=/trunk/; revision=23763
1. implement detail show for network.
Magnus Olsen (me) aka GreatLord
I did review ncpa changes, he did only forget free the memory when detail propers was exit. I set erly style on file
that was not set. I also update most .rc so they contain the english res text. please translators translate this.
svn path=/trunk/; revision=23756
The bug I experis before was reletate to ntoslnrl and is complete gone. I have now reboot and boot around 10-20 times
and run same program. But we see all unicode -> ansi problem with this change if u select russan in reactos
svn path=/trunk/; revision=23749
1. Remove inline asm for hline and implement a asm version of it in intel syntax.
(optimzeing of this version can be done better, but it for be done for now)
2. set eorly style on file I forget.
svn path=/trunk/; revision=23732
1. Remove inline asm from hline and convert it to own asm file with intel syntax.
2. Reimplement colorfill inline asm version and convert it to own asm file with intel syntax.
the asm code can be optimze bit more. But for done
svn path=/trunk/; revision=23730
- Implement RTL_QUERY_REGISTRY_DELETE (which simply deletes the key after querying)
- Fix REG_MULTI_SZ to actually walk through the whole data, not stopping at the first encountered 0 character. This makes the "ntdll_winetest.exe reg" test behave exactly as on Windows XP
svn path=/trunk/; revision=23727
- Remove code in the page fault handler which was corrupting the trap frame.
- Remove some ROS hacks that dealt with the fact the trap frame was getting corrupted, since now it isn't anymore.
- Enable code that checks for Teb->GdiBatchCount during win32k system calls. The bugs that were mentionned in the #if 0 are fixed.
svn path=/trunk/; revision=23714
- Basically revert the new HAL/KERNEL IRQ code by putting the old one in, but without the actual pain of svn reverting and losing all the previous code.
- The old code goes in ntoskrnl\deprecated, and we only add a comment to the .rbuild file, re-export an old function, and initialize the old code in kernel.c. All the other kernel changes stay in-place to be tested.
- Same for hal, basically replace irq.S with irql.c in the .rbuild file, and disable the call to Halpinit1. All the other changes remain.
svn path=/trunk/; revision=23707
- Remove KrnlFun entry - IRQs are now done through a typical NT/ROS trap frame and are synchronized and compatible with trap.S.
- Enable 2nd entry interrupt calls in HalBeginSystemInterrupt, since IRQs now use the right trap frame.
svn path=/trunk/; revision=23697
- Cleaned up irq.c. Fixed file header, function prototypes, includes, etc, and moved general definitions and externs to ke.h
svn path=/trunk/; revision=23694
- Enable clock.S versions of KeUpdateSystem/RunTime and export them properly.
- Enable systimer.S to call into kernel's KeUpdateSystemTime.
- Enable Hal's Clock Interrupt during Phase 1.
- Remove most of the code that was still left in irq.c
- Only one large problem remains now, which is the spurious firing of the clock interrupt before we're ready to handle it... I will try to fix this today.
svn path=/trunk/; revision=23692
- Fix incorrect KPCR_PRCB_DPC_ROUTINE_ACTIVE which was totally wrong (And could've caused a crash in the context swicher)
- Also fix the definition of KRCB which was off-by-4 after about offset ~0x500. It wasn't causing problems because assembly code only used < 0x500.
- Write the ASM implementation of KeUpdateRunTime (not used yet).
svn path=/trunk/; revision=23681
- Make KeUpdateRunTime increase the interrupt count, check for V86 as well as for user-mode by using the CS and EFLAGS (isntead of PreviousMode), also only request DPCs if DpcInterruptRequested isn't already set, and only perform Quantum End if this isn't the idle thread.
- Add clock.S which will have the clock interrupt handlers of the kernel (UpdateSystemTime and UpdateRunTime) and ultimately replace the only reason irqhand.S is still around (the clock interrupt). Implement the current version of KeUpdateSystemTime in assembly, with stack optimizations since we'll be called from the HAL later.
svn path=/trunk/; revision=23680
- Update KeTickCount properly instead of an ugly timecast hack.
- Also update UserSharedData->TickCount.
- Get rid of KiRawTicks.
- Properly update KiTickOffset at the end.
svn path=/trunk/; revision=23679
- Implement KeDisconnectInterrupt with the new implementation.
- Put Clock Interrupt initialization in the right place (might still be too late: must investigate more).
- Added a debug print when unexpected interrupts are called, just noticed this happens on my checked machine, and it's a useful tracing tool.
svn path=/trunk/; revision=23678
- Uses new code added to trap.s for generic dispatching, as well as the NT implementation which copies a "template" into the ->DispatchCode array of every KINTERRUPT object.
- Also adds support for chained interrupts, but this hasn't been tested yet. Floating interrupts are not supported on NT it seems, so I haven't implemented those at all.
- KiDisableInterrupt not yet re-implemented, and timer code is still piggybacked on the old implementation.
svn path=/trunk/; revision=23677
- Make generated handlers have a proper .func symbol for symbol data.
- Make IDT writable, the page shouldn't be read-only.
- Change some symbol names.
svn path=/trunk/; revision=23676
- Fix function definitions of HalQueryRealTimeClock, HalGetEnvironmentVariable. They were defined in the NDK in one way, but implemented another way, and since the HAL didn't include its own NDK file, the compiler didn't realize this. Calls of these functions might've experienced serious problems.
- Also fix HalHandleNmi and HalInitSystem definitions.
- Add stub code to actually setup the Clock Interrupt.
svn path=/trunk/; revision=23670
Also split out the roothub driver and device manager from hub.c (which was over 4500 SLOC)
- Enable PCH usage
- Reduced a few warnings
svn path=/trunk/; revision=23668
- Fix bugs in INT_PROLOG.
- Fix an important bug in TRAP_EPILOG which was causing register restoration to happen at all times (such as in Kei386EoiHelper/KiServiceExit2 when it shouldn't happen).
- Add DRx restoration from trap frame, if DR7 is set.
- Added and fixed some debugging assertions in TRAP_EPILOG.
svn path=/trunk/; revision=23661
- Add a test case for a multisz value which has zero-sized strings
- Add a test case for query registry delete
All tests are known to be passed on Windows XP SP2
svn path=/trunk/; revision=23650
- Generate actual Unexpected Interrupt entries in the IDT for INTs > 0x30 (basically IRQs).
- Generated all 208 Unexpected Interrupt Handlers for all INTs (using a single macro line) and implement a "Tail" function to handle them instead of bugchecking like before (they're now sent to HAL properly).
- Implement INT_PROLOG macro to create KTRAP_FRAME for interrupts (similar to traps).
- Part 1 of major changes to come....
svn path=/trunk/; revision=23645
- Move hardcoded strings into a resource file ready for translation
- Query registry data for friendly names, etc. We can remove some of this when the XP/vista API, GetAdaptersAddresses is implemented.
- tested in Windows, untested in ROS...
svn path=/trunk/; revision=23644
- Removed all the code in userptrap.c and removed KiKernelTrapHandler.
- Set Traps 11, 12, 16 and 17 as unhandled for now(Segment fault, stack fault, fpu fault and alignment fault). We weren't really "handling" them in the past either.
- I probably need to implement GPF handler for non-V86 mode to support Lazy segment loading and fix the vmware syscall bug that has been haunting me for two years.
svn path=/trunk/; revision=23636
* font.c/layout.c/console.c/options.c: add UNREFERENCED_PARAMETER macros, fix sharing of global struct
* console.def: fix building with MSVC
svn path=/trunk/; revision=23629
- Handle FPU/SSE saving in the CONTEXT<->KTRAP_FRAME routines directly, and using KiFlushNPXState assembly function.
- Implement a naive Trap 7 (FPU Fault) handler in assembly that properly does most of the work required to handle an FPU fault. Not yet complete however since it almost ignores user-mode faults (just like trunk). FPU isn't done in ctx switching yet.
- Remove all the other .c code that dealt with FPU stuff and had become incompatible since more then a year ago.
svn path=/trunk/; revision=23628
modified porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
And from the chrysalis out came... the caterpillar. MissTosca stops just short of being demonstrable. I'll keep working on it, but the Google Summer of Code is, for all intent and purposes, over. The matter is in the hands of my judges now. Wish me luck
modified rdesktop/iso.c
modified rdesktop/proto.h
modified rdesktop/rdesktop.h
modified rdesktop/rdp.c
Very minor fixes
modified rdesktop/tcp.c
Use asynchronous I/O and alertable waits to allow aborting the protocol thread ASAP
svn path=/trunk/; revision=23627
- Detect if kernel APCs are pending and request APC_LEVEL software interrupt from HAL if they are, returning with the right apc status.
- Also update INT21 VDM Descriptor handler when updating LDT descriptor.
svn path=/trunk/; revision=23624
- Detect and crash if context switch is done inside a DPC.
- Switch kernel stack a bit earlier
- Don't switch address space if we're still in the same process, and fix some duplicated code that was mixed up together.
- Move LDT setup out-of-line.
svn path=/trunk/; revision=23621
1. Bitstream Vera Sans to MS Sans Serif
2. Bitstream Vera Sans Mono to Courier New
This fixed some problem that bug 1191 mentor but not all.
I tested this change in ReactOS
1. using BootCD install whole process and run some ros own program
and tested cmd. No problem was found with this change.
svn path=/trunk/; revision=23614
modified porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
modified porting-tools/rdesktop-core-tester/stdafx.h
Support acting as both the stand-alone DLL (mstscax.dll) and the redistributable (msrdp.ocx)
Wrap the non-standard "sealed" keyword in a macro
Almost all state now correctly passed between rdesktop-core and the ActiveX
Some debugging aids
Prepared a functional DllMain
Pulled in Common Controls, needed for the full-screen titlebar
modified rdesktop/rdesktop.h
modified rdesktop/rdp.c
modified rdesktop/secure.c
Minor clean-up
svn path=/trunk/; revision=23613
- When compiled with gcc we assume that CPU can't do TSC (the function will be rewritten anyway since it's weird to use inline assembly in a driver)
- Changed to the correct .rc file, removed duplicate one (ehci.rc)
- usbdriver now compiles with reactos build system
svn path=/trunk/; revision=23610
1. No plans to support NT 3.x hives (thus no need for OldCell / NewCell)
2. Cmlib is a bit architecturally different from NT's implementation:
"... i don't need the UserData, because that is what i return ... i don't consider it part of the header anymore"
svn path=/trunk/; revision=23605
It supports UHCI/EHCI controllers.
Don't expect it to compile with ReactOS build environment. I intend to do some work on it, and use this place to keep my changes, before it's suitable for ReactOS.
"I would like to see it useful for ReactOS" (c) woodhead
svn path=/trunk/; revision=23602
ws2_32
- All exported functions are fully documented on MSDN
- All internal functions are clearly written with no signs of reversing
- Reformat all code to ReactOS standard
svn path=/trunk/; revision=23580
- Fix IntMapDesktopView() to actually store the created mapping in a global list of mappings. Previously, any operation to map an address from such heap resulted in a NULL.
As a side-effect, "user32_winetest.exe class" went from 31 to 27 failures.
svn path=/trunk/; revision=23571
- Change alloca() to RtlAllocateHeap() and add missing freeing of the allocated space
- Fix incorrect FileNameLength param in call to NtSetInformationFile()
- Add support for MOVEFILE_REPLACE_EXISTING flag
svn path=/trunk/; revision=23570
Guard against NULL pointers in certain methods
Append a newline to debug messages
Support a couple forgotten VARIANT types
Corrected implementations of IUnknown::QueryInterface
Better debug output for IDispatch::GetIDsOfNames and IDispatch::Invoke
Debug output for IQuickActivate
modified porting-tools/rdesktop-core-tester/activex.cpp
Way too many changes to list. Basically, I wrote an ActiveX control without any help from third party libraries such as ATL. It was educative, but not terribly fun. Very nearly there
All properties of the control are now supported, aligned to the behavior of the original control, version 5.2. Parameter validation and range enforcement eveeywhere
modified porting-tools/rdesktop-core-tester/mstsclib.idl
Reindented
Removed explicit __stdcall convention
Added alternate interface ids/class ids for compatibility with the msrdp.ocx redistributable. Code does not support this yet
modified porting-tools/rdesktop-core-tester/mstsclib.rc
added porting-tools/rdesktop-core-tester/mstsclib_redist.idl
added porting-tools/rdesktop-core-tester/mstsclib_redist.rc
modified porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
added porting-tools/rdesktop-core-tester/typelib.rh
Support two type libraries for compatibility with the msrdp.ocx redistributable. Code does not support this yet
modified porting-tools/rdesktop-core-tester/mstsclib_h.h
modified porting-tools/rdesktop-core-tester/mstsclib_i.c
added porting-tools/rdesktop-core-tester/mstsclib_redist_h.h
added porting-tools/rdesktop-core-tester/mstsclib_redist_i.c
Auto-generated files, for the poor souls without MIDL
modified porting-tools/rdesktop-core-tester/stdafx.h
Added missing OLE header
Corrected typo
svn path=/trunk/; revision=23564
The code cause a regress. and the old code is 100% correct. I spoken with janderwald about it
*argc can be 0 when it call to CommandLineToArgv and he did not think of it. and agrument
agrc is always 1, but that can not be take into accunt. for u do not paraser how many argc it exists
you parser the current argv, like is it 0, is it 1 so on.
svn path=/trunk/; revision=23554
- So now GetClassInfoA/W implementations are correct and all hacks are moved to GetClassInfoExA/W. This doesn't fix Abiword, but might fix direct calls to GetClassInfoExA/W which might fail due to not set "cbSize" member of WNDCLASS struct.
I marked this as HACKHACK for further investigation and removal.
svn path=/trunk/; revision=23545
This code should replace the existing one in win32k/csrss, but is not activated (yet) due to some bugs:
- Calling SetWindowsHookEx with WH_KEYBOARD_LL gives a BSOD when pressing a key
- Time field in PKBDLLHOOKSTRUCT/PMSLLHOOKSTRUCT should be in milliseconds
- Screen saver parameters can't be retrieved with SystemParametersInfoW
- Probably others...
Plus a few less important ones:
- When sending a message with HWND_BROADCAST, the invisible SAS window doesn't get the message
- When calling (NtUser)SystemParametersInfo, WM_SETTINGSCHANGE message is not sent
- desk.cpl doesn't save (some) screensaver parameters to registry
svn path=/trunk/; revision=23540
- The MOVEFILE_DELAY_UNTIL_REBOOT flag is incorrect processed in the MoveFileWithProgressW function.
- The add_boot_rename_entry function contains too many bugs, it crashes when
deleting operation is performed, it does not save old entry in registry, etc...
Fixes are based on the testing application located in reactos/base/application/testsets/smss/movefile
svn path=/trunk/; revision=23537
Just an example, comctl32.dll doesn't crash anymore in LISTVIEW_Callback().
Thanks to Dmitriy Philippov (aka Shedon) for encountering the comctl32 bug and investigating it!
svn path=/trunk/; revision=23524
- Change UserMode -> KernelMode in ObReferenceObject*() calls, because that calls failed
- Remove Cm-specific hack from Ob
"advapi32_winetest.exe registry" shows 0 failures on the first run and 2 failures on further runs.
I suppose there might be a leakage in the CM. To be investigated further (or wait till complete Cm rewrite in October).
svn path=/trunk/; revision=23508
- Respectively fix all occurences of DbgPrint()'s wrong prototypes throughout the tree
- HACKHACK: Change KeNumberProcessors definition in "else" branch of NTDDI_VERSION #if. I'm not sure how to properly fix this and for now I marked this place. Probably NTDDI_VERSION should be set correctly in ntoskrnl and other modules which use this variable.
svn path=/trunk/; revision=23506
Configuration Manager
Cm part of the kernel was developed from scratch for a long time ago, and based only on legally clean information sources. After going through the code, it doesn't have any signs of questionable origin.
Authorship information will be added during formatting of the code.
svn path=/trunk/; revision=23491
- mangledDDK had wrong prototypes of DbgPrint/Ex.
- PSEH too.
- Fixed ntoskrnl headers to build with Windows 2003 header definitions. Make handle.c force usage of Windows 2000 header definitions, because the handle code is Win2K.
- mangledDDK had wrong KeNumberProcessors definition.
svn path=/trunk/; revision=23486
2. Adding rsrc.rc so u can open rc file in vs
3. fixing sublang id for almost all languages so it can be open in vs
ToDO
each langues have diffent menu and dialog for some have update En.rc and not the rest of the languages file
Never only update En.rc update all other languages file same time so we have same desgin and option and dialog
box on each languages.
svn path=/trunk/; revision=23479
2. Adding rsrc.rc so u can open rc file in vs
3. Fixing Ru and Hu sublang id. so they showing in vs instead for unkown langues.
svn path=/trunk/; revision=23474
Autologon should only be done once (when starting the computer, not after the user has logged out)
Remove the status message dialog only in GUI
svn path=/trunk/; revision=23447
In order to get unattended setup working:
1. Copy unattend.inf.sample to unattend.inf, adjust as needed
2. Uncomment the line in bootdata.rbuild to include it into bootcd
svn path=/trunk/; revision=23446
- CreateWindowsEx: Patch based on janderwald patch.
1. Reading and follow wine source (user/win.c & winex11.drv/window.c), I noticed that cs->hwndParent is unmodified when passed to the children via WM_NC/CREATE.
2. Reordered the "fine the parent" code, based on wine. I've tested this change for last two weeks.
svn path=/trunk/; revision=23428
- Register CTRL+ALT+DELETE notification
- Better session loop between all GINA dialogs
- Display a dialog box if GINA DLL cannot be loaded
GINA:
- Add an graphical and text interface to enter username/password
- Take care of autologon parameters in registry
svn path=/trunk/; revision=23424
- note, it still has the swprintf warnings which I'll fix tomorrow (if someone reminds me ;) )
- MSI Wine test is now in trunk, if anyone has chance to do a before and after test ...
svn path=/trunk/; revision=23414
- Dialog.c Partial sync to wine.
- Add WinPosActivateOtherWindow to winpos.c, activate another window when the dialog gets hidden in EndDialog.
- Misc fixes and changes.
svn path=/trunk/; revision=23409
- Fix IRP Cancellation and enable all calls to IopQueueIrpToThread and IopUnqueueIrpFromThread. This seems to work properly now and the kernel fun entry for it has been removed. All remaining Io TODOs are now low priority.
svn path=/trunk/; revision=23354
Remember that you need to recreate binary hives, your old reactos registry isn't compatible (due to slight difference in the on-disk structure).
svn path=/trunk/; revision=23348
- Use cmlib in Freeldr and Setupldr (patch by Filip Navara)
- Fix some HIVE definition and checksum calculation in mkhive and ntoskrnl (so they btoh create a compatible registry)
TODO: Apply 2nd half of the patch, which makes ntoskrnl using cmlib.
This commit is dedicated to Filip Navara's constant promises to commit cmlib and to recent small Arty vs. Alex debate on irc :)
svn path=/trunk/; revision=23332
When it's turned off (YDEBUG is not defined), it doesn't provide any slow-down to the system.
DefWindowProc() functions are slightly refactored to have one exit point instead of numerous returns in a switch-case statement.
FIXME: maybe DPRINTs will be changed to DbgPrint because it's pointless to display path to the spy.c file everytime.
svn path=/trunk/; revision=23330
- Fix bootcd by fixing some bugs in CDFS (same as in VFAT).
- Fix Broken Installers and other I/O programs that couldn't, for example, create temporary directories.
- Fix Firefox installers and other apps crashing due to a bug in NtSetInformationFile.
- Fix File Objects being referenced twice resulting in IRP_MJ_CLOSE/CLEANUP never being sent and several memory leaks.
- Fix File Object Lock being incorrectly created and then misused by mm/section code.
- Fix creation of File Object before setting up the IRP, to properly cleanup during failures.
- Add failure code if ObCreateObject fails.
svn path=/trunk/; revision=23328
- Find out why 7zip can't create temporary folders due to deferred I/O
completion in IopParseDevice when creating a new File Object..
Thanks to encoded.
svn path=/trunk/; revision=23326
- Fix broken drivers: i8042 and videoprt. NDIS might be broken too, but downloading worked fine for me, so it's not hitting the check in IopParseDevice.
svn path=/trunk/; revision=23325
- Generate KUSER_SHARED_DATA cookie if it doesn't already exist when a user-mode thread runs.
- Remove the last Ps entry from kernel fun.
svn path=/trunk/; revision=23323
patch from LMH1 : Bug#: 1682 : Norwegian translation
note : sm are not include in building process, the source code have got begin to be rotten, it
can not longer be build. shall we delete it ? or shall some look into and make it
work again, I am not voluntary todo either of it. some else for todo that.
svn path=/trunk/; revision=23314
note : sm are not include in building process, the source code have got begin to be rotten, it
can not longer be build. shall we delete it ? or shall some look into and make it
work again, I am not voluntary todo either of it. some else for todo that.
svn path=/trunk/; revision=23313
It's still not fully XP-compatible, because it should return the entire name with the \Device\HardDisk0 path, but that is easily fixable by modifying the OB Type info for the device object to also use IopQueryNameFile (TODO).
- Update kernel fun with specifics about Cc-branch dereference bug and re-prioritize an I/O Bug.
svn path=/trunk/; revision=23305
- Remove #ifed out code in PspCreateProcess which was attempting to create the name structure. Add code to MmCreateProcessAddressSpace to initialize the audit name after the 16-byte name.
- Implement some helper APIs for better code refactoring.
- TODO: Get rid of PspGetImagePath and wrap around SeLocateProcessImageName instead.
svn path=/trunk/; revision=23303
* Return the file name length even if the buffer is too small, that's the whole point of the "Query length before comitting a buffer" principle.
* FSDs are not supposed to null-terminate the buffer, nor expect the caller to send a buffer large enough for null-termination.
* Added a hack in IopQueryFile to handle another VFAT bug which makes it return the total number of bytes written in IoStatus.Information instead of the total number of bytes *left untouched*.There are probably many other broken things due to this.
- Fix some length calculation bugs in IopQueryFile.
svn path=/trunk/; revision=23302
- As a result, processes can die again, and also be killed by Task Manager.
- And finally, "Exit" in cmd.exe as well as pressing the "x" button work.
svn path=/trunk/; revision=23292
we need rewrite Createsurface and Implement AttahedSurface
Thanks to wine code and some wine devloper to expain how it works
I got one more directx sdk sample working parlty with this change.
svn path=/trunk/; revision=23287
we need rewrite Createsurface and Implement AttahedSurface
Thanks to wine code and some wine devloper to expain how it works
svn path=/trunk/; revision=23283
- Registry keys are created if they don't exist
- "Custom colors" are stored in the registry too now (tested to work under Windows XP)
- Fixed a check during adding of a new wallpaper to the list. Now it will actually deny addition of the same wallpaper image more than once
- Some TAB -> Spaces fixes
svn path=/trunk/; revision=23271
1. found why createsurface did stop working, fixed
2. Split some surface member betwin gbl and lcl struct
3. Reimplement the revert I did, implement Revision: 23263 and Revision: 23262 again
4. Revert new createsurface code and setdisplay mode code that was intrudes
5. Alot other changes as well.
6. Todo Need remove the old code for HAL and HEL split.
7. move Our ddraw working again with apps it did work with.
8. Almost complete kill the file ddraw_hal.c some api is left be kill for at moment they are in use
svn path=/trunk/; revision=23268
2. Free some memory I forget
3. Move some surface code to startup.c for it is global info.
4. Cleaning up bit more in ddraw_main.c
Regress to createsurface for some apps that did work.
Can not be help at moment. only 1 ms dx sdk 6 directdraw apps work, and DrFred demo apps.
will fix this regress later.
svn path=/trunk/; revision=23262
- Implement PspSetCrossThreadFlag and PspClearCrossThreadFlag and use them. Thanks to Thomas for the idea.
- Fix a bug in Fast Referencing, thanks to Thomas.
svn path=/trunk/; revision=23260
2. Implement (not tested) CreatePalette it can use HAL or HEL
3. change DirectDraw_Addref and DirectDraw_Release using document dwRefCnt in DDRAWI_DIRECTDRAW_LCL
4. change Palette_Addref and Palette_Release using document dwRefCnt in DDRAWI_DDRAWPALETTE_GBL
more cleanup will follow
svn path=/trunk/; revision=23257
- Add a new tracing class/macro for reference counts and add it in kill/process/thread.c.
- Remove tracing TODO from kernel fun.
svn path=/trunk/; revision=23254
2. Implement activate of DDCREATE_HARDWAREONLY and DDCREATE_EMULATIONONLY in StartupDirectDraw
3. Fix correct return value when pUnkOuter is not NULL in CreateDraw and CreateDrawEx
Now we can activate deactive HAL or HEL and use one of thuse interface.
svn path=/trunk/; revision=23252
* this is temp hack for getting edit controls with notification windows going
* reduces user32_winetest.exe from 43 to 2 total faults
svn path=/trunk/; revision=23251
- Set the Thread Create Time on creation, I had forgotten this!
- Handle failures for thread-safety/race conditions. If the process was deleted or the thread terminated behind our back, then go through a manual un-initalization code path.
- Just like previous process patch, add code to now create an access state with SeCreateAccessStateEx.
- Handle failure of ObInsertObject.
svn path=/trunk/; revision=23249
- Call PspComputeQuantumAndPriority in PspCreateProcess to calculate process base priority and quantum for child threads.
- Add security code to calculate process's access rights to itself, as documented in WI II.
svn path=/trunk/; revision=23248
1. it is hacked, this small hack need be rewriten later.
But lest we got back same compatible we had with our ddraw.dll
in windows.
svn path=/trunk/; revision=23246
it will save us the time to write same code twice. and it is extream
easy to adding HEL api. U can look at ddk and sdk how Dd* api works
and write then proper HEL for it.
1. I have break the HEL version of set display for we need it follow DdSetMode
and no code have been rewriten for it yet.
svn path=/trunk/; revision=23245
- Implemented a bit more security calls in PspCreateProcess as seen in WI II. We now create an AccessState.
- Also write the PID in the ObjectTable.
svn path=/trunk/; revision=23236
- Implement PspWriteTebImpersonationInfo for setting the impersonation locale and impersonation status in the TEB (since User-mode needs to read this value and we don't want to NtQueryInformationThread for it each time to read the ETHERAD flag).
- Complete the implementation of PspSetPrimaryToken to recalculate a process's access rights to itself based on a new primary token.
- Reorganize ps.h header like ob.h and io.h, implement Tracing support but not the tracing itself yet.
- Get rid of some deprecated cruft.
svn path=/trunk/; revision=23233
- Added Process and Thread locking inlined functions for Ps Security functions.
- Thread safety is your friend! Huge rework of almost all the functions in ps/security.c to use the process/thread pushlocks and use interlocked operations when dealing with the ActiveImpersonationInfo thread flag.
- Added PAGED_CODE().
- Added checks for Processes with Jobs for the day that will happen.
- PsAssignImpersoonationToken with a NULL token handle means simply to revert to self.
- Don't ignore the HandleAttributes in NtOpenProcessTokenEx.
- Use SeTokenType to make sure the token passed is an impersonation token.
- Remove some fixed bugs in krnlfun.c, add more TODOs.
svn path=/trunk/; revision=23231
- PspAssignPrimaryToken was good enough for actually *assigning* the token, but when NtSetInfoProcess is called with ProcessPrimaryToken, we want to do a lot more then just randomly assigning it. Added PspSetPrimaryToken which first verifies if the token being assigned is a child token and if not, checks for SeAssignPrimaryTokenPrivilege. Also added a fixme for more code that's needed, to actually re-calculate the process's granted access towards itself. Also added thread-safety.
svn path=/trunk/; revision=23226
-Win32k and User32
- Menu.c: Made set menu items selective masking. Setting masks fixed the garbage going into the item structure. Now right justify menu bar works. There are some more cosmetic issues left to do. I have those ready next week or so. Running wine menu test fail due to exception in kernel32 IsBadStringPtrA&W isbad.c. Funny? Does PSEH work in user mode? The string test is needed. Misc fixed, some restructuring and Wine ports. Please let me know if it breaks something.
svn path=/trunk/; revision=23221
- Implement NtSuspend/ResumeProcess with PsSuspend/ResumeProcess.
- Improve the previous code to use rundown protection and be thread-safe.
svn path=/trunk/; revision=23198
- Remove a bunch of deprecated crap from ps.h
- Get rid of PsLockProcess, PsUnlockProcess. Use the process pushlock instead.
- When assigning the job, only acquiring rundown protection is enough.
- Use interlocked intrinsics for setting the ExceptionPort instead of locking the entire process object.
- Disable locking in ProcessSessionInformation for NtSetInformationProcess. The whole API seems wrong anyway, on my XP machine calling it does not change the session or change any token data. To verify later...
svn path=/trunk/; revision=23197
The graphics, mouse and keyboard are virtually done. Mouse wheel works. Still some bugs in the handling of binary raster operation codes, but less than before. Fixed polyline. Fixed all cursor issues. Fully supports text output. Fixed a resource leak where all clipping region were slowly leaked. Now closes cleanly on server disconnect
Moving on to more fun things!
Many thanks to filip & WaxDragon for the code of the previous Win32 port, it was misleading at times but very useful overall!
svn path=/trunk/; revision=23196
[AUDIT]
- Most of the functions are documented at length in Windows Internals II and at a more high-level fashion in Windows Internals 4 and were based on that information. Undocumented routines were based of the operations done in the documented ones (for example, freeing buffers that we know were allocated, etc).
svn path=/trunk/; revision=23195
- Change FAST_MUTEX PsActiveProcessMutex to KGUARDED_MUTEX.
- Define PS Flags and use them, isntead of magic numbers. (For magic mushrooms, you'll have to wait a while, these aren't implemented yet).
svn path=/trunk/; revision=23194
- Reformat and annotate parts of process.c
- Remove PsGetWin32Process, PsGetWin32Thread and implement/export the real functions PsGetCurrentProcessWin32Process, PsGetCurrentThreadWin32Thread, change win32k to use them.
- Initailize and use process rundown.
- Set corrent GrantedAccess.
- Remove an extra incorrect reference we were adding to processes.
- Implement PsIsProcessBeingDebugged.
- Make the same changes to NtOpenProcess that we did previously to NtOpenThread.
svn path=/trunk/; revision=23192
1. DD_CALLBACKS code writen by me have been move to dd.c
2. follow DD_CALLBACKS api is working as they should
NtGdiDdWaitForVerticalBlank, NtGdiDdCanCreateSurface, NtGdiDdGetScanLine
3. follow api does not working as it should, is it gdi32 problem or win32k problem for it ?
NtGdiDdCreateSurface
4. Start rewriten surf callback and cleanup some code
alot wrong with them.
5. start moving surface callback to ddsurf.c
svn path=/trunk/; revision=23189
- 90% of the functions in this file are 1 line functions which set or get a value from ETHREAD.
- The other 4 functions are related to User and System Thread Startup APCs, which are documented in gruesome detail and pseudo-code in Windows Internals 4 and Windows Internals II, as well as the main Thread Creation routine (PspCreateThread) which is one of the most well documented internal routines of NT. Code was developped in conjuction with WI4 and WI II.
svn path=/trunk/; revision=23180
- Organize thread.c into private/public functions properly.
- Do another pass of formatting fixes and function annotation.
- Fix a bug in PspSystemStartup.
- Properly hold object references towards a thread that's being created.
- Set the Thread->GrantedAccess value.
- Update NtOpenThread to use an Access State since these work now and Ob respects them, and also add a special hack present on NT: If the SeDEbugPrivilege is present, then the caller will get full thread access regardless of his rights.
svn path=/trunk/; revision=23179
- PspGetImagePath: internal to ROS and reads the image path pretty differently from how NT does it.
- NtQuery/Set functions: although huge in size, they are just a set of 2-10 line sub-functions which only transfer data from EPROCESS into a usermode structure or vice-versa. Fully documented in Nebett's book, and we have many test cases in the tree which show their clean implementation.
- Also, our nice automatgic buffer validation and size checks are 100% Thomas's genius and not used in NT at all.
- Thus, file is clean.
svn path=/trunk/; revision=23177
- Removed the InfoClass tables and got rid of the thread semi-infoclass table. Created a real InfoClass stub table for thread information
- Moved info class tables to a new header, ps_i.h
- Simplified syntax of info class macros so that sizeof() is done automatically for the type/alignment.
- Reformatted the tables completely to present them in a plesing, ordered, readable fashion.
- Added some missing info classes.
- Added ARRAYSIZE, RTL_NUMBER_OF(V1/V2) and used them in the info code.
- *TEMPORARILY* disable NtQuery/SetThreadInformation until next patch when it can be made to work.
svn path=/trunk/; revision=23174
- Implement setting of desktop background color. This feature is tested to work in Windows XP, however in ReactOS the setting currently does no effect.
- Improve russian translation, also check and fix layout/placement (so that russian words actually fit)
svn path=/trunk/; revision=23171
Now we manger getting gdientry2 working more or less here is a log how far I have come
I have not implement create surface for the drv yet. But it showing lest how far dxhaltest
comes. as u all can see it is not far before we getting dx hal working out of the box from
win32k and gdi32. I will thank all people that have been invlove in this, DrFred to helping debug betwin ddraw.dll gdi32.dll
with his sniffer apps, Alex for GdiEntry2, and some other help, W3seek, Filip, GvG help me to understand how our win32k how it works
and some other info. to make so far posible, it is now posible to load a graphic driver directx hal support in ros. But I do not known how well it works yet, after it is the frist public version that working so far.
ddraw.c:60) NtGdiDdCreateDirectDrawObject
ddraw.c:140) DirectDraw return handler 0x3b6001e4
ddraw.c:170) NtGdiDdQueryDirectDrawObject
ddraw.c:247) Found DirectDraw CallBack for 2D and 3D Hal
ddraw.c:170) NtGdiDdQueryDirectDrawObject
ddraw.c:247) Found DirectDraw CallBack for 2D and 3D Hal
ddraw.c:432) NtGdiDdCanCreateSurface
ddraw.c:348) NtGdiDdCreateSurface
svn path=/trunk/; revision=23160
[FORMATTING] Re-formatted file properly, ordered functions and annotated them, added proper programmer credits, etc.
- Pushlocks need to be acquired in a -critical-, not -guarded- region.
- PsDisableImpersonation should return FALSE if it was already disbled.
- Don't forget to reference the token in PsReferenceEffectiveToken.
- PsImpersonateClient should still return success if it was given no token.
- PsImperstonateClient should de-reference the token if there is already active impersonation info.
svn path=/trunk/; revision=23152
- Rename suspend.c to state.c (since it also had resume APIs) and add alert APIs from kthread to it too.
- Fix a bug in one of the alert APIs which was probing for a valid pointer even if the caller had given NULL (which is valid if the caller doesn't want the previous state returned).
svn path=/trunk/; revision=23146
- Cleanup formatting in the file and add proper credits (Thomas and Eric).
- Create internal Exp* functions for Setting/Getting the user langid, since they need to be called 2, 3 times by other code and thus shared.
- Remove some deprecated code, make the functions themselves initialize the default ID when called for the first time (which should be done by winlogon --> it seems this isn't done yet?).
- Set default locale to 0x409 instead of 0x0.
svn path=/trunk/; revision=23133
- Cleanup notify.c and fix the return value of PsSetCreateProcessNotifyRoutine.
- Create ps_x.h for inlined Ps routines and put the internal routines which call the registered callbacks in it.
svn path=/trunk/; revision=23131
- Better cleanup in case of error in ClassAddDevice
- Registering the interface is optional. Don't fail in case of error.
svn path=/trunk/; revision=23129
and sorry for the mess at moment in the file. it will be pretty large update to this file, for the patch have been lying on my
harddisk for some time.
svn path=/trunk/; revision=23126
- If the caller didn't request extended registers, don't probe the full CONTEXT structure.
- Use the proper trap frame in the kernel APC responsible for the context read/write.
- Always go through the APC instead of directly calling the Ke routine.
- Cleanup the code.
[AUDIT] - Mark file as clean. The NT APIs are stubs around the Ps APIs which simply setup an APC and stack context to an APC function that is again, merely a wrapper around the Ke function (which is not in this file).
svn path=/trunk/; revision=23124
- Implement most of NtQueryDirectoryObject. It lacks the last step of converting the absolute buffer to a relative one. I have no idea why the old code was re-implemented in a recent commit when I clearly said I would fix this tonight.
svn path=/trunk/; revision=23112
- Added very basic and skeletal NUMA code when creating a thread and process, currently only does some basic affinity checks and settings.
- Added a table and helper function (KeFindNextRightSetAffinity) for calculating affinity masks and sets.
- Split KeInitailizeThread into KeStartThread and KeInitThread, and modified Ps code to use the calls. Now added a failure case where Init fails, but we don't have to backout the entire effects of a "Start".
- Changes based on WI4 and Windows Internals II.
svn path=/trunk/; revision=23111
and sorry for the mess at moment in the file. it will be pretty large update to this file, for the patch have been lying on my
harddisk for some time.
+ remove dead code same time, almost whole alex big patch are in.
+ clean up need
+ Gdientry2 need some bugfix, but lest we got one now.
+ vbe drv framebuf interface need some more dx hal api before it functions.
svn path=/trunk/; revision=23095
and sorry for the mess at moment in the file. it will be pretty large update to this file, for the patch have been lying on my
harddisk for some time.
1. Cleanup GdiEntry1 and optimze it by alex
svn path=/trunk/; revision=23092
and sorry for the mess at moment in the file. it will be pretty large update to this file, for the patch have been lying on my
harddisk for some time.
svn path=/trunk/; revision=23091
and sorry for the mess at moment in the file. it will be pretty large update to this file, for the patch have been lying on my
harddisk for some time.
svn path=/trunk/; revision=23088
we are return alot of kernel pointer and does not setup alot stuff right, see it as start ground.
I do not want lose this start code again. it will be add in modifcate alot.
svn path=/trunk/; revision=23087
fmifs.dll
It is completely clean, because it's only stubs without any code. The only pair of coded functions are trivial "pass-through"/wrappers.
svn path=/trunk/; revision=23086
- Fixed a bug in PspUserThreadStartup which was causing us to notify the debugger for system threads or hidden threads, instead of vice-versa.
- Documented cookie generation for Thomas.
- Threads were incorrectly created with KernelMode access instead of PreviousMode.
- Initialize the thread's rundown protection and use the process's.
- Handle failure when TEB = NULL.
- The LPC Semaphore has a limit of 1, not 0x7FFF.
svn path=/trunk/; revision=23085
* simply, optimize, bugfix UserRegisterClass
* allow de-registration for system classes
* set ERROR_CLASS_DOES_NOT_EXIST in case of errors
* reduces user32_winetest.exe class errors to 31 failures
svn path=/trunk/; revision=23082
Implement : DdCanCreateSurface
Stub : DdCreateSurface
adding struct ddpfDisplay and dxHalInfo
ddpfDisplay are being filld but not use
dxHalInfo are not fill it is rater large work getting it right
svn path=/trunk/; revision=23080
- Doxyfile: not a code file at all
- ntdll.h / ntdllp.h: nothing copyrightable or reversengineerable in these files, it's a few functions prototypes only. Thus clean.
svn path=/trunk/; revision=23078
- setup.rc / lsass.rc: nothing copyrightable exists in this files
- lsass.c: some partly #if 0...#endif'ed stub. Doesn't implement any functionality, thus clean (and useless probably)
- win32err.c: a small error-printing function taken from Mark Russinovich's chkdskx source code. Contains nothing which could be thought as copyright-infringement, and the function overall is a few lines only
svn path=/trunk/; revision=23076
* set hInstance to input value given when nonzero, zero for global classes and to the actual value of class when its local
* reduces the user32_winetest.exe failures by 20 error to 44
svn path=/trunk/; revision=23075
reason : qemu and vmware 5.0 / 5.5 is afacted by same bug, it does not reading the timeout value right.
I need figout why, it is working in vmware server as it should
svn path=/trunk/; revision=23069
- NtCurrentTeb now returns the TEB instead of the KCPR, so re-enable the codepath that set the CurrentLocale and IdealProcessor in the TEB from the KTHREAD.
svn path=/trunk/; revision=23067
reason : it break second boot, at when u press on finsh buttom
with the mouse or wait until auto rest kick in,
but we still have one more regress to found for
second boot when u leave from vmware at center
point the setup will crash (when u toch the keyboard)
lest the mouse does not cause the bsod any longer.
I will inform w3seek about it when he comes online
svn path=/trunk/; revision=23066
- Set the wait block outside the loop, small optimization in case we get alerted by an APC and have to loop again.
- Set the wait block pointer in the KTHREAD structure only *after* checking if a wait is actually needed. That way, if the object is already signaled, we don't set anything in the WaitBlockList.
- Small optimization: only set the caller's WAitBlock as the next wait block if a timer wasn't specificed, else we ended up overwriting the value.
- Small optimziation: don't write the thread in the wait block, this is a wait for a signle object so this isn't needed.
svn path=/trunk/; revision=23063
- Implement two Vista APIs and export them: ObIsKernelHandle and ObDeleteObjectDeferDelete. ZOMG! Vista APIs in the kernel!
svn path=/trunk/; revision=23060
- Thanks a lot to Thomas for his brutal test application which allowed me to discover this bug and the bugs addressed in the previous commits (related to the wait list and thread scheduler list corruption).
svn path=/trunk/; revision=23057
- Initialize PRCBs' Wait Lists
- Fix a ghastly implementation fault where the the queue code was correctly removing the thread from its wait list, but where this wait list was actually connected to the _SCHEDULER_ and ended up removing a thread behind its back, causing bizarre issues and w3seek's ASSERT(State == Ready) bug. Fixed this by using the macros above and PRCB Wait List and properly inserting a waiting thread into that list, and then removing it when unblocking it or removing a queue.
svn path=/trunk/; revision=23056
- KiUnblockThread becomes KiReadyThread and doesn't perform priority modifications anymore. Also removed a large block of code that was #if 0ed out.
- KiAbortWaitThread now does priority modifications (and better then before), then calls KiReadyThread.
- Inserting a queue now *READIES A THREAD ONLY* instead of removing all its waits!
svn path=/trunk/; revision=23055
rember fullpath should be c:\reactos\system32\matrix.scr but we use matrix.scr as key path for getting this working on livecd.
But the desk.cpl apps should save full path to it. (and it does it in windows and reactos before ros cm broken it did in ros).
svn path=/trunk/; revision=23054
- Set the right wait status in KiAbortWaitThread.
- Don't ignore priority boost (increments) when aborting waits.
- When satisfying a mutant, insert if into the the head of the back-link, not the forward-link.
svn path=/trunk/; revision=23051
- Move some inlined functions from ke.h to ke_x.h
- Add checks for special apc disabled (guarded regions) in wait code.
svn path=/trunk/; revision=23050
2. Fixing so the screensaver do not restart it self.
Alesky here is the bugfix I promies, it will not longer see alot start screen msg.
One bug remains before the reg key will be adding as defualt for matrix.scr so it
can run from livecd as well
svn path=/trunk/; revision=23047
2. Adding a test apps for starting directdraw hal interface, that I have keep within few ros devs, and one wine devs,
it also being using in 2-3 diffent company same code. I known which company that using it with my written premitions
I give them on icq or email. But u need a document how to use kernel, d3d, mocomp interface,and some more how to access
them. I only show how to start dx hal the interface and using so call IDrawDraw interface. in this apps.
svn path=/trunk/; revision=23043
- Add DPC Settings (Queue Depths, Rates, etc)
- Cleanup System/Run Time Update code.
- Always increase kernel time in PRCB when inside kernel-mode code.
- Get rid of superflous interlocked commands when not needed.
- Improve detection of DPC vs non-DPC time.
- Respect and apply DPC queue/rate rules.
- Allow future use of non-fulltick time increments.
svn path=/trunk/; revision=23039
- Cleanup queue.c
- Add some ASSERTs
- Properly check for SPecialApcDisable before aborting a wait.
- Fix a bug in KiWaitQueue which was causing us not to remove the queue from the thread's wait list.
svn path=/trunk/; revision=23038
- Inline Acquiring/Leaving guarded regions and the gmutex code, instead of going through 3-4 indirect calls.
- Add a mountain of ASSERTs to detect incorrect usage/state.
- Set ->SpecialApcDisable in the Guarded Mutex.
- Fix broken KTHREAD definition. SpecialApcDisable and KernelApcDisable were incorrectly marked as USHORT instead of SHORT, which could cause severe trouble under optimized builds (At least under MSVC, since MSVC wouldn't allow a negative number in an unsigned short).
- Use GM_LOCK_BIT_V.
- Fix broken KeTryToAcquireGuardedMutex prototype.
- Fix broken KGUARDED_MUTEX typedef and add bit values.
- Fix broken Interlocked* prototypes in regards to volatileness.
svn path=/trunk/; revision=23037
- Add a branch for stopping the screensaver
- Prettify the tracing debug message (it shows now if it's a start or a stop request)
- Add a success-check for RegOpenKeyExW too
svn path=/trunk/; revision=23032
* create a CSRSS_SCREEN_BUFFER object before TuiInit/GuiInit
-> required for variable screen buffer sizes
* improve error handling in CsrCreateScreenBuffer
guiconsole.c:
* directly store WindowSize in CSRSS_CONSOLE struct
* read ScreenBufferSize value from registry and store result in CSRSS_SCREEN_BUFFER
* use default values for ScreenBufferSize / WindowSize
tuiconsole.c:
* set screenbuffer size to size of physical console size in init
svn path=/trunk/; revision=23031
* read WindowSize from registry
* create GUI_CONSOLE_DATA directly in GuiInitConsole
* wait untill GuiWindow has been created (needed for synchronization with variable window sizes)
svn path=/trunk/; revision=23028
- Implement ObReferenceEx and ObDereferenceEx.
- Split off ObpDeferObjectCompletion. A new win2003/vista API requires direct acess to being able to defer deletes.
- Fix some bugs in Process Token management and make it all properly use Fast Referencing.
- When duplicating a token in a new process, don't de-reference it before it's even created, and also insert it.
- Change ExpChangeRundown macro to fix warnings in msvc.
svn path=/trunk/; revision=23013
- Cleanup a big coding-style mess
- Add UNIMPLEMENTED macro in empty functions (otherwise we will never know if they are being called by a 3rd-party driver)
- Add proper debug headers inclusion in every file
- Add documentation headers into almost every file (except mcb.c and context.c - will be added later)
- Standardize per-file headers (some files still lack contributors names, they will be added later too)
No code change except for adding UNIMPLEMENTED macros in the code. Name.c unlocked because the implementations of functions are trivial and in fact could be derived from their names. Not documented functions will be further reviewed.
svn path=/trunk/; revision=23005
tcslen, wsclen did not check if the string was null or not.
Adding a NULL pointer check. This make user32 test working and alot other apps.
svn path=/trunk/; revision=23004
Do not try reading from NULL pointer and compare the value.
This let me come bit futer with user32_winetest.exe, but we still have some user mode crash with menu.
svn path=/trunk/; revision=23003
- Fixed and modified MenuDrawBitmapItem, MenuGetBitmapItemSize and MenuCalcItemSize. Based on Wine ports.
- Fixed menu bar drawing and maintained most callback changes (for Miranda). Implemented flat menu support. Some other misc changes. Owner drawing is still broken (Free pascal project Lazarus). Run user32_crosstest from Wine, still more rewriting is needed.
svn path=/trunk/; revision=22989
1. Time value can be changes use SPI_SETSCREENSAVETIMEOUT to set the new value, current insate value are set to 30sec
2. SPI_GETSCREENSAVETIMEOUT Get the screen saver timeout value.
3. Dectect if screen saver is running with SPI_GETSCREENSAVERRUNNING
4. Set the state of screen saver with SPI_SETSCREENSAVERRUNNING <- this is internal api see msdn
Implement for mouse
1. SPI_GETWHEELSCROLLLINES I am but unsure if win32k need more changes it seam like it is only a counter that should be set/get a value and user apps take care of the rest. Implement it for jimtabor did request it.
2. SPI_GETWHEELSCROLLCHARS I am but unsure if win32k need more changes it seam like it is only a counter that should be set/get a value and user apps take care of the rest.
svn path=/trunk/; revision=22985
modified rdesktop/constants.h
modified rdesktop/types.h
Commented out definitions of standard Windows constants and types
modified rdesktop/licence.c
modified rdesktop/secure.c
TODO annotations
modified rdesktop/proto.h
Commented out prototypes for rdpdr, rdpsnd, cliprdr, etc. functions that will be rewritten *and* use a new API
modified rdesktop/rdesktop.h
modified rdesktop/rdp.c
modified rdesktop/tcp.c
Big big mess, many temporary modifications to have a working prototype ASAP
added MissTosca.sln
added mstsc/mstsc.cpp
added mstsc/mstsc.vcproj
added mstsc/stdafx.cpp
added mstsc/stdafx.h
added mstscax/mstscax.cpp
added mstscax/mstscax.vcproj
added mstscax/stdafx.cpp
added mstscax/stdafx.h
Created skeleton project files for Visual C++ 2005
added rdesktop/rdesktop-core.vcproj
Isolated the bare core of rdesktop. Required little to no porting
added porting-tools/rdesktop-core-tester
added porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
added porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
added porting-tools/rdesktop-core-tester/stdafx.cpp
added porting-tools/rdesktop-core-tester/stdafx.h
Tester application. The screenshots were made with this. Partial (buggy!) implementation of GUI and keyboard input
svn path=/trunk/; revision=22983
- Architectural changes to match information in Windows Internals 4 and other documented sources of information (Windows Internals II by Probert). Code should match Win2003 layout.
- Handle almost any possible process/thread sub structure and add its cleanup code stubs, so that when we actually implement them, we won't forget to clean them up in the process code.
- Add interlocked usage of process and thread flags in order to make everything more thread-safe.
- Better handle cases where threads die instantly, race conditions, and other weird issues.
- Better handle process termination and thread termination.
- Implement NtCreateProcessEx and update PspCreateProcess/NtCreateProcess.
- Improve cleanup of process object in PspProcessDelete.
- Optimize some things like User Thread startup.
- Add some extra asserts, paged_code checks and also user-mode security check.
- Implement helper API PsGetNextProcessThread
- Optimize thread reaper (thanks Filip)
- Do proper referencing/dereferencing of thread/processes (thanks Thomas)
- Document FIXMEs needed for Ps code to be up to standards and complete.
svn path=/trunk/; revision=22976
Reason : CRT/RTL/STRING are being static linkend into evething and cause CSR crash when it booting to GUI
and some of the changes are wrong in rbuild as well. Do not hardcode example mingw32-ld name
keep it to ld for it is the make file detmer the name of ld when it is building. and some other
changes are also question about. It also fix so we can build ReactOS with MinGW 3.4.2 again and
BinUtils 2.15.91, it was also other problem with this changes.
svn path=/trunk/; revision=22973
- Fix IoAllocateDriverObjectExtension and IoGetDriverObjectExtension:
- They were using the wrong structure (a made up one).
- They were saving the extension where the Driver Object's base address should be.
- Memory leaks.
- Sometimes holding the lock too long.
- Created EXTENDED_DRIVER_OBJECT structure in NDK, since parts of the documented one are hidden (much like EXTENDED_DEVICE_OBJECT).
- Fixed IopDeleteDriver to free what it should.
- Fixed IoCreateDriver to handle more failure cases.
svn path=/trunk/; revision=22962
- Coding style applied (make file's header proper, add headers for every function)
- All functions except one are documented in MSDN
- One undocumented function will undergo further examination and documentation
svn path=/trunk/; revision=22948
change everthing to dejavu fonts. Rember console apps can not use dejavu font for it will regress.
that is the reasson we keep old bitstream fonts for now. and another problem is bitstream font is
hardcode into console apps (example cmd), it have been hard code in csrss and maybe some more place.
svn path=/trunk/; revision=22947
I was force fixing this bug for getting dejavu font to be install on livecd
I was hopping some else have fixing this long standing bug.
svn path=/trunk/; revision=22946
- Modify IopParseDevice to detect when OPEN_PACKET optimizations are in use (query or deletion (deletion not yet implemented)) and have some codepaths be slightly different and use DUMMY_FILE_OBJECT.
- Implement QueryOnly case in IopParseDevice to handle attribute queries.
- Add a missing dereference, and remove an extra DO reference.
svn path=/trunk/; revision=22928
there are a few issues with both the resource files and the code.
I suggest working on intl_new however as intl is soon to be deleted.
svn path=/trunk/; revision=22912
1. Fixing allot better sync for the timeout counter
2. Change the hard code value to 30 sec instead for 15 sec
3. The start of screen saver are 30.0 sec to 30.9 sec for
we can not start on exactly on the x.0 sec but betwin
svn path=/trunk/; revision=22900
1. Clean up the code
2. Adding FIXME text
3. Fixing a bug cause screen saver was autostart whole time after timeout accord.
svn path=/trunk/; revision=22894
- Document call to ObOpenObjectByName
- Properly handle and document all possible cases (parse failures vs I/o failures vs both), and handle dereferencing and status codes nicely.
- Detect if the FSD is reparsing, which we don't support now (we'll bugcheck for now, so we can quickly detect this later instead of handling it wrong).
svn path=/trunk/; revision=22882
*no changes since 0.9.11 ...
Sync to Wine-0_9_11:
Byeong-Sik Jeon <wjsqudtlr@gmail.com>
- commdlg: Updated Korean translation.
Ulrich Czekalla <ulrich@codeweavers.com>
- commdlg: Properly set and retrieve colour value from combo box .
Mike McCormack <mike@codeweavers.com>
- commdlg: Malformed filters are still added to the filter combo box.
Sync to Wine-0_9_10:
Mike McCormack <mike@codeweavers.com>
- comdlg32: Use a property for the color dialog's information.
- comdlg32: Remove the property when destroy the dialog box.
Sync to Wine-0_9_8:
Vitaliy Margolen <wine-patch@kievinfo.com>
- commdlg: Add font sizes 6 and 7 to font select dialog.
Henning Gerhardt <henning.gerhardt@web.de>
- commdlg: Update German resource.
Petr Tesarik <hat@tesarici.cz>
- commdlg: Czech language resources encoding fix.
Dmitry Timoshkov <dmitry@codeweavers.com>
- Add support for CDM_HIDECONTROL message in the file open dialog.
Andrey Turkin <pancha@mail.nnov.ru>
- commdlg: IShellBrowser sets IShellView window's control id to 5002.
Fatih Ac <fasici@linux-sevenler.org>
- commdlg: Turkish translation.
Sync to Wine-0_9_7:
Michael Kaufmann <hallo@michael-kaufmann.ch>
- commdlg: File open dialog: Use the specified instance handle for
custom dialog templates.
Sync to Wine-0_9_6:
YunSong Hwang <hys545@dreamwiz.com>
- commdlg: Updated Korean translation.
Ulrich Czekalla <ulrich@codeweavers.com>
- commdlg: If provided use and update hDevMode in the PAGESETUPDLG struct.
Update the dmDefaultSourcea return value inside hDevMode.
Stefan Br¹ns <stefan.bruens@rwth-aachen.de>
- commdlg: Makes return value of FILEDLG95_SendFileOK dependent of
return value, not of DWL_MSGRESULT.
Sync to Wine-0_9_5:
Dan Kegel <dank@kegel.com>
- commdlg: Let the color picker respond properly to keystrokes.
svn path=/trunk/; revision=22876
- Fixed a bug in TCP/IP that was making it complete IRP_MJ_CREATE with STATUS_SUCCESS yet with the IRP marked as pending.
svn path=/trunk/; revision=22859
- Add some stubs during my attempt to load Google Talk (forget about it!). However WINE implements all these functions entirely so maybe we should just sync with them?
svn path=/trunk/; revision=22858
- Start with empty object
- Set the type/size in the object header
- Don't rudely ignore the following flags: FILE_WRITE_THROUGH, FILE_SEQUENTIAL_ONLY, FILE_RANDOM_ACCESS, OBJ_CASE_INSENSITIVE; they are not merely decorative.
- Set correct IRP flags for IRP_CREATE_OPERATION so that the I/O manager knows how to deal with the request (also set SYNCH_API flag).
- Deferred mode not yet enabled.
- Simplify the way we set the parameters for pipes/mailslots/files.
- Don't close the handle of an invalid FO.
svn path=/trunk/; revision=22857
- Added support for device objects as well in IopSecurityFile, since the code is similar. Also fixed sync semantics for file objects, and made other little small fixes.
svn path=/trunk/; revision=22851
Alexandre Julliard <julliard@winehq.org>
- comctl32: Don't use sizeof in traces to avoid printf format warnings.
Dmitry Timoshkov <dmitry@codeweavers.com>
- comctl32: Return FALSE in the WM_CLOSE PROPSHEET_DialogProc handler.
Mike McCormack <mike@codeweavers.com>
- comctl32: Use the listview's background colour when drawing with imagelist.
- comctl32: Arrange the listview after deleting all items so we will place iconsat the top again.
svn path=/trunk/; revision=22849
* remove global structure g_ConsoleInfo
* implemented reading/writing of options dialog settings
* added apply dialog
* thnx to w3seek for help
svn path=/trunk/; revision=22820
- During testing I found one application not working with the new mdi support changes. VIDE from the Vgui C++ project was creating a bugcheck trying to access kernel space. Just for precautions I moved the kernel code back into user32. After testing the application, it worked fine. So, I'm reordering the execution of CreateWindowEx. Keeping a small part in kernel space and the rest in user. This has caused code duplication in user32, but I want to set this straight first. I will sort out the code duplication later. Sorry for the mess.
svn path=/trunk/; revision=22818
This patch implements the function TreeResetNamedSecurityInfoA. However, as it's not even implemented in windows, the code is disabled by default.
svn path=/trunk/; revision=22812
Commit w3seek patch from bug 1609 : file attachment (id=910)
The attached patch implements QueueUserWorkItem()/RtlQueueWorkItem() (lacks
optimizations!!!). WINE's latest rpcrt4 relies on it.
1. Implement QueueUserWorkItem()/RtlQueueWorkItem() :
2. A slightly optimized
3. Supports WT_TRANSFER_IMPERSONATION
4. Slightly improved handling of growing/shrinking the pool by assuming work items with WT_EXECUTELONGFUNCTION run longer
5. Fixes a hack that made a worker thread always terminate if there were at least one more thread available
svn path=/trunk/; revision=22808
Commit w3seek patch from bug 1609 : file attachment (id=910)
The attached patch implements QueueUserWorkItem()/RtlQueueWorkItem() (lacks
optimizations!!!). WINE's latest rpcrt4 relies on it.
1. Implement QueueUserWorkItem()/RtlQueueWorkItem() :
2. A slightly optimized
3. Supports WT_TRANSFER_IMPERSONATION
4. Slightly improved handling of growing/shrinking the pool by assuming work items with WT_EXECUTELONGFUNCTION run longer
5. Fixes a hack that made a worker thread always terminate if there were at least one more thread available
svn path=/trunk/; revision=22807
Commit w3seek patch from bug 1609 : file attachment (id=910)
The attached patch implements QueueUserWorkItem()/RtlQueueWorkItem() (lacks
optimizations!!!). WINE's latest rpcrt4 relies on it.
1. Implement QueueUserWorkItem()/RtlQueueWorkItem() :
2. A slightly optimized
3. Supports WT_TRANSFER_IMPERSONATION
4. Slightly improved handling of growing/shrinking the pool by assuming work items with WT_EXECUTELONGFUNCTION run longer
5. Fixes a hack that made a worker thread always terminate if there were at least one more thread available
svn path=/trunk/; revision=22806
Commit w3seek patch from bug 1609 : file attachment (id=910)
The attached patch implements QueueUserWorkItem()/RtlQueueWorkItem() (lacks
optimizations!!!). WINE's latest rpcrt4 relies on it.
1. Implement QueueUserWorkItem()/RtlQueueWorkItem() :
2. A slightly optimized
3. Supports WT_TRANSFER_IMPERSONATION
4. Slightly improved handling of growing/shrinking the pool by assuming work items with WT_EXECUTELONGFUNCTION run longer
5. Fixes a hack that made a worker thread always terminate if there were at least one more thread available
svn path=/trunk/; revision=22805
Commit w3seek patch from bug 1609 : file attachment (id=910)
The attached patch implements QueueUserWorkItem()/RtlQueueWorkItem() (lacks
optimizations!!!). WINE's latest rpcrt4 relies on it.
1. Implement QueueUserWorkItem()/RtlQueueWorkItem() :
2. A slightly optimized
3. Supports WT_TRANSFER_IMPERSONATION
4. Slightly improved handling of growing/shrinking the pool by assuming work items with WT_EXECUTELONGFUNCTION run longer
5. Fixes a hack that made a worker thread always terminate if there were at least one more thread available
svn path=/trunk/; revision=22804
- Add support for WS_EX_MDICHILD. Reordered sequence for setting WindowObject and callers styles.
- Synced mdi.c from Wine. Added support function MDI_GetId help return IDMenu.
- Thanks to GreatLord for helping.
svn path=/trunk/; revision=22792
- Setup a buffer/MDL and the correct IRP flags so that that I/O manager can handle allocation, copy, free for us.
- Setup the search pattern as an auxiliary buffer so that the I/O Mgr can track that one for us as well.
- Update to use the correct sync semantics/routines.
- Use deferred I/O completion.
- Outline TODOs and workplan for iofunc.c
svn path=/trunk/; revision=22791
- Allow async i/o access on mailslots, without a byte offset.
- Fix sync semantics just like for the other functions until now.
- Fix a potential object leak in a failure case.
- Don't call IoBuildSyncronousFsdRequest since we want to build the IRP ourselves.
- Use deferred I/O as an optimization.
svn path=/trunk/; revision=22790
- Allow async i/o access on mailslots, without a byte offset.
- Fix sync semantics just like for the other functions until now.
- Fix a potential object leak in a failure case.
- Don't call IoBuildSyncronousFsdRequest since we want to build the IRP ourselves.
- Use deferred I/O as an optimization.
svn path=/trunk/; revision=22789
- Add proper sync operation.
- Set the APC Routine/Context in the IRP instead of ignoring them.
- Dereference the event on failure.
- Set the allocated buffer as AuxiliaryBuffer so the I/O manager fres it.
svn path=/trunk/; revision=22775
- Create IopFinalizeAsynchronousIo to deal with Sync APIs working on Async file objects, which need to be waited on differently and have the IOSB copied manually.
- Update NtFlushBuffersFile to new semantics (ie, usage of the new implemented functions).
svn path=/trunk/; revision=22772
- Fix them to lock the fileobject for synch operations, use IopCleanupFailedIrp, queue the IRP in the thread's list, support aborting the I/o operation through IopAbortInterruptedIrp, and properly wait for comlpetion.
svn path=/trunk/; revision=22770
- Created our new friends: IopCleanupFailedIrp, IopAbortInterruptedIrp, IopPerformSynchronousRequest, IopLockFileObject, IopUnlockFileObject, IopQueueIrpToThread, IopUpdateOperationCount.
- What does this mean: We actually queue IRPs to their thread! We actually respect I/O transfers being interrupted/alerted! We actually respect I/O operation counts! We actually LOCK FILE OBJECTS instead of randomly using them! We now support Deferred (read: MUCH faster) I/O completion.
- First function blessed: IopDeviceFsIoControl.
- Also simplified access rights check and fixedup some formatting.
svn path=/trunk/; revision=22769
- Also use FsRtlIsTotalDeviceFailure to check if the error was a fatal device error (like a CRC error) and abandon mounting in this case as well.
svn path=/trunk/; revision=22765
- Fix a bug which was causing us to incorrectly unlock the device if it was already locked by the caller isntead of by IopMountVolume.
- When loading the file system, make sure to unlock the device object if we had locked it in IopMountVolume, as well as to re-lock it afterwards. Also handle a potential race condition due to this unloacking, in which the VPB might've become mounted behind our back, and simply return success if this happened.
svn path=/trunk/; revision=22764
- Dereference the device object in case of failure.
- Add some optimizations to quickly skip invalid raw mounting.
- Add support for VPB_RAW_MOUNT.
- Allow raw mount if this is the only device on the list.
- Make the success case go through shared exit, otherwise the device wasn't getting unlocked previously.
svn path=/trunk/; revision=22763
- Reference the device object being mounted.
- If the file system being mounted is an atachee, find its base device object too, and increase the IRP Stack for each attached FSD.
- Fix IRP parameters with this new information.
svn path=/trunk/; revision=22762
- Set the right IRP flags for a mount operation.
- Don't ignore AllowRawMount flag.
- Don't waste time passing or clearing unused flags/data on the IRP/Io Stack.
svn path=/trunk/; revision=22761
- Don't mount if the VPB is alread ymoutned or being removed
- Bugcheck the system if we failed to mount the boot partition.
svn path=/trunk/; revision=22760
- Optimize by using directly the device queue instead of allocating a structure for each FS registered.
- Hack IopMountVolume to manage this new model. Improved version coming in next patch to deal with some bugs.
svn path=/trunk/; revision=22758
- Each new change request should be queued at the end of the list, not at the head.
- Also, reference the device object for each registration, since one more object is holding a pointer to it, likewise, dereference the object on deregistration.
- IopLoadFileSystem should use the base FSD in case the device object is an attachee. Also, use IoBuildDEviceIoControlRequest to minimize the IRP setup to only a couple of lines.
svn path=/trunk/; revision=22757
- IoVerifyVolume:
- Send the IRP to the base FSD, in case the current FSD is an attachee
- Set correct flags in the IRP to notify that this is a mount operation using PAGING I/O semantics.
- Don't ignore AllowRawMount parameter.
- We want to mount the File System on *FAILURE*, not on SUCCESS!
- Add reference/dereferencing to the VPB.
svn path=/trunk/; revision=22756
- Add IoCheckQuerySetvolumeInformation to util.c from vpb.c with other similar functions
- Add the actual VPB functions in vpc.c to fs.c, and rename fs.c to volume.c, because it already contained Volume APIs, and now with VPB, even more so. It also still contains the FileSystem stuff, which is of course also generically part of "volumes".
- Delete vpb.c, rename fs.c to volume.c.
svn path=/trunk/; revision=22748
- Create \wmi directory and put wmi.c, since it's the start of a large chunk of the XP+ kernel dedicated to WMI support.
- Separate \io into \iomgr and \pnpmgr
svn path=/trunk/; revision=22747
- I/O Packet APIs improvements Part 2:
- Implement IoSetStartIoAttributes
- Obey StartIo Flags set by IoSetStartIoAttributes and change Packet functions to Windows XP/2003 semantics by supporting non-cancelable packets and deferred Start I/O calling.
svn path=/trunk/; revision=22746
- I/O Packet APIs fixes Part 1:
- Clear the current IRP before parsing the Device Queues
- Respect Cancelable parameter in IoStartNextPacket(ByKey) instead of ignoring it (acquire the cancel lock when it's requested)
- Raise IRQL to DISPATCH_LEVEL in IoStartPacket instead of expecting the caller to do it and crashing. Also only use Cancel Lock if a Cancel Function was specified.
- Actually handle the case where the IRP Was cancelled right after insert and the Cancel Routine has to be called.
svn path=/trunk/; revision=22744
- Modify IoUnregisterShudownNotification to loop both lists now.
- Used the lock in IoShutdownREgisteredDevices when looping the list, and changed it to send IRP_MJ_SHUTDOWN to the attached DO. Also fixed a memory leak where the shutdown entry wasn't being freed, and optimized the function only to initialize the event once (And simply clear it each time).
- Moved IoSynchronousInvalidateDeviceRelations to PnP
svn path=/trunk/; revision=22743
- Fix some bugs in IoGetRelatedDeviceObject: We should make sure that FO_DIRECT_DEVICE_OPEN isn't set when reading from the VPB's DO, otherwise we return the FO's DO directly. Also check for attachment before trying to get any attached device.
svn path=/trunk/; revision=22741
- Implement device unloading through IopUnloadDevice and device referencing through IopReferenceDeviceObject and IopDereferenceDeviceObject, and make IoDeleteDevice and IoDetachDevice unload the device on 0 reference count. Doesn't fully work yet.
- Simplify IoGetAttachedDEvice/IoGetAttachedDeviceReference not to use an extra stack variable.
svn path=/trunk/; revision=22740
- IoAttachDevice/IoAttachDeviceByPointer: Fail with STATUS_NO_SUCH_DEVICE if we couldn't attach.
- IoAttachDEviceTodEviceStackSafe: VPBs don't get inherited.
- IoCreateDevice: Only set OBJ_PERMAMENT if the caller requested it.
- IoCreateDevice: Return a NULL Device object if we failed to create it.
- IoCreateDevice: Set alignment requirement to 0, x86 doesn't need it.
svn path=/trunk/; revision=22736
- Fix IoSetThreadHardErrorMode... it was reading the TEB instead of the PETHREAD.
- Optimize Error Logging: Use a static work item instead of allocating one each time, and don't use a spinlock for the buffer count, when we can use interlocked functions instead.
- Log Entries can have Device AND/OR Driver Objects, not just a single one. They must also be referenced/dereferenced on allocation/free.
- Rewrite IopLogWorker to properly deal with Device/Driver objects and querying their names, as well as with additional strings that the caller might be sending.
svn path=/trunk/; revision=22734
1. Do not try todo HeapFree when pointer is NULL in cleanup:
2. Remove goto cleanup code
3. Rewrote the code so it does not need goto
svn path=/trunk/; revision=22732
- Remlock's code was written by Filip Navara and is clean. My additions are based on wdm.h and only add size checks and fix two visible bugs.
- Add basic support/detection for debug I/O remove blocks (we bugcheck if we identify one though).
- Simplify IoReleaseRemoveLockAndWaitEx
- Remove locks are SYNCH events, not Notification events!
- Make sure IoConnectInterrupt returns NULL to the caller on failure.
svn path=/trunk/; revision=22724
- Use DELETE instead of SYMBOLIC_LINK_ALL_ACCESS when deleting.
- Fix formatting in timer.c
- Clear the IO_TIMER structure when creating it.
svn path=/trunk/; revision=22722
- Use only one SEH block in NtRemoveIoCompletion
- Get the completion status from the IRP, not from the Mini-Packet, if the completion came from an IRP and not a Mini-Packet.
svn path=/trunk/; revision=22721
1. Remove goto in the code, goto is slow and should be avoid.
2. reformat for adding {} around some code.
3. remove some NULL check after I did remove goto that is not longer need it.
svn path=/trunk/; revision=22718
- Rewrite I/O MDl support to use lookaside lists for allocations below 23 pages (same as on NT). This is is an incredible performance optimization because MDLs are often allocated and de-allocated during I/O operations, and using the lookaside list decreases pool fragmentation and slowdown.
- Rewrite IoBuildPartialMdl. It did not work like documented in the DDK and also had a bug documented by Microsoft as being in XP.
svn path=/trunk/; revision=22717
- Handle cases where we ran out of memory while trying to allocate the IRP
- Make sure the IRP can be re-used in IoReuseIrp.
svn path=/trunk/; revision=22707
- Bugcheck if cancelling and IRP that's already been completed.
- Bugcheck if attempting to call a driver with an IRP that's already past its maximum stack size.
- Make sure that when we free an IRP, it's not associated to a thread anymore, nor having any drivers that think it's valid.
svn path=/trunk/; revision=22706
- Don't handle IRP_MJ_POWER in IoBuildAsyncronousFsdRequest.
- Use IoAllocateMdl instead of being a cowboy and using MmCreateMdl.
- Handle failure/out-of-memory cases in IoBuildAsyncronousFsdRequest
- Free the input buffer on failure in IoBuildDeviceIoControlRequest
- Handle failure in IoBuildSyncronousFsdREquest.
svn path=/trunk/; revision=22705
- Don't read pointers from the file object or IRP before they are actually used, because in some parts of the code, these pointers could change before we actually use them.
- Get rid of the #if 1/#if 0 nonsense hbirr had added.
- Properly check for success/warning/failure cases (thanks to Filip for checking this out with me last year)
- Handle scenarios when the IRP is marked IRP_CREATE_OPERATION
- Bugcheck if IofCompleteRequest is called twice on the same IRP
- Copy the master IRP's thread to the associated IRP
- Free the Auxiliary Buffer if there is one.
- Some formatting fixes, and majorly recomment the code to make it a lot clearer and more verbose on some of the more intricate details.
- Remove some hacks which I don't think are needed anymore. If you notice regressions due to this patch let me know ASAP.
svn path=/trunk/; revision=22704
- Fix irp.c file header
- IopRemoveThreadIrp:
- Get the DeviceObject and I/O Stack *before* going back to dispatch, otherwise race conditions will happen.
- Don't complete and IRP if it's already been through two stacks.
- Remove the IRP from the thread's IRP list before re-initializing the list, or else the IRP was lost.
- Make sure we have an error log entry before writing to it.
svn path=/trunk/; revision=22703
[AUDIT] - The routines in this file mostly come from documented information in "NT File System Internals" by Rajeev Nagar which has pseudo-code for a lot of them, and other WDM Books and information.
svn path=/trunk/; revision=22702
- Fix a check in ObpFreeObject which was causing a bugcheck if the object had a handle database (fixes another kmtest failure/crash).
- Verify parameters passed to ObCreateObjectType based on behaviour seen on Windows 2003 (I might've missed some, these are the ones I tested for). This fixes 2 of the kmtest failures.
- Also make sure the object type's name doesn't have a slash in the name.
- Also make sure we don't allow creating two object types with the same name.
- Also use our own local copy of the object name and copy it.
svn path=/trunk/; revision=22696
- Don't de-reference the object when duplicating it (not sure why this was left there). This fixes all the "misbehaving object: Event" messages in the console and fixes those regressions.
- Don't reference the object when doing a lookup (not sure why this was there either). This made it impossible to kill named objects, since ObpDeleteNameCheck did a lookup before killing them, and the lookup ended up adding a reference.
- Cm still needs fixing!
svn path=/trunk/; revision=22692
- Booting/installing still works, but the system will possibly be unstable. However I'm choosing to commit this because it shows correct Ob behavior and will allow Art to fix Cm's referencing properly.
- Implement ObCheckObjectAccess and call it to perform access verification checks.
- Properly create devices, processes and controllers with an extra reference count, so that when the code closes their handle they don't die.
- Check for invalid uses of ObfDereferenceObject for our current debugging purposes.
- Add SEH to NtQueryObject.
svn path=/trunk/; revision=22685
No longer need hacks to check reference counts.
Deleted a ton of wierd code.
Fixed bug where we allocated uninitialized memory for child nodes we never
populated.
Now reference counting mirrors pointers exactly:
- Hold one reference for the parent key pointer
- Hold one reference for the list entry in the connected hive list
svn path=/trunk/; revision=22684
- Also add a REALLY nasty hack that forces OBJ_CASE_INSENSITIVE on all Registry APIs... this is needed because we seem to completely mess up case sensitivity otherwise and any user-mode caller that doesn't specify that flag will fail.
- These two fixes fix all the WINE failures for the "ntdll reg" test and should increase compatibility with some applications.
- Runtime Library Registry Wrappers Fixes and Optimizations:
- Use an array of registry paths instead of duplicating them
- Fix implenmentation of RTL_REGISTRY_HANDLE.
- Verify all Appends for failure before continuing.
- Use the strict minimum key permissions isntead of KEY_ALL_ACCESS.
- Don't use OBJ_OPENIF
- Use CAPS for \\REGISTRY\\USER (required to match a Windows quirk exposed by a WINE test)
- Use the correct length in RtlpNtQueryValueKey
- Generic cleanups, formatting and commenting.
svn path=/trunk/; revision=22682
- Also adds implementations for RtlFindMostSignificantBit , RtlFindLeastSignificantBit, RtlFindNextForwardRunClear, RtlFindClearRuns.
- The RtlBitmap* package is essential for compatibility with NTFS.SYS and other File System Drivers, but these fixes should not really improve user-mode app. compat.
svn path=/trunk/; revision=22679
- A->W converstion through static TEB buffer.
- Failure if opening without a name.
- Special warning code for objects that already exist (fixes some WINE test failures and probably makes a myriad of applications work).
- Use BasepConvertObjectAttributes when creating an object to remove code duplication.
- InitializeCrticalSectionAndSpinCount shouldn't raise an exception on failure.
- Optimize WaitForMultipleObjects to cache 8 objects on the stack instead of only 3.
- Reformat and comment all the files to ROS standards.
svn path=/trunk/; revision=22676
- Make CheckRemoteDebuggerPresent fail if no process was specified.
- Implement DebugActiveProcess, DebugActiveProcessStop, DebugBreakProcess, DebugSetProcessKillOnExit.
- Add *.vcproj to ignore lists.
svn path=/trunk/; revision=22675
- Add proper function headers, including links to publically-available documentation
- One internal function is subject to further review/audit
svn path=/trunk/; revision=22672
- Add proper function headers, including links to documentation
- All exported functions have publically-available information sources
- The only internal function is actually quite self-explanatory by its name
- Implementation is partly wrong as pointed by Gunnar
svn path=/trunk/; revision=22671
- Create the BNO Global and Local symbolic links in kernel32.
- We pass all the Ob+Native tests in ntdll_winetest om now (we fail some named pipe ones, but I have no idea why WINE calls them "Object Manager" related...)
svn path=/trunk/; revision=22652
- We also now correctly dereference the object in ObInsertObject, which should reduce one source of leaks (But there is still one). OTOH, this makes the Cm code crash at shutdown (I'll fix this ASAP, this fix is worth having atm.)
svn path=/trunk/; revision=22651
- Fix two critical bugs in ObInsertObject: We were creating a handle for the wrong object (in ObInsertObject) and we were not passing the ReferencedObject parameter to ObpCreateHandle, so that object was never being returned properly to the caller.
- ObfDereferenceObject shouldn't check for the OB_FLAG_PERMANENT flag, or else it would never be possible to kill permanent objects while in kernel mode (permanent objects only apply to user-mode handles).
svn path=/trunk/; revision=22650
- Lesson Two: What do you know! En and De.rc actually *are* our files, not James Brown's (his is sol.rc, which hasn't been altered with a ROS Header).
- Lesson Three: It is official (voted) ROS Policy that all ROS files have a header. Reverting this header violated it.
svn path=/trunk/; revision=22649
- Add imm32 dependency to user32, which is needed for edit control. This may not be a good solution, since Windows XP's user32.dll doesn't import imm32.dll. So maybe in future this should change to dynamic binding instead. But for now it works
- Update Wine-sync doc
This update reduces number of failing "user32_winetest.exe edit" tests from 44 to 43.
svn path=/trunk/; revision=22631
Most of the code (minus sound support) has been made re-entrant. All global variables have been turned into fields of a huge (huge!) structure passed around as a pointer argument (think C++ "this"). Changes have been tested in Cygwin, works perfectly
svn path=/trunk/; revision=22626
- HeapCreate should mask out NT flags and tag allocations with CLASS 1.
- Implemented HeapCreateTagsW, HeapExtend, HeapQueryTagW, HeapSummary, HeapUsage.
- Stubbed RtlUsageHeap, RtlQueryTagHeap, RtlExtendHeap, RtlCreateTagHeap.
svn path=/trunk/; revision=22583
- Main changes include using the RtlHandle package instead of duplicating an internal implementation, as well as using the RtlHeap* APIs that allow for setting User Flags/Values for associating Base Heap Flags/Handles with the actual RTL-managed block.
- Regression-tested with WINE tests and basic ROS apps.
svn path=/trunk/; revision=22579
2. move all langues rc to rsrc.rc so we can open
them in VS without genrate project file for VS
we already doing it on few other dll/exe
svn path=/trunk/; revision=22574
- Entirely rewrite Kernel32 Probe functions to um, actually probe (ported Thomas's code in the kernel and adjusted for user-mode and then checked with WINE's code). I can't begin to fathom what the previous routines were supposed to be doing.
svn path=/trunk/; revision=22520
- Reformat the files.
- Fix A->W calling.
- Simpliy WriteProcessMemory to use NtProtectVirtualMemory to query the current state.
- Call some APIs with the right DesiredAccess instead of allways sending _ALL_ACCESS. (for example, only use SECTION_MAP_READ | QUERY unless the caller wants r/w.
- Flush ITLB when writing to process memory.
svn path=/trunk/; revision=22519
timedate.cpl
For some reason, this had been unlocked but not had it's svn:needs-lock props removed.
I've been working on this for the past few days and can verify it's clean.
svn path=/trunk/; revision=22517
- Check for valid access in NtSignalAndWaitForSingleObject and don't check if ResultLength isn't NULL in NtQueryObject, because it's not optional.
- Add Thomas's name to a file where it wasn't.
- Reformatting (only code change is #2 above)
svn path=/trunk/; revision=22494
- draw clock window from resource file to fix dialog unit / pixel anomaly ;)
- Do a bit of work on the NTP client. Still untested and may change to tcp.
All untested and I'm no where near finished yet, but there are a few bug fixes in here, and I'm running short on time ;)
svn path=/trunk/; revision=22486
userinit
userinit functionality is documented in Windows Internals. Our userinit is a trimmed version of that.
I suspect Thomas would also confirm this as clean if anyone asks him ;)
svn path=/trunk/; revision=22422
devmgr
Confirmed to be clean by Thomas Weidenmueller
"devmgr is built from the ground up, probably completely differently. It only has undocumented apis which Thomas wrote test apps for, they were mostly based on guessing and corrected several times."
svn path=/trunk/; revision=22415
I keep the old intl.cpl in our tree since it contains some hacks to switch languages/locales/layouts, which will soon be gone (along with the old intl.cpl logically)
svn path=/trunk/; revision=22412
2. fixing the comping problem for hardware wiz cpl
3. Langues Nl.rc patch from i386dx see wiki how have done the translate
svn path=/trunk/; revision=22402
- Reduces user32_winetest class failures from 85 to 64
- The patch doesn't introduce obvious regressions (reactos boots, explorer works, miranda and mirc loads)
svn path=/trunk/; revision=22349
- Remove every instance of ObDereferenceObject after an ObInsertObject that I could find. This temporarily will make the object leaks even worse, but it's better to increase leaks and then fix the ref bug, then to decrease references while missing spots that forgot to reference them (you'd end up with hard to debug randomly dying objects).
svn path=/trunk/; revision=22345
- Create a new module type: exportdriver for drivers which also export files. Not supremely useful right now, but it helps us decrease compilation time of normal drivers by not running useless commands on them. Later we'll also strip out their export table. We can also make exportdrivers automatically read their .def file instead of specfiygone one.
svn path=/trunk/; revision=22339
* You do not need to look for the next space in the "command" to run on if success, that will be handled later on, and causes it to skip over to much if it done in both spots
svn path=/trunk/; revision=22334
- there are a few small differences between ROS comctl32 and Wine comctl32, in listview.c and treeview.c. I've dropped the Wine versions in for now, as they appear to be trivial. I'll insert our small alterations after testing, if required. For now, we are using 100% Wine code.
- We are failing some comctl32 Wine tests in ROS, but passing more than previous.
Sync to Wine-0_9_15:
Mikoaj Zalewski <mikolaj@zalewski.pl>
- comctl32: header: Put the new item in place of the hot divider instead of swapping.
- comctl32: header: Draw the drag image and hot dividers while dragging an item.
- comctl32: header: Fix an order-related bug in HEADER_InternalHitTest.
- comctl32: header: Implement HDM_SETHOTDIVIDER.
- comctl32: header: Implement HDM_CREATEDRAGIMAGE.
- comctl32: listview: Apply the HDS_DRAGDROP header style if needed.
- comctl32: header: Update the rects in HEADER_Refresh if needed.
- comctl32: header: Ignore out-of-range iOrder in SetItemT.
Paul Vriens <Paul.Vriens@xs4all.nl>
- comctl32/header: Check Null before accessing struct member.
Alexandre Julliard <julliard@winehq.org>
- comctl32: Dialog procedures should be called with CallWindowProc.
Sync to Wine-0_9_14:
Mikoaj Zalewski <mikolaj@zalewski.pl>
- comctl32: header: Don't try to draw items outside the clipping rect.
- comctl32: header: Make the column resizing smooth in full drag mode.
Jonathan Ernst <jonathan@ernstfamily.ch>
- Update the address of the Free Software Foundation.
- Uniformization of French main menu accelerators.
Sync to Wine-0_9_13:
Mikoaj Zalewski <mikolaj@zalewski.pl>
- comctl32: Add Str_SetPtrWtoA analogue to Str_SetPtrAtoW.
qingdoa daoo <qingdao33122@yahoo.com>
- comctl32: Change return code comparison in AVI control.
- comctl32: Fix an unsigned comparison to zero.
- comctl32: Update first visible when appropiate in the TVI_SORT case.
Saulius Krasuckas <saulius2@ar.fi.lt>
- comctl32: Increase FILEVERSION up to 5.81.4704.1100.
Sync to Wine-0_9_12:
Mike Hearn <mike@plan99.net>
- comctl32: Add OOM codepath in imagelist control.
Antonio Codazzi <f_sophia@libero.it>
- comctl32: Italian language updates.
- comctl32: Esperanto language support.
Sync to Wine-0_9_11:
Rein Klazes <wijn@wanadoo.nl>
- comctl32: Do not free LPSTR_TEXTCALLBACK tooltip texts.
James Hawkins <truiken@gmail.com>
- comctl32: A couple fixes for tab icon offsets.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- comctl32: Rebar size fix.
Mike McCormack <mike@codeweavers.com>
- comctl32: Having an MRU list without a compare function works in Windows.
Sync to Wine-0_9_10:
Andrñs Kovñcs <andras@csevego.net>
- comctl32: Added Hungarian translation.
Mike McCormack <mike@codeweavers.com>
- comctl32: Fix some gcc 4.1 warnings caused by windowsx.h macros.
Sync to Wine-0_9_9:
Vitaliy Margolen <wine-patch@kievinfo.com>
- comctl32: Remove/swap limits if min > max in MCM_SETRANGE.
We should swap min & max only when both limits are being
set. Otherwise limit that being set should invalidate other limit
(remove it).
- comctl32: Don't change month range in MCM_SETRANGE. Add tests for this.
Sync to Wine-0_9_8:
Vitaliy Margolen <wine-patch@kievinfo.com>
- comctl32: Fix invalid date/time check in MCM_SETRANGE: ignore time and fail on bad date.
Francois Gouget <fgouget@free.fr>
- Assorted spelling fixes.
Petr Tesarik <hat@tesarici.cz>
- comctl32: Czech language resources encoding fix.
Fatih Ac <fasici@linux-sevenler.org>
- comctl32: Turkish translation.
Sync to Wine-0_9_7:
Alexandre Julliard <julliard@winehq.org>
- Fixed creation of PS_ALTERNATE pens.
Sync to Wine-0_9_6:
Phil Krylov <phil@newstar.rinet.ru>
- comctl32: Call UpdateWindow() after changing statusbar text.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- comctl32: Reduce memory usage of the syslink control.
- comctl32: Some painting fixes for the syslink control.
Mike McCormack <mike@codeweavers.com>
- comctl32: Invalidate the entire progress bar any time it changes.
svn path=/trunk/; revision=22329
- Fixed symbolic link and desktop/winsta parse procedures to become NT-compatible now that ObFindObject is as well. Also fixed file/device parse routine for these changes.
- ObFindObject now supports STATUS_REPARSE_OBJECT, and has an optimized path for parsing when a root directory is given, as well as is entirely unicode_string-based.
- Cleaned up ob.h and added ob_x.h for the inlined functions.
- Implemented new Ob tracing system.
svn path=/trunk/; revision=22319
According to Fireball, this file is clean because it contains only well-known interlocked operations taking up a few asm instructions
svn path=/trunk/; revision=22307
- Get rid of a dozen of debug prints that have been straying along for a long time (some for years), most of which I must shamefully admit I am responsible for.
- Fix a critical bug subsystem bug in smss and don't hang the system 15 seconds on boot-up.
- Rebase some problematic modules (and fix wshtcpip's rbuild file) to avoid relocations on bootup and some process startup.
- Enable lsass startup in winlogon and the registry.
- Only show debug log header when actually debugging to a file.
svn path=/trunk/; revision=22305
- Simplified NtDuplicateObject to a simple stub around ObDuplicateObject, there is no need to have lengthy hacks for NtCurrentProcess/NtCurrentThread().
- Cleanup ObDuplicateObject to use normal Ob routines instead of grovelling through handle table structures and manually touching the handle count: It now calls ObpIncrementHandleCount and all the underlying operations are done on the duplicated handle. Also access state creation is done if the duplicated handle has different desired access.
svn path=/trunk/; revision=22303
- Clean-up is enabled now, so basically it's possible to run the test a number of times in win2k3, and every time it will go from scratch by creating everything. But I have a feeling that deleting object-types causes some type of corruption. To be investigated later.
svn path=/trunk/; revision=22302
- Check that mandatory arguments are provided
- Better tracing system
- Prepend private function names with SETUP_
- Use MultiByteToUnicode instead of MultiByteToUnicode + HeapAlloc
- ...
svn path=/trunk/; revision=22299
To run km regression tests under windows, one should use kmtloader.exe app
To run them on reactos, one should copy kmtest.sys to reactos\system32\drivers, and uncomment entries in hivesys.inf
svn path=/trunk/; revision=22296
- Export ObCloseHandle since it's implemented now
- Implement ObpCreateUnnamedHandle and ObpIncrementUnnamedHandleCount as optimizations for ObInsertObject with unnamed objects.
svn path=/trunk/; revision=22294
- Gut down IopCreateFile to the strict minimum so that only the critical parts remain.
- NT Compatiblity fix in ObFindObject: stop parsing if remaining path is null, this means that the parse routine is done parsing and that -this- is the final object.
svn path=/trunk/; revision=22290
- Added initial part of Ob tests which uses ObCreateObjectType, NtCreateDirectoryObject, ObCreateObject exported APIs.
svn path=/trunk/; revision=22289
- Give Files/Devices a parse routine and currently stubplement it for debugging purposes and trying to figure out a way to kill the IopCreateFile hack.
- Implement ObpChargeQuotaForObject. Using a memory breakpoint in WinDBG I've finally found where the OB_FLAG_CREATE_INFO flag gets masked out. Also attempted a very naive quota charging implementation, but it's a guess and probably wrong (but at least it does...something.)
svn path=/trunk/; revision=22287
- Get rid of ObpGetHandleCountByHandleTable and ObpGetNextHandleByProcessCount.
- Add some function comment headers.
- Move ObMakeTemporaryObject, NtMakeTemporaryObject, NtMakePermanentObject to oblife.c
- Move ObpDeleteNameCheck to obname.c
svn path=/trunk/; revision=22285
- Implement ObCloseHandle, a new XP Export
- Take old NtClose code and write it in ObpCloseHandle, which is the master function that Ntclose/ObCloseHandle share.
- Complete patch requires ExSweepHandleTable to be modified to return the Handle instead of the entry, so that sweeping can be fixed to properly destroy handles and call their OkayToClose, instead of just decrementing a count.
svn path=/trunk/; revision=22284
- Add check for optimized case for objects with no name and no security, but not implemented (ObpIncrementUnnamedHandleCount in Gl00my docs), since I need a better translation then babelfish's.
- Fix ObInsertObject to save the Security Descriptor in the Access State structure. Gl00my mentions this isn't absorbed by SeCreateAccessCheck and I just noticed that too.
- We only need to perform security checks for a new object, in ObInsertObject, not if the object already existed.
- Added proper backout+failure code in ObInsertObject if lookup failed, and also look out for mismatch/exists/collision cases (implemented using simple logic).
svn path=/trunk/; revision=22280
- Re-wrote the way ObInsertObject handles security as described in Chapters 6 and 9 of Gl00my (ie: made it use ObGetObjectSecurity and ObAssignObjectSecurity; ironically, these functions already existed/are exported and could've been used since the start instead of duplicating code).
- Fix ObpReferenceCachedSecurityDescriptor only to touch the cached entry if it actually gets a non-NULL descriptor. Also improved it to return the referenced SD, instead of requiring the caller to do it manually.
svn path=/trunk/; revision=22279
* Create the ACCESS_STATE structure much earlier.
* Actually send the access state and parse context to ObFindObject, when called from ObInsertObject (this should fix some hidden regressions, since they finally get an access state with access masks now).
* Remove some deprecated hacks.
* If inserting the handle failed, cleanup the name and remove it from the directory entry.
* Fix a memory leak because we weren't deleting the access state.
svn path=/trunk/; revision=22278
- Minor/trivial fixes to some Object Security APIs that were left in the dark:
* Use PagedPool instead of NonPagedPool memory, and also tag the allocation for debugging.
* Send needed data to the security procedure instead of NULL/0, including the Generic Mapping, and the actual Security Decriptor.
* Only un-assign the descriptor in case of failure, not all the time (the whole point of the API is to assign it!)
* Tell the caller that memory was NOT allocated if we failed to get the security descriptor.
svn path=/trunk/; revision=22277
- Because of the split, we can now directly only do an Increment when duplicating the handle, since we don't need to create a brand new one. Also, when inheriting, we can now properly do an increment as well, instead of simply manually increasing the handle count (because for each inherited handle, access checks and openprocedure should've still been called).
svn path=/trunk/; revision=22276
* Honour ObjectType passed to the function and fail if it doesn't match.
* Use table-based logic instead of process-based logic for Kernel vs User-mode handles (same change that's been done all over the place, since it requires only one dereference of the process object).
* Do the GENERIC/MAXIMUM_ALLOWED logic directly inside the ACCESS_STATE structure.
* This is where we should call the OpenProcedure (acc. to Gl00my), but this kills win32k -- investigate, #ifed out for now.
* Increase the object type's number of handles as well.
* Set the handle table entry's ObAttributes correctly; the old code seems to have been messing that up.
* Honour the AdditionalReferences parameter and do referencing bias if requested.
* Honour the ReturnedObject parameter to return the object pointer back to the caller.
* Add OBTRACEing to the function.
* If we failed because a handle couldn't be allocated, use the distinguied STATUS_INSUFFICIENT_RESOURCES error code instead of the generic STATUS_UNSCUCESFFUL, and backout all the changes we made by calling ObpDecrementHandleCount.
svn path=/trunk/; revision=22267
- Change ObpCreateHandle to use an ACCESS_STATE structure instead of DesiredAccess. This is to help moving to an updated model where creating and incrementing a handle are 2 operations, so that code can be refactored (similarly to how we now have Delete/Decrement as 2 operations).
- Fix functions that were not creating an ACCESS_STATE Structure to create one locally now, or use the one passed as a parameter, if available.
svn path=/trunk/; revision=22265
- Make ObpCreateHandle internal to Ob as it should be. Change NtCreateProcessTokenEx to use ObOpenObjectByPointer, it has no business manually trying to create a handle. Same goes for ExpLoadInitialProcess.
svn path=/trunk/; revision=22264
- Make ObpCreateHandleTable return NTSTATUS instead of VOID, so that it can return STATUS_INSUFFIENT_RESOURCES if the handle table couldn't be allocated.
svn path=/trunk/; revision=22249
- Call the OkayToClose Procedure, if one is present, to allow the object owner a chance to disallow closing this handle. I believe this is required for properly protecting Winsta/Desktop handles (instead of using the regular protection mode, since that one can be bypassed). Thomas, get to work!
svn path=/trunk/; revision=22246
- Added function documentation header for ObpDecrementHandleCount and ObpSetHandleAttributes
- Modified ObpDecrementHandleCount to accept Process and GrantedAccess paraemters since the definition for the Close Procedure Callback requires them (and we were currently sending NULL). Also send 0 for process handle count, since we don't yet parse/support per-process handle databases.
- Minor optimization: All objects have an object type, don't actually check if the object has one when decrementing a handle.
- Minor accounting fix: Decrement the total number of handles for the object type whose handle count is being decreased.
svn path=/trunk/; revision=22245
- Make sure callers of NtMakePermanentObject have SeCreatePermanentPrivilege.
- Implement ObpDeleteNameCheck as described in Gl00my's Ob Documentation (using such documentation falls under US Reverse Engineering Law - Clean rooming).
- Remove duplicated code in ObpDecrementHandleCount and ObpSetPermanentObject and have them use ObpDeleteNameCheck instead.
- Fixes thanks to using this routine:
* Name-check is now properly done.
* The keep-alive reference is now deleted when going from permanent->temporary object.
* The parent directory is now dereferenced and cleared when deleting the object.
* The security procedure is now called to delete the SD, and the name buffer is freed.
- Remove ObGetObjectHandleCount, it's not a public function.
svn path=/trunk/; revision=22244
- Added stub exports for ObCloseHandle, ObReferenceSecurityDesciptor, ObSetHandleAttributes, ObSetSecurityObjectByPointer so that someday someone can know what needs to be implemented.
- Removed ObGetObjectPointerCount. It is not exported in newer OSes and was always undocumented.
- Move ObQueryObjecctAuditingByHandle to security.c and optimized it not to attach to the system process, as well as to cache the handle table instead of dereferencing the owner process all the time.
svn path=/trunk/; revision=22232
- Bug fixes:
* Remove MAXIMUM_ALLOWED<->GENERIC_ALL conversion, I could find no mention of this in the docs.
* Remove GENERIC_ACCESS <-> RtlMapGenericMask conversion, I could find no mention of this in the docs, and this mapping is only required when creating handles, not when referencing pointers.
- Optimizations:
* Restructure code and remove code which was sometimes duplicated up to 5 times.
* Do not attach/detach from the system process, this isn't required since we're merely getting a kernel pointer from the handle netry.
* Directly increase the pointer count instead of calling ObReferenceObject, since we already have the object header in a variable.
* Cache ObpKernelHandleTable/Process->ObjectTable and use those directly instead of always de-referencing the process.
svn path=/trunk/; revision=22231
- Fix ObReferenceObjectByPointer to actually work like documented instead of doing random incorrect checks. Also add special case for Symbolic Link objects as documented by Caz Yokoyama at Microsoft.
svn path=/trunk/; revision=22230
- Re-implement NtSetInformationObject based on ExChangeHandle and using ObpSetHandleAttributes as a callback.
- Re-implement NtQueryObject's ObjectHandleInformation case to simply return the information that's already in HandleAttributes; there is no point in querying for it all over again.
- Fix NtSetInformationObject not to allow a user-mode call to modify kernel-mdoe handle attributes. Add FIXME for Inheritance permissions check.
- Fix NtQueryObject to properly return OBJ_PERMANENT and OBJ_EXCLUSIVE; these flags are not stored in Handle Attributes.
- Fix NtQueryObject not to attempt referencing the handle if the caller specified AllTypesInformation, because then a handle is not needed.
svn path=/trunk/; revision=22228
- The winetests show that the pointer never moves after calling chsize.
- Using SetEndOfFile is the best way to do this. I wrote a test case that
uses WriteFile as we did before and it did not expand the file past eof.
svn path=/trunk/; revision=22216
- Add initial Kernel-Mode regression testing framework (thanks to Filip Navara for his PnPTest, thanks to Alexandre Julliard for Wine regression testing framework). Framework consists of: the driver (kmtest.sys) and the loader (kmtloader.exe).
svn path=/trunk/; revision=22208
do not mix the doc over malloc and realloc. Thanks filip
<filip2307> malloc(0) -> valid buffer
<GreatLord> then I revert that change
<filip2307> realloc(<non-null pointer>, 0) -> NULL
<filip2307> realloc(NULL, 0) -> valid buffer
svn path=/trunk/; revision=22197
umpnpmgr
Eric Kohl and Hervé Poussineau have both confirmed their contributions are clean.
Eric also stated it was developed using information from the Samba project.
svn path=/trunk/; revision=22190
services.exe
Eric Kohl and Filip Navara have both confirmed their contributions are clean.
Public documentation, like "Inside Microsoft Windows 2000", and tests were used to implement it
svn path=/trunk/; revision=22189
- store pointer to currently selected service in info struct so we don't have to keep calling it
- rewrite create.c making it more modular. Still has some missing features.
- lots of bugfixes and small improvements
svn path=/trunk/; revision=22184
Arty can u look if this changes is right if not revert it. This changes was tested in fireforx at http://www.mirc.com/get.html and try d/l mirc. This patch do not make firefox bsod, instead it genrate a long crash log at serial debug.
svn path=/trunk/; revision=22106
So, we should get the right .inf filename in SP_DRVINFO_DETAIL_DATA.InfFileName, as it is modified if the file is copied to %SYSTEMROOT%/Inf
svn path=/trunk/; revision=22104
* Implement Per-Processor Lookaside List based allocation and de-allocation of the Object Create Information (object attributes capture) and of the object name. I counted over 4000 allocations for only 30 seconds of runtime, so this change greatly reduces pool fragmentation and increases speed. (Implementation is similar to the IRP lookaside list implementation, but inlined for speed).
* Fix some cases where we weren't freeing captured information properly. This patch should also decrease memory leaks/usage.
* Comment/formatting fixes.
svn path=/trunk/; revision=22100
* Remove superflous debug prints used a long time ago while debugging
* Set the CreatorUniqueProcess
* Align code to 80 chars
* Do a privilege check of OB_FLAG_PERMANENT is being used, and de-allocate the object if this failed.
* Send the PreviousMode to ObpAllocateObject so that it can honor it and set the OB_FLAG_KERNEL_MODE flag.
* Use OBJECT_TYPE accounting to increase TotalNumberOfObjects.
* Fail ObCreateObject in low-memory situations instead of ignoring it.
* Respect OBJECT_TYPE.TypeInfo.InvalidAttributes if an attempt is to create an object with invalid attributes is detected.
* Respect PagedPoolCharge and NonPagedPoolCharge parameters and save them in the OBJECT_CREATE_INFORMATION strucutre.
svn path=/trunk/; revision=22099
- Re-implement delayed object deletion by using an optimized Object Reaper based on OBJECT_HEADER->NextToFree. Thanks to Thomas for the algorithm.
- Refactor object deletion into two operations: Removal and de-allocation (this is needed for failure during allocation, which we don't do yet).
- BugFixes:
* After freeing an object header structure, also clear the pointer so we don't attempt it again.
* Clear the handle database if there is one
* Make sure the create info flag is set before deleting captured attributes.
* Use the allocation pool tag when de-allocating.
* Use OBJECT_TYPE accounting for tracking the numbef of objects.
* Remove the object from it's typelist if it has creator information.
* Call the security procedure to delete the security descriptor.
svn path=/trunk/; revision=22098
- Also remove RemainingPath and stop exposing it to public APIs. Move all ObInsertObject/ObOpen,ReferenceByName hacks to ObFindObject, and add a small one there. We basically trade 4 hacks for 1.
svn path=/trunk/; revision=22090
- adds the definitions of AddAccessAllowedObjectAce(),
AddAccessDeniedObjectAce() and AddAuditAccessObjectAce() to w32api
- prototypes in line with previous r22066 mods
- fixes bug 1473
svn path=/trunk/; revision=22068
Make wine test for fcvt shut up we are failing 64 of wine test in msvrt printf, but we pass all fcvt test. before we did fail 75 test in wine test of msvrt printf test. Before we did fail almost all test case for fcvt in wine test
svn path=/trunk/; revision=22062
- Isolate ObFindObject into CmFindObject for the registry routines. Because of their well-known abuse of Ob, it's better to give them their internal routine so that when/if Ob ever gets fixed to parse properly, it won't force a re-write of Cm's object routines.
svn path=/trunk/; revision=22047
- Get rid of ROS-internal WIN32_CALLOUT_DATA and use the real WIN32_CALLOUTS_FPNS type.
- Get rid of the callout.h hack.
svn path=/trunk/; revision=22044
kernel32.dll
- Remove locks from Wine code, and from simple stub or forward type of functions
- Add file headers to all files (except shared completely with Wine)
- Mark a pair of functions as shared with Wine (to be changed later when adding correct function headers)
svn path=/trunk/; revision=22043
- Thanks to this, the long-lasting ExpDesktopCreate hack is gone, and so is OB_ROS_FIND_METHOD and OB_ROS_CREATE_METHOD in win32k. Next patch can fully remove WIN32_CALLOUT_DATA and use the NT type instead.
- Add official OBJECT_ macros in obtypes.h
svn path=/trunk/; revision=22041
- Change ObFindObject's prototype to be able to accomodate these two parameters so that they can be sent to the parse routine.
svn path=/trunk/; revision=22037
- Remove directory object parsing. Directory objects don't have parse routines. Instead, inline the lookup in ObFindObject (this hasn't been optimized yet, a lot of the code is now setting a = b, c = a, c = b.
svn path=/trunk/; revision=22029
- The low-level implementation is based on information from "Undocumented Windows 2000 Internals: A Programmer's Cookbook", with some modifications done by myself to match the updated 2003 structures. This implementation was hackishly stuck into our messed up high-level object lookup implementation, which now has 4 more band-aids. Still needs a lot of work done to the upper echelons of object lookup, but at least this gets rid of ROS-internal stuff.
svn path=/trunk/; revision=22015
wait.c: These are simple wrapper routines around the KeWaitForXxx functions which reference the objects and get their pointers, just like any other Nt* function does. Some parts are non-trivial, such as: various failures: these can be tested with the wait regression test however; The usage of THREAD_WAIT_OBJECTS is documented in the DDK; The failure for WaitAll with duplicated objects is documented on MSDN; The check for SYNCHRONIZE object is documented on MSDN.
svn path=/trunk/; revision=22005
dirobj.c: The directory object implementation is also generic and currently uses different structures from NT. Object lookup/parsing is entirely different and has nothing in common with NT. The actual Nt* APIs which expose the interface are ultra-generic and trivial.
svn path=/trunk/; revision=22004
- Use OBJECT_SYMBOLIC_LINK structure as used by Windows NT (and added the structure to the NDK)
- Changed code to use the new names in the structure
- Only free the symlink's name if it has one, to avoid a bugcheck.
- Optimize parsing: if the new name is actually shorter then the target name, then don't allocate from pool, but re-use the buffer. This improves symlink parsing speed. Also fix a bug which made it depend on the incorrect implementation of NtCreateSymbolicLinkObject
- Re-align the link target maximum length in NtCreateSymbolicLinkObject if it's odd, and fail if the length is odd, smaller then the maximum, or if the maximum is zero.
- Originally allocate the symlink name in Paged Pool.
- Initialize new members of the structure.
- Fail in no-memory case, instead of continuing.
- Properly probe the LinkTarget in NtQuerySymbolicLinkObject.
- Properly handle which length is chosen for the copy and for the return in NtQuerySymbolicObject.
- Lock the symbolic link object type while querying it. Eventually many more parts of Ob need to do this kind of locking.
- SymLinkTest now only gives 2 failures.
- Fix some NDK bugs
svn path=/trunk/; revision=22000
now we do not have a any bug in fgetws, acoding wine test, I ran the test in win2k and reactos to be 100% sure it was not wine test fualt.
svn path=/trunk/; revision=21964
kernel32.dll
- Unlock files shared with Wine
- Unlock really obvious implementations
- Unlock files which are mostly stubs
- Fix programmer's name in one file
svn path=/trunk/; revision=21951
subsystems
- Unlock headers, non-source code files, art (unique to reactos)
- Unlock one-function file (pretty obvious) and add a missing programmer's name to it
- Unlock files containing stubs
svn path=/trunk/; revision=21947
Follow bugs did I notice in our modf
1. bug did not clear the st reg before it was use
2. bug did not load the reg right
3. bug did not handler all case
svn path=/trunk/; revision=21937
- Overlay MADDRES_SPACE over MM_AVL_NODE. Even though our structures are currently incompatible, they represent the same thing (The EPROCESS's Address space).
svn path=/trunk/; revision=21934
ntoskrnl/ex/error.c
- Alex Ionescu states the implementations are clean: I just re-orgznied the *harderror functions. The SEH filter is a trivial/well-known return of a single value, and __purecall is a stub.
svn path=/trunk/; revision=21932
ntoskrnl/dbgk
(according to functions_list.txt in audited branch comments by Alex Ionescu, and comments by me)
- debug.c: Clean/trivial implementation based on the object's structure. I merely create it and then initailize all its members. Other functions are stubs
- dbgkutil.c: Code is #if0'ed, and doesn't belong to Alex Ionescu. Author is unknown.
- Unified / prettified formatting, STDCALL -> NTAPI
svn path=/trunk/; revision=21931
ntoskrnl/ex
(according to functions_list.txt in audited branch comments by Alex Ionescu, and uuid.c comments by me)
- dbgctrl.c: Modified the function slightly for compatibility with some keys, still has nothing to do with Windows'
- lookas.c: File is clean. I merely rewrote existing versions based on a GPLed IBM driver I found on google, OSR documentation and some DDK sample code. The implementation is trivial and only calls caller-defined functions which are the ones doing the work.
- uuid.c: Added programmers, unified formatting, STDCALL->NTAPI change. Code doesn't look suspicious, plus stubbed functions
- win32k.c: Alex Ionescu only changed the functions to call Win32K instead of having the code in ntoskrnl. It was a cut/paste job. Aleksey Bragin: The code looks very trivial and straightforward, certainly it's written based on clean sources of information
- zone.c: Based on David Welch's code, which Alex Ionescu merely cleaned up, using clean development. He's not even sure if the Zone functions are still in Windows.
svn path=/trunk/; revision=21930
ntoskrnl/inbv
- Functions are written mostly by dwelch and chorn, are exported and don't look like containing dirty code. They have some comments too. Filip confirmes this file is clean.
- Unified formatting throughout the file
svn path=/trunk/; revision=21927
Filip Navara: Contains only two functions, one of them is unimplemented Windows function and the other one is ROS specific and doesn't even follow the NT design.
svn path=/trunk/; revision=21926
ntoskrnl/ex/init.c
- Alex Ionescu: File is clean. Most of these are ReactOS-internal and specific to our booting cycle, which is entirely incompatible with Windows and broken beyond explanation.
svn path=/trunk/; revision=21924
ntoskrnl/mm/mpw.c
- Filip Navara: mpw.c is surely clean. it's totally wrong and besides it was described in The Book (Inside Windows NT)
svn path=/trunk/; revision=21922
1) ReactOS is extremely long to parse .inf files (no .pnf files as on Windows). Remember we want to keep ReactOS fast (when running) and small (on disk).
2) nVidia already provides a .inf file for its devices. You will still need it for other devices, so why not also use it for PCI System Management and Memory Controller?
3) Windows doesn't recognize natively the nVidia chipset, even with lastest updates.
4) I only care about devices emulated by VMware/Qemu/Bochs/Virtual PC, ie virtual machines.
5) If you add PnP IDs of some nVidia devices, someone else will want to add PnP IDs for other chipsets (Via, C3, Intel, ...)
6) While you are at it, why don't you add 40Mb to recognize the same amount of devices as Windows XP?
svn path=/trunk/; revision=21905
- Add System Bus Extender service group (used by pciide driver)
- Fix tags for Boot Bus Extender services
- Remove deprecated entries for ide.sys
- Let not the hardware wizard display the "Unknown device" (hack)
svn path=/trunk/; revision=21896
base on hpoussin hack in bug 1321, I have reboot vmware lest 20-30 times and I do not longer getting bsod
I did before see lest one bsod in IntPrepareDriver after first attamt to boot to gui mode, then I need
reboot reactos two times, to get it working. Lest it take care of my problem in vmware
svn path=/trunk/; revision=21878
- minor callproc handling bug
- correctly updating the menu name pointers when moving classes to the shared
heap
Patch by w3seek.
svn path=/trunk/; revision=21867
ndis: manage global adapter list correctly
ncpa: wip code from my old tree ... it can now be used to set a static ip
addr at least. more to come
svn path=/trunk/; revision=21851
- Tditest: A TDI test application.
- Floppy: Cleanly implemented by Vizzini.
- VideoPort, VBE/VGA Miniports: Filip says these are clean, but the actual VGA driver/framebuffers need more through auditing.
svn path=/trunk/; revision=21844
- Bootvid: Uses documented/typical VGA drawing routines. Actual NT implementation is comletely incompatible and has nothing to do with real Windows, so no taint here.
- Debugout, green, diskdump: ROS-developed and non-NT drivers. Nothing they could've been tainted with, since NT doesn't have them.
- Null: Trivial/obvious implementation of a driver which does nothing.
- buslogic: Taken from VMWare source code almost entirely, minus some ROS hacks.
- Xbox Video Miniport: Cleanly developed by ros-xbox team with information from linux-xbox project.
- CSQTest: CSQ Test written by vizzini. Uses documented CSQ information and is just a test app to show how CSQ works, written by himself.
svn path=/trunk/; revision=21842
- HalUp is just a 3-line initialization stub.
- Include directory contains public DMA/APIC/SMP hardware data or internal prototypes.
svn path=/trunk/; revision=21841
- Generic HAL is just a bunch of stubs, no actual code.
- XBOX HAL was cleanly developed by the ros-XBOX team using information from linux-xbox.
svn path=/trunk/; revision=21840
kernel32.dll
- Eric Kohl states that mailslot.c and npipe.c are clean: "They implement simple interfaces to the mailslot and named pipe file system drivers and don't contain any tainted code."
svn path=/trunk/; revision=21822
- Move IRP_MJ_CREATE, IRP_MJ_CLOSE and IRP_MJ_CLEANUP to fdo.c and pdo.c
- Implement IRP_MJ_PNP / IRP_MN_QUERY_BUS_INFORMATION for PDOs
- IRP_MJ_POWER now returns STATUS_NOT_SUPPORTED instead of STATUS_SUCCESS
- Replace STDCALL by NTAPI
- Delete useless white space
=> USB keyboard and mice are working, even if they require one reboot after the installation of the USB controller
svn path=/trunk/; revision=21812
drivers/network/wshtcpip
- Authors are Casper Hornstrup and Arthur Yerks
- Implemented functions are documented in OSR, MSDN and Google finds lots of links
- Result: Clean
svn path=/trunk/; revision=21805
ntoskrnl/mm/pe.c
- KJK::Hyperion says it's clean
- There are references to original specs
- Windows PE loader is completely different
svn path=/trunk/; revision=21799
This patch makes registering the "Abiword" window class succeed. However, Abiword now crashes with a stack overflow recursively delivering the WM_NOTIFYFORMAT message to a subclassed rebar control...
svn path=/trunk/; revision=21781
System controls, such as comboboxes and listboxes are always unicode, even when
created with CreateWindowExA. Therefore, ansi messages need to be converted to
unicode and vice versa when sent to these windows. This patch fixes some(!) of these issues! Not all control messages are handled!
svn path=/trunk/; revision=21780
-removed add and delete buttons (these function should be placed in a context menu instead)
other rc files than english and german have to be updated accordingly
svn path=/trunk/; revision=21749
Use correct buffer when filling read request. Use SEH when needed
Correctly propagate DO_BUFFERED_IO, DO_DIRECT_IO and FILE_DEVICE_SECURE_OPEN flags
svn path=/trunk/; revision=21741
- Added a vast amount of resources for shell32. Resources now follow the Windows naming method for compatability with themes (one day).
- Removed the old Wine icons out of the .rc file and each icon is now stored in binary for easy maintenance.
- Many more icons to come for other libs (e.g. comctl32) plus separate programs, followed by the toolbars then moving onto other areas.
- I have some documentation to keep track of the Windows v ReactOS icons, including resource names, if anyone needs to work with it or is just generally nosey :)
svn path=/trunk/; revision=21733
\trunk\reactos\drivers\filesystems\fs_rec (audit)
Eric Kohl confirmed fs_rec is clean. Inspired by Bo Branten's file system recognizer.
svn path=/trunk/; revision=21715
Create unnamed FDOs
Read only registry parameters which make sense
Start to read mouse only when receiving IRP_MN_START_DEVICE
Cleanup of code
svn path=/trunk/; revision=21714
\trunk\reactos\drivers\filesystems\cdfs (Unlocked)
Eric Kohl confirmed cdfs is clean. Based on vfatc code and iso-9660 documentation.
svn path=/trunk/; revision=21710
\trunk\reactos\dll\win32\userenv (Unlocked)
Eric Kohl (the author) confirmed he used clean methods to develop
this dll. It was written using a lot of test code. Thomas
Weidenmueller, another contributor, also confirmed his code is clean.
svn path=/trunk/; revision=21709
\trunk\reactos\drivers\bus\acpi (Unlocked)
Alex Ionescu says this code is clean: it's 99% from bsd/linux acpi driver with a single header for NT wrapper, which he thinks was done by arty and is 100% clean. It only does things like malloc->ExAllocatePool.
svn path=/trunk/; revision=21698
\trunk\reactos\drivers\network\tcpip (uNLOCKED)
Combination of Casper and Art Yerkes work. Mostly rewritten by Art Yerkes, he agreed it's clean.
svn path=/trunk/; revision=21694
mmsys.cpl
Clear formatted Win32 API code fully documented on MSDN.
This code doesn't do much at present besides display a dialog
svn path=/trunk/; revision=21691
main.cpl
Clear formatted Win32 API code fully documented on MSDN.
This code doesn't do much at present besides display a dialog
svn path=/trunk/; revision=21690
/trunk/reactos/lib/drivers/oskittcp/oskittcp/ (unlocked)
3rd party code. Copyright (c) The Regents of the University of California.
svn path=/trunk/; revision=21688
reporterror
This is a ReactOS application unrelated to Windows. However I've been through the code anyway and it comprises of modular code documented on MSDN.
svn path=/trunk/; revision=21668
cacls, getfirefox, msconfig, sndvol32, taskmgr by Maurus Cuelenaere, winemine by Maurus Cuelenaere
winlogon by Eric Janssen
svn path=/trunk/; revision=21653
- allow showing and hiding of floating windows
- implement a rough version of the history interface
- temp draw a suggestion on how the color window could look.
- insert a few menu hints
- lots of half implemented of temp stuff in this commit, but committing now before the patch gets any bigger.
svn path=/trunk/; revision=21651
Fixing all warings in the code it will make gcc queit
Remove pargma they should have been set in the project file not hard code it.
svn path=/trunk/; revision=21632
Francois Gouget <fgouget@free.fr>
- mapi: Add some missing MAPI prototypes.
Add some missing MAPI prototypes to mapi.h (spotted by winapi_check)
and include it where they are implemented.
Make mapi.h and mapix.h compatible. gcc does not like macros and
prototypes to be redefined so this involved protecting against
multiple definitions.
Fix the MAPISendMail() implementation prototype.
Sync to Wine-0_9_8:
Hans Leidekker <hans@it.vu.nl>
- mapi32: Implementation for MAPISendMail.
Implement MAPISendMail, stub MAPILogoff and make the stubs for
MAPIInitialize, MAPILogon{,Ex} and MAPILogoff return success.
- mapi32: Prevent freeing non-allocated memory.
svn path=/trunk/; revision=21622
Sync to Wine-0_9_10:
Andrбs Kovбcs <andras@csevego.net>
- wininet: Added Hungarian translation.
Robert Shearman <rob@codeweavers.com>
- wininet: Don't continue to connect to a secure server without SSL support since it won't work.
- wininet: Implement setting of send and receive timeouts.
Sync to Wine-0_9_8:
Robert Shearman <rob@codeweavers.com>
- wininet: Documentation fixes.
Petr Tesarik <hat@tesarici.cz>
- wininet: Czech language resources encoding fix.
Fatih Ac <fasici@linux-sevenler.org>
- wininet: Turkish translation.
Sync to Wine-0_9_7:
Aric Stewart <aric@codeweavers.com>
- wininet: INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT work.
Beginning of framework to implement handling of InternetQueryOption
for INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT.
Sync to Wine-0_9_6:
Jacek Caban <jacek@codeweavers.com>
- wininet: lpvStatusInfo in INTERNET_STATUS_NAME_RESOLVED,
INTERNET_STATUS_CONNECTING_TO_SERVER and
INTERNET_STATUS_CONNECTED_TO_SERVER should be strings, not
sockaddr_in.
svn path=/trunk/; revision=21619
Juan Lang <juan_lang@yahoo.com>
- crypt32: Move context properties to a separate file.
- crypt32: Move serialization functions to serialize.c.
- crypt32: Implement CertGetValidUsages.
- crypt32: Implement CertDuplicateStore.
Sync to Wine-0_9_9:
Juan Lang <juan_lang@yahoo.com>
- crypt32: implement CryptEnumOIDInfo and CryptFindOIDInfo.
- implement CryptEnumOIDInfo and CryptFindOIDInfo
- implement CertOIDToAlgId and CertAlgIdToOID using CryptFindOIDInfo
- crypt32: Move certificate store functions to their own file.
- crypt32: More encoding/decoding.
Add support for encoding/decoding basic constraints and enhanced key
usage, with tests.
- crypt32: Move OIDToAlgID and AlgIDToOID to oid.c.
- crypt32: Correct compile problem on gcc 2.95.
- crypt32: Partially implement CertGetNameString.
Henning Gerhardt <henning.gerhardt@web.de>
- crypt32: Add German resource file.
YunSong Hwang <hys545@dreamwiz.com>
- crypt32: Add Korean translation.
Alexander N. Sшrnes <alex@thehandofagony.com>
- Updated/new Norwegian Bokmеl resources.
Eric Pouech <eric.pouech@wanadoo.fr>
- crypt32: Don't access a blob after freeing it.
Sync to Wine-0_9_8:
Juan Lang <juan_lang@yahoo.com>
- crypt32: Fix a fixme, and remove an old comment.
- crypt32: Output string type in trace.
Alexandre Julliard <julliard@winehq.org>
- Include wine/port.h in files that use exceptions.
Sync to Wine-0_9_7:
Juan Lang <juan@codeweavers.com>
- crypt32: Implement CertRDNValueToStrA and CertNameToStrA, with tests.
- crypt32: Correct X509_NAME decoding, and more stringent tests.
- crypt32: Implement CertRDNValueToStrW and CertNameToStrW, with tests.
svn path=/trunk/; revision=21617
Gerold J. Wucherpfennig <gjwucherpfennig@gmx.net>
- cabinet: Set proper error information on failures.
Sync to Wine-0_9_6:
James Hawkins <truiken@gmail.com>
- cabinet: Implement Extract on top of FDI.
- cabinet: Clean up the documentation for Extract.
- cabinet: Fix the second parameter name of Extract.
- cabinet: Add documentation for FDITruncateCabinet.
- cabinet: Store the cab file handle before extracting files so we can
close the cab file even if no files are extracted.
- cabinet: Move the remaining cabextract.c functions to fdi.c.
- cabinet: Add initial tests for Extract.
- cabinet: Add the two flags used by Extract to cabinet.h.
- cabinet: Define the flags member of the EXTRACTdest structure.
svn path=/trunk/; revision=21610
dll/win32/advapi32/sec
- Very small functions are clean
- Functions doing basic initialization stuff are clean (their name suggests the actions the function performs)
- Functions publically documented in google
- Stubs / unimplemented functions
- Wine's code is clean too
svn path=/trunk/; revision=21608
- Better synchronization of code between kbdclass and mouclass
- Better cleanup in ClassAddDevice in case of error
- Better support of legacy devices
kbdclass only:
- Send IOCTLs to lower device
svn path=/trunk/; revision=21599
No suspicious code detected in kbdclass and mouclass.
The code is quite understandable and have comments for harder parts + they share most of their code
svn path=/trunk/; revision=21598
This allows those of you running Windows Server 2003 as your DHCP server to get a domainname and default route.
This commit is dedicated to Jaix Bly.
svn path=/trunk/; revision=21595
\trunk\reactos\dll\cpl\ncpa (Unlocked)
I reviewed code and found no signs of reverse engeneering.
All api functions used are documented in msdn. DhcpNotifyConfigChange
is not documented by msdn, but there is a lot information about it on
the net. google returns many results.
svn path=/trunk/; revision=21584
Merge from Wine (Patches by James Hawkins (<truiken@gmail.com>))
- Store the full name to the INF file in the inf_file structure
- Implement SetupGetInfInformationA
- Implement SetupQueryInfFileInformationA/W (James Hawkins <truiken@gmail.com>)
svn path=/trunk/; revision=21580
- Use the provided FileQueue (if any)
- Start to implement device interface installation
SetupDiInstallDevice:
- Set FAILEDINSTALL flag in registry if asked to
svn path=/trunk/; revision=21565
patchnv4: Tries to patch the nVidia NT4 driver, which doesn't work anymore (we now report Windows 2000)
dumprecbin: Dumps the contents of the recycle bin. Has been replaced by a recycle bin library at revision 21553
svn path=/trunk/; revision=21558
incress the interal buffer size to 33bytes
as wine does
RtlInt64ToUnicodeString
incress the interal buffer size to 65bytes
as wine does
This will take care of some intToChar Bugs
I have been locking of it for sometimes now
thanks to crashfourit network patch and we talk I did found it.
svn path=/trunk/; revision=21541
ntoskrnl/io/pnpmgr.c:
- Unlock the file, since auditing documentation has been commited and only parts of the file might be considered dirty
- Auditing of this file is in progress, however it's changed to per-function mode
- No function 100% confirmed to be dirty in this file!
svn path=/trunk/; revision=21522
base on wine implenetins taking wine code and rewrite some part. it is not complete but it does the work.
DirectDraw_SetDisplayMode
remove the freq flag we ignore it for now. for EnumDisplayModes report modes that are being support for the graphic card. but the monitor does not support it
svn path=/trunk/; revision=21518
Confirmation from Eric Kohl that this is clean.
depends.exe was used to get the names of the exported functions
Also adding WordPad to the start menu with this commit
svn path=/trunk/; revision=21513
we only need adding clipper or not set it to
true or false. Then ddraw dx hal blt is complete
2. Split complete each surface getting own memory
3. Remove create for overlay for now the code need be
more tested
svn path=/trunk/; revision=21510
\trunk\reactos\drivers\bus\serenum (Unlocked)
Herve Poussineau (the author) said parts he wrote are clean.
There were no actual code from other contributors (only warning fixes etc.)
svn path=/trunk/; revision=21507
\trunk\reactos\dll\cpl\access (unlocked)
This code seems clean, it does nothing useful.
Thomas Weidenmueller agreed it's clean too.
svn path=/trunk/; revision=21504
\trunk\reactos\dll\cpl\liccpa (Unlocked)
Clean. Stewen Edwards quote: "This application does almost nothing and its really good at it."
svn path=/trunk/; revision=21502
\trunk\reactos\dll\cpl\intl (Unlocked)
I reviewed the code and it seems clean to me.
This control panel applet is very incomplete.
svn path=/trunk/; revision=21501
\trunk\reactos\base\services\dhcpd (Unlocked)
3rd party code. Has nothing to do with reverse engeneering.
Authors:
Carlos Duclos Vergara, <carlos at embedded dot cl>
Pablo Bleyer Kocik, <pbleyer at embedded dot cl>
Manuel Jander, <mjander at embedded dot cl>
svn path=/trunk/; revision=21499
1. Implement DdBlt in ddraw it is not a complete implement it does not blt from a source surface to destination surface. for we do not create other types that primary surface for now. and it is always primary is the destination. Rember it does not working in fullscreen that is a bug.
svn path=/trunk/; revision=21497
\trunk\reactos\base\applications\network\roshttpd (unlocked)
Obviously clean. Has nothing to do with reverse engeneering. Written by Casper.
svn path=/trunk/; revision=21491
\trunk\reactos\base\applications\network\ftp (Unlocked)
3rd party code. Copyright (c) 1985 Regents of the University of California.
svn path=/trunk/; revision=21490
\trunk\reactos\base\applications\games\solitaire (Unlocked)
Obviously clean. Has nothing to do with reverse engeneering.
3rd party code. Copyright J Brown 2001.
svn path=/trunk/; revision=21487
Since 21002, we actually check this in ndis, before we just assumed Hex regardless of what was sent in. This fixes networking under qemu.
svn path=/trunk/; revision=21475
Set the correct hardware type flag. Fixes bug 651.
Send option 12 on discovery, allows some DHCP servers to dynamically update DNS.
Send option 61 for good measure. We use the MAC address as some other OSes do.
svn path=/trunk/; revision=21474
trunk\reactos\dll\win32\serialui (unlocked)
I used clean methods to develop this dll. Function prototypes are from wine. Only drvCommConfigDialog is implemented. MSDN says: "The CommConfigDialog function requires a dynamic-link library (DLL) provided by the communications hardware vendor."
svn path=/trunk/; revision=21471
dll/win32/newdev:
- hpoussin and Christoph_vW assures this is a clean implementation, no disassembly of windows code happened during the development of it, and all code is obvious
svn path=/trunk/; revision=21466
Under devlopin with small changes in
Main_DirectDraw_CreateSurface this interface shall split now into one hel and one hal part
svn path=/trunk/; revision=21444
Correct The HAL startup process thanks to Steffen Schulze to solv it He is working with close software
He have wrote complete MoComp to us but am waiting with to commit that interface. Rember all code he have done is being use in close source apps and thuse apps will stay close source. In his source code overlay surface is working fine. This is frist step to correct HAL. Now we need fix the CreateSurface process.
svn path=/trunk/; revision=21434
- migrated project files to Visual C++ 2005 Express - the latest, the best, for free
- converted to an Unicode application
svn path=/trunk/; revision=21432
*listview.c
- Mike McCormack <mike@codeweavers.com>
comctl32: Get rid of some incorrect casts.
- Peter ┼strand <astrand@cendio.se>
comctl32: LISTVIEW_InsertItemT should accept iItem < 0, when using sorted lists.
- Mike McCormack <mike@codeweavers.com>
comctl32: Fix some gcc 4.1 warnings caused by windowsx.h macros.
- Maarten Lankhorst <m.b.lankhorst@gmail.com>
comctl32: Restore listview font on CDRF_NEWFONT.
- Dmitry Timoshkov <dmitry@codeweavers.com>
comctl32: Make listview use standard wine_dbg_sprintf and wine_dbgstr_xxx.
- Vitaliy Margolen <wine-patch@kievinfo.com>
comctl32: Listview - allow selection toggle with ctrl+space.
*comctl32undoc.c
- Mike McCormack <mike@codeweavers.com>
comctl32: Having an MRU list without a compare function works in Windows.
- Thomas Weidenmueller <wine-patches@reactsoft.com>
comctrl32: ReAlloc should be able to move memory blocks if necessary.
*rebar.c
- Thomas Weidenmueller <wine-patches@reactsoft.com>
comctl32: Rebar size fix.
Rebars without any bands should have a height/width of 0.
- Phil Krylov <phil@newstar.rinet.ru>
comctl32: Fix rebar autosize behaviour.
Allow autoresizing rebar by PostMessage(hwndRebar, WM_SIZE, 0, 0) like
native does, taking as few rows as possible and using the parent
window client area size for the other dimension (width for horizontal
rebars or height for vertical ones).
*tab.c
- James Hawkins <truiken@gmail.com>
comctl32: A couple fixes for tab icon offsets.
Shift selected icons up and non-selected icons down.
Add the top or left draw rect to the vertical offset, because it may
not be zero.
- Tobias Loew <tobi@die-loews.de>
comctl32: Fix tab-control flickering.
*tooltips.c
- Rein Klazes <wijn@wanadoo.nl>
comctl32: Do not free LPSTR_TEXTCALLBACK tooltip texts.
svn path=/trunk/; revision=21403
- Add more languages to winnt.h (needed for further oleaut32 wine sync)
- Moved some languages out of wine/winnt.h and changing their value to those in windows headers
svn path=/trunk/; revision=21398
reactos\drivers\storage\disk (Unlocked):
- I've read over each function and there is nothing in here
which is reversed, besides it's not even compatible with
the windows counter-part.
- I state that this is clean.
svn path=/trunk/; revision=21397
- dll/rpcrt4 - if NdrSendReceive fails, don't produce um exception, but just print a warning - as it was before the Wine 0.9.10 merge (fixes TaskMgr regression, and probably other related things)
svn path=/trunk/; revision=21395
winlogon:
- One half of functions is UNIMPLEMENTED - thus clean
- The other functions are fully reactos-specific and not compatible with windows kernel at all - thus there was no need to reverse engineer.
- Changed one typo in comments in wlx.c
svn path=/trunk/; revision=21389
- Don't call CreateCompatibleDC for each paint
- Make the floating windows translucent unless the cursor is over them
- Put in some temp code for basic sketches. (this functionality needs incorporating into separate tool functions)
- change the internal name 'floating toolbars' to 'floating windows' to avoid confusion.
svn path=/trunk/; revision=21376
reactos\tools\regtests2xml (Unlocked):
reactos\tools\rgenstat (Unlocked):
- No reason for these to be locked (obviously clean).
svn path=/trunk/; revision=21371
reactos\tools\gendib (Unlocked):
reactos\tools\ms2ps (Unlocked):
- No reason for these to be locked (obviously clean).
svn path=/trunk/; revision=21355
reactos\tools\create_nls (Unlocked):
- No reason for this to be locked (obviously clean).
- Also sources of information are cited in the source file.
svn path=/trunk/; revision=21353
reactos\base\applications\msconfig (Unlocked):
- The author Christoph von Wittich has verified that msconfig is clean
and no reverse engineered code is used within it.
svn path=/trunk/; revision=21350
reactos\boot\freeldr (Unlocked):
- The issue with freeldr has been cleared up. It was stated by the author
Brian Palmer that no reverse engineered code is used within it, Several
other developers I've spoken with on IRC agree.
svn path=/trunk/; revision=21339
ntoskrnl:
- pnpnotify.c: hpoussin and filip are authors, hpoussin states his work as clean. I checked through this file, everything seems quite logic to me, and no rules violation exists
- pnpreport.c: Only 2 functions are really implemented, and their implementation is trivial and relatively small. I count them as clean. Others are just unimplemented
- wmi.c: This file consists of stubs and is obviously clean
svn path=/trunk/; revision=21331
reactos/base/system/winlogon:
- Unlocked .rc files
- Unlocked .h files (they contain only prototypes and a pair of simple macros)
- Unlocked .rbuild for winlogon and for system directories
svn path=/trunk/; revision=21328
reactos/base/setup/welcome:
- Every functions in the source file looks fine, no signs of reverse engineering (also no need in reverse engineering) and every function is typical for such application
- I state that this application's code is clean
- Artwork is original
svn path=/trunk/; revision=21325
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.