- Add PE routines for traversing the import table and fixing up the imports.
- Add routine for getting the LOADER_MODULE for a freeldr module by name.
- Add the ability to load a not-yet-loaded-driver that's in an import entry (ie: dependencies). Only used for HAL now.
- Map HAL in the same was as the kernel, instead of relocating it as a hack from within the kernel.
- Refactor some routines to better share code. Don't read freed memory anymore.
- Use LdrRelocateImageWithBias instead of quintuplicating relocation code.
- Parse kernel and HAL imports while PE-loading from within freeldr.
- Remove dozens of freeldr.c hacks from the kernel. Remove slow code which was making two copies of the parameter block and wasting over 30KB in static strings that were immediately copied to other strings...
- Don't use HalModuleObject and NtoskrnlModuleObject anymore. Remove LdrSafePEProcessModule and other similar boot-time hacks. Reimplement MmGetSystemRoutineAddress.
- NDK/DDK fixes.
- Add KDCOM to bootcd/installation.
svn path=/trunk/; revision=24778
- Add stub for HalSetTimeIncrement.
- Cleanup CMOS-related routines (Get/Set environment value and get/set RTC). Fixup some prototypes as well. Inline HalpReadCmos/HalpWriteCmos instead of having a separate function.
- Fixup wrong protypes for various Queued Spinlock functions.
- Use __rdtsc intrinsic instead of Ke386RdTsc.
- Other MSVC compilation fixes.
svn path=/trunk/; revision=24770
- Implement (or cleanup + mark as implemented, these are 4 line functions) HalDisplayString, HalAcquireDisplayOwnership, HalSetDisplayParameters, HalQueryDisplayParameters, HalInitailizeProcessor, HalAllProcessorsStarted, HalStartNextProcessor, HalProcessorIdle, HalRequestIpi.
- Fix some prototype definitions and cleanup some formatting.
svn path=/trunk/; revision=24759
- Add lots of missing PCI definitions to the DDK, and to the internal file pci.h
- Make HAL compilable with the WDK thanks to a nice hack/trick I found.
svn path=/trunk/; revision=24757
- Create new /fstub directory in the kernel tree and move iomgr's xhal functions there.
- Delete disk.c entirely from iomgr.c and spread it across fstub.
- Entirely reimplement from scratch IoWritePartitionTable, IoReadPartitionTable, IoSetPartitionInformation, HalExamineMbr. Lots of bug fixes in terms of wrong assumptions and compatibility with weird partition tables.
- Fix prototype of IoAssignDriveLetters, but for now, keep the old code (xHalIoAssignDriveLetters) because this has not been rewritten yet.
- Move some functions to fstubex.c for future implementation, and some to volume.c. Move the HAL table to halstub.c
- Make use of the hal.h file commited earlier.
- Move IoAssignDriveLetters from halfuncs to iofuncs.h
- Implement missing functions in HAL (IoRead/Write/Set PartitionInfo) and make them call into the ntoskrnl exports.
svn path=/trunk/; revision=24737
- Add FsRtlCompleteRequest macro to ntifs.h
- Add LDRP_DRIVER_VERIFYING flag to ldrtypes.h
- Add MM_DRIVER_VERIFIER_DATA and DRIVER_SPECIFIED_DRIVER_THUNKS to mmtypes.h
- Add MAXLONGLONG to ntdef.h.
svn path=/trunk/; revision=24729
- Fix various LPC structures in the NDK. Fix some prototypes too.
- Don't export PEPORT or PLPCP_PORT_OBJECT outside of /lpc and use PVOID isntead.
- Add a new RBUILD setting called NTLPC, which enables NTLPC when turned on.
svn path=/trunk/; revision=24664
- Stubplement the System Hard Error handler (it simply bugchecks)
- Fully implement ExRaiseHardError when called from user-mode so that the strings and parameters are properly captured into user-mode memory.
- Almost completely implement ExpRaiseHardError which is responsible for actually doing the error. However, ROS LPC is screwed up so sending the LPC Message crashes since the port isn't in a listening state or something.
- Would appreciate some advice on how to get the LPC message to CSRSS.
- Fix Get/SetErrorMode. The Native API uses an inverted value of SEM_FAILCRITICALERRORS, so this must be handled in win32.
- Cleanup formatting of RaiseException, and only normalize the paramter count if we're actualy going to use it.
- Implement LpcRequestWaitReplyPort as a big hack, but it should work.
svn path=/trunk/; revision=24658
- Get rid of FLUSH_TLB macros and use KeFlushCurrentTb and the MSVC_compatible instrinsic __invlpg;
- Fix some prototypes.
- Fixed unsigned/signed mismatches.
- Fix SEH usage in ExAllocatePoolWithQuotaTag.
svn path=/trunk/; revision=24652
- Add MSVC versions for some of them (not yet complete).
- Fix the fact that KeGetLocalDescriptorTable was setting the LDT instead of retrieving it.
- Fix bug in LIST_FOR_EACH and LIST_FOR_EACH_SAFE which was setting the flink to NULL instead of checking if the flink is NULL. One more reason these damned macros should've never been used.
- Use MSVC-intrinsics when applicable (_disable/_enable, etc).
- Fix JOB_SET_ARRAY problems.
- Fix buffer overflow in SystemProcessInformation QSI_DEF.
- Fix some broken compares/arithmetic to due to lack of parens.
- Add some ASSERTS to some unknown functions that make pointer assumptions.
svn path=/trunk/; revision=24650
- Add all the Nt functions to sysfuncs.lst and fixup some entries which were out-of-order. Unless I skipped anything (might've skipped 1 or 2 APIs), we should now have the same system call table as Windows 2003 SP1 (useful for my testing of ntdll.dll inside Windows).
svn path=/trunk/; revision=24638
- Add NtAddDriverEntry, NtDeleteDriverEntry, NtEnumerateDriverEntries, NtModifyBootEntry, NtModifyDriverEntry, NtQueryDriverEntryOrder, NtSetDriverEntryOrder.
- These are for EFI (or pseudo-EFI if we ever emulate Vista).
svn path=/trunk/; revision=24627
- Implement and export DbgUiSetThreadDebugObject.
- Fix DbgUi* APIs to use DbgSsReserved[1], and not [0]. Still trying to figure out what [0] is for.
svn path=/trunk/; revision=24615
- Implement DbgkpCloseObject.
- Implement DbgkpOpenHandles.
- Fix various bugs in the code and flag usage.
- Enable calling DbgkClearProcessDebugObject when terminating a process.
svn path=/trunk/; revision=24574
- Implemented RtlInsertElementGenericTable and RtlInsertElementGenericTableFull (Splay-Tree versions). Also implemented a helper function RtlpFindGenericTableNodeOrParent when we're not given one and need to locate it manually.
- Defined structure for generic table entries so that we can properly return user data and do the right allocations.
svn path=/trunk/; revision=24541