- Implement LdrPEFixupForward in FreeLDR and update LdrPEGetExportByName to use it, so that FreeLDR can now parse import tables with forwarders.
- Add call to MmInitSystem for Phase 0 in ExpInitializeExecutive.
- Completely redesign the way boot drivers are handled. They're now re-mapped during Phase 0 MmInit (part of the re-mapping is a hack until FreeLDR 2.5 is ready) and the IoMgr only does I/O stuff, not PE loading anymore (this is only half-true, we still process imports until FreeLDR 2.5 is done).
- Also re-design the way the module list head is initialized and used. LdrInit1 is now gone, Phase 0 MmInit now handles initializing it and copying boot loader data to it.
- Some code is still missing and functions still need to be improved.
- When FreeLDR 2.5 is ready some of the hacks will go away, they're #ifed for now to make it easy to switch.
svn path=/trunk/; revision=25874
- Start implementing some routines of the Mm SysLdr. Implemented MiSnapThunk and most of MiResolveImageReferences. The SysLdr has a lot of restrictions that the typical Ldr in user-mode doesn't, as well as manages imports and reference counts them, so the code can't be shared with ntdll's Ldr (this is also why real NT doesn't have an Ldr component, and this is in Mm).
- Fix some PE Header types that were wrong in our PSDK.
svn path=/trunk/; revision=25872
rewrote NtGdiDdQueryDirectDrawObject so it only copy the cache data only. This will speed up allot. we only need call on NtGdiDdCreateDirectDrawObject yo setup the whole cache and enable the drv with the helper functions. the NtGdiDdQueryDirectDrawObject will be faster like this. using RtlCopyMemory insted for RtlMemMove and allot other change in it. adding _SEH to NtGdiDdQueryDirectDrawObject so user can not crash it any longer.
svn path=/trunk/; revision=25870
- Start work on supporting NT-compatible System Loader that properly fills out LDR_DATA_TABLE_ENTRY and handles imports correctly. Modified LdpPEProcessModule to properly build the data table entry and create the base name and directory name.
- Add stub for MiResolveImageRefernces.
svn path=/trunk/; revision=25868
- Properly implement SystemExtendServiceTableInformation, except that the SE_LOAD_DRIVER_PRIVILEGE check is currently disabled since our smss doesn't acquire it (and we should therefore ban it from loading win32k.sys...).
- Delete LdrpLoadImage, LdrpUnlaodImage, LdrpLoadAndCallImage.
svn path=/trunk/; revision=25862
- Temporarily remove routines to set per-page protection (this doesn't really break anything, just makes the OS less secure).
svn path=/trunk/; revision=25861
- Remove some of the sixtuplicated routines to load a PE file. We're now down to a single function which takes an ImageType parameter for DLL/EXE/SYS, but even this is still temporary as the parameter will soon go away.
- We now load drivers in the same nice way that we load the kernel and DLLs, but we don't yet process their imports and relocate them in FreeLDR, because FreeLDR doesn't handle forwarders yet.
- We don't need a large hack in KiRosPrepareForSystemStartup anymore since the driver base addresses are now proper.
- Don't free boot-drivers anymore, since we'll load them in place soon.
- Don't load bootvid twice.
- Remove PAE stuff in FreeLDR since we don't support PAE anyway in the kernel and when we do, might as well implement it cleanly instead of relying on the broken FreeLDR stuff.
svn path=/trunk/; revision=25860
- tested in ROS, by no means perfect but we cant least see the various glyphs within a font
- this app highlights an issue with our paint code (not yet investigated)
svn path=/trunk/; revision=25825
-- add one more testcase (NtGdiDdDeleteDirectDrawObject)
-- start adding thrid testcase (NtGdiDdQueryDirectDrawObject), this one will take bit longer to completed but I add a stub for it for now.
svn path=/trunk/; revision=25814
- Added newcm.c which will contain some new Cm code part of the Cm Rewrite but not in the rewrite branch (used solely for supporting CmGetSystemControlValues).
- Added System Control Vector which supports all the registry flags that Windows 2003 SP1 supports as well.
- The most important part of this support, at least for us, is to get boot-time time zone support working properly. We can worry about the other options later.
- Update KrnlFun for previous DPC/HAL fixes.
svn path=/trunk/; revision=25806
- This fixes a critical system malfunction and architectural bug, as well as speeds up ReactOS incredibly -- setup takes seconds again, and boot is almost instantenous (except the Explorer loading bug).
- Proper fix for bootvid regression that Aleksey "Fixed". Video mode is now properly setup wether in setup or non-setup mode, so bootvid works again.
- Enable bootvid in freeldr.ini, currently using only /SOS mode since full-screen logo isn't implemented yet.
svn path=/trunk/; revision=25800
- ObpReferenceProcessObjectByHandle:
- Remove PAGED_CODE
- Use InterlockedIncrement instead of InterlockedExchangeAdd.
- ObpInsertHandleCount: Fix calculation of the handle database size, fixing potential pool corruption/overwrite situations.
- ObpChargeQuotaForObject: Write proper code for charging the quota.
- ObpDecrementHandleCount:
- Get ObjectType from caller instead of doing the extra operation.
- If there's no handle database, then don't setup a handle entry.
- ObpIncrementHandleCount is PAGED_CODE.
- ObpCloseHandle: Do proper logic for determining if we should raise an exception, fail, or bugcheck the system when an invalid handle is being closed.
- ObpSetHandleAttributes:
- Not PAGED_CODE.
- Allow operations on kernel objects.
- Use the Access Protect Close Bit in the GrantedAccess instead of an OBJ_PROTECT flag in the ObAttributes.
- ObpCloseHandleCallback: Sweep/Enumerate Routines are BOOLEAN, not VOID.
- ObDuplicateObject:
- Clear the audit mask if auditing isn't set.
- Always duplicate OBJ_AUDIT_OBJECT_CLOSE if it's set.
- Clear the handle entry before writing it.
- Always propagate ACCESS_SYSTEM_SECURITY as a desired access.
- ObFindHandleForObject: Use ObReferenceProcessHandleTable instead of directly accessing the pointer.
- ObInsertObject: Dereference symbolic links when they collide during an insert, since a reference was already added.
- NtDuplicateObject: Clear out the TargetHandle to assume failure.
- ObpCaptureObjectName: Use RtlCopyMemory which is faster.
- ObpAllocateObject: Fix check for quota usage.
- ObCreateObjectType:
- Make sure that the object type name is wchar-aligned.
- Add support for LPC Waitable Ports.
- Initialize Object Locks.
svn path=/trunk/; revision=25799
before it did not return any type at all. it did a heap crash from downloader mangers when it try figout what type
of sting the toolstips use. it is tested in 0.3.1 and not whole implemnent is tested yet. it should be right for all
case.
svn path=/trunk/; revision=25794