Commit Graph

2778 Commits

Author SHA1 Message Date
Aleksey Bragin
59f8fd9675 Add PsInitialSystemProcess declaration into winddk.h (fixes win32k compilation)
svn path=/trunk/; revision=24787
2006-11-19 20:24:46 +00:00
Alex Ionescu
312f07d0e5 - Major changes to HAL/kernel loading and freeldr hacks:
- 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
2006-11-19 17:53:31 +00:00
Alex Ionescu
596c3bee62 - Reorganize HAL exports and export KeTRyToAcquireQueuedSpinlock and KeTryToAcquireQueuedSpinLockRaisetoSynch.
- 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
2006-11-16 17:30:52 +00:00
Alex Ionescu
8c3485a307 - Remove internal HAL function from ntifs
- Make sure obfuncs.h includes obtypes.h if it's ever included separately.
- Add ARC_STATUS and ARC Error Codes.

svn path=/trunk/; revision=24766
2006-11-16 06:55:59 +00:00
Thomas Bluemel
a1e3bd38a5 Fix some compilation errors
svn path=/trunk/; revision=24765
2006-11-15 20:24:55 +00:00
Alex Ionescu
3047ba1df7 - Build fixes.
svn path=/trunk/; revision=24760
2006-11-14 22:42:59 +00:00
Alex Ionescu
7b4b9aec8f - Delete HAL cruft files.
- 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
2006-11-14 20:59:48 +00:00
Alex Ionescu
5a7f46becc - Implement HalSystemVectorDispatchEntry, KeFlushWriteBuffer, HalFlushCommonBuffer, HalAllocateCrashDumpRegisters.
- 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
2006-11-14 18:17:33 +00:00
Alex Ionescu
0e8c70ba22 - Re-implement messy portio.c by using MSVC-compatible intrinsics instead. 20 lines of code become 1, yay!
svn path=/trunk/; revision=24740
2006-11-13 04:31:39 +00:00
Alex Ionescu
afb3f6c5c3 - Fix build error.
svn path=/trunk/; revision=24738
2006-11-12 23:32:11 +00:00
Alex Ionescu
4d578c637e - FSTUB Patch for Mount Manager Support, Part 1:
- 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
2006-11-12 22:51:06 +00:00
Alex Ionescu
49c35d197f - Add CcFastMdlReadWait extern to ntifs.h
- 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
2006-11-12 22:27:10 +00:00
James Tabor
8110686c9c Incremental changes, adding new Create and Delete DC functions and support structures.
svn path=/trunk/; revision=24704
2006-11-09 01:45:42 +00:00
Johannes Anderwald
9b71253be1 set most of trunk svn property eol-style:native
svn path=/trunk/; revision=24701
2006-11-08 11:47:44 +00:00
Alex Ionescu
fb3a3c8a7f - Fix boot.
- Fix GUI boot (bootvid).
- Fix cmlib bug.

svn path=/trunk/; revision=24684
2006-11-05 20:28:59 +00:00
Alex Ionescu
1a98439492 - SMSS: Send QOS structure when creating new ports, it's not optional on NT LPC. Send maximum port length when creating new ports, it's not optional on NT LPC. Create 2 listening threads on NTLPC, instead of just one. [AUDIT: Unlock smlib, it's fully internal and specific to ROS without any relationship to NT. The author used clean-room tests and documentation].
- 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
2006-10-30 14:17:37 +00:00
Thomas Bluemel
bcf2a300f2 Implement GetTickCount64
svn path=/trunk/; revision=24660
2006-10-30 11:56:28 +00:00
Alex Ionescu
ef31ab5c96 - Make CSRSS register the default hard error port on startup.
- 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
2006-10-26 04:55:34 +00:00
Alex Ionescu
6d56cb39a6 - Fix dozens of missing typecast errors.
- Other MSVC/WDK compatibility fixes.

svn path=/trunk/; revision=24657
2006-10-26 01:49:51 +00:00
Alex Ionescu
6497d295c3 - Add some missing/internal definitions to proper headers.
- 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
2006-10-25 18:23:45 +00:00
Alex Ionescu
b5e25167e2 - Move all ASM internal intrinsics to intrin_i.h. Request for KJK::Hyperion/hackbunny to look at the GCC ones and optimize/fix them up.
- 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
2006-10-25 16:37:46 +00:00
James Tabor
e4ee4f1bab Commit tmp patch by dralnix, fixes Rev 24626 Breaks Linux Build, and windows build.
svn path=/trunk/; revision=24646
2006-10-25 01:30:19 +00:00
Alex Ionescu
edaa6996f4 - Properly implement inline versions of KeGetCurrentThread and KeGetPreviousMode/ExGetPreviousMode, as well as KeGetPcr. This should significantly increase performance. (KeGetPreviousMode is reduced to 2 lines of code instead of 15 lines with 2 expensive jumps).
svn path=/trunk/; revision=24639
2006-10-23 22:01:25 +00:00
Alex Ionescu
2dae9ef970 - Fix/add some remaining prototypes.
- 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
2006-10-23 21:28:17 +00:00
Alex Ionescu
2e1f5d46f3 - Add some missing definitions to our NTIFS.h.
svn path=/trunk/; revision=24637
2006-10-23 21:24:16 +00:00
Alex Ionescu
57a9accaa9 - Add NtApphelpCacheControl, NtFilterToken (WARNING: PATENTED. TAKE CARE WHEN IMPLEMENTING).
- Add all the recently added functions to their proper place in the NDK.

svn path=/trunk/; revision=24636
2006-10-23 21:19:15 +00:00
Alex Ionescu
20cab2c593 - Should fix the build.
svn path=/trunk/; revision=24634
2006-10-23 20:21:08 +00:00
Alex Ionescu
0df736c010 - Add NtGetWriteWatch, NtResetWriteWatch.
- Add NtCreateJobSet and define JOB_SET_ARRAY.

svn path=/trunk/; revision=24633
2006-10-23 18:35:13 +00:00
Alex Ionescu
909334f45c - Define EFI_DRIVER_ENTRY.
- 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
2006-10-23 17:53:25 +00:00
Alex Ionescu
4fda8d1bb7 - Add NtAccessCheckAndAuditAlarm, NtAccessCheckByType, NtAccessCheckByTypeAndAuditAlarm, NtAccessCheckByTypeResultList, NtAccessCheckByTypeResultListAndAuditAlarm, NtAccessCheckByTypeResultListAndAuditAlarmByHandle, NtAccessCheckByTypeResultListAndAuditAlarmByHandleByGodHowMuchLongerCanTheseAPINamesGet.
- Last one is a joke.

svn path=/trunk/; revision=24626
2006-10-23 17:47:40 +00:00
Alex Ionescu
4ed86823da - Fix some EFI prototypes and exports.
- Add BOOT_ENTRY definition.
- Fix build breakage from earlier commit.

svn path=/trunk/; revision=24620
2006-10-23 05:49:07 +00:00
Alex Ionescu
1c38e47592 - Implement WaitForDebugEvent. Calls out to DbgUiConvertWaitStateStructure which is still unimplemented.
svn path=/trunk/; revision=24618
2006-10-22 23:47:12 +00:00
Alex Ionescu
8008f9d427 - Stub DbgUiConvertStateChangeStructure (this isn't done in kernel32 anymore) and export it.
- 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
2006-10-22 21:19:34 +00:00
Alex Ionescu
6d08ee060e - Add one of the basic OBJECT_ATTRIBUTES flags and don't fail any 3rd-party driver or application that might've been using it.
- Add missing member to DBGKM_LOAD_DLL.

svn path=/trunk/; revision=24608
2006-10-22 19:48:43 +00:00
Hervé Poussineau
b4c3d08f83 Remove multiple definition warning
Add a few missing error codes (taken from http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2004-02/0201.html)

svn path=/trunk/; revision=24603
2006-10-22 17:19:49 +00:00
Magnus Olsen
68b1244df5 correct D3DHAL_DP2OPERATION struct
this include file should be rewriten 

svn path=/trunk/; revision=24598
2006-10-22 08:23:13 +00:00
Thomas Bluemel
c4f8255e95 Remove the no longer used kjs library
svn path=/trunk/; revision=24592
2006-10-21 16:00:44 +00:00
Thomas Bluemel
ccd9ed0a4e - Some minor Nt stub fixes
- Fix compilation with GCC4

svn path=/trunk/; revision=24578
2006-10-20 13:19:13 +00:00
Alex Ionescu
9c4178c05b - Define DBGKM_APINUMBER
- Implement DbgkpSendApiMessageLpc, DbgkpSendApiMessage, DbgkCopyProcessDebugPort, DbgkForwardException, DbgkFreeDebugEvent, DbgpWakeTarget.
- Close original handle in DbgkOpenHandles.

svn path=/trunk/; revision=24575
2006-10-20 05:16:04 +00:00
Alex Ionescu
0d09a4e5f9 - Fixup DEBUG_OBJECT definition.
- 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
2006-10-19 20:08:52 +00:00
Alex Ionescu
aef24e2a4a - Implement the entire kernel-mode native interface of Debug Objects, minus a few missing operations in NtWaitForDebugEvent:
- NtCreateDebugObject, NtDebugContinue, NtDebugActiveProcess, NtRemoveProcessDebug, NtSetInformationDebugObject, NtWaitForDebugEvent.
- Of course, the entire backend is stubbed out.
- Implement Debug object initialization (not called yet) and close(not done) and delete (done) callbacks.

svn path=/trunk/; revision=24572
2006-10-19 07:04:21 +00:00
James Tabor
42d7cdbd64 Add four more members to the Gdi user data (DC_ATTR) structure. Sort the list later.
svn path=/trunk/; revision=24571
2006-10-19 04:48:51 +00:00
Alex Ionescu
9b785911ed - Some stuff I promised James. This is DC_ATTR from Win2K, IIRC (you called it GDI_USER_DATA). It changed a bit in XP, but now you have a working model. Also added some more flags/enums that I knew about and some font structures.
svn path=/trunk/; revision=24561
2006-10-18 06:00:31 +00:00
James Tabor
f7420ccbad Add more DCDWord constants and two more members in GdiUserData structure.
svn path=/trunk/; revision=24559
2006-10-18 03:54:35 +00:00
James Tabor
7b814c1069 Add another member to GdiUserData structure.
svn path=/trunk/; revision=24554
2006-10-17 05:52:35 +00:00
James Tabor
6dc593f684 Win32k GDI Compatibility Project:
- Add new Gdi user data structure
- Fixed Meta constants
- Add new GetDCWord constant

svn path=/trunk/; revision=24551
2006-10-17 04:32:18 +00:00
Alex Ionescu
7c42b991f3 - One school day and two midterms later, I'm still the only one with enough time to fix a header. Can't wait to see who will be up for trying to fix booting...
svn path=/trunk/; revision=24550
2006-10-17 04:20:48 +00:00
Alex Ionescu
3b6c356260 - Fix user-mode compilation.
svn path=/trunk/; revision=24548
2006-10-16 15:27:12 +00:00
Alex Ionescu
cef2ebcee2 - Implement RtlIsGenericTableEmpty, RtlNumberGenericTableElements.
- Implement RtlLookupElementGenericTable.
- Implement RtlDeleteElementGenericTable

svn path=/trunk/; revision=24542
2006-10-16 03:39:49 +00:00
Alex Ionescu
dbb8a15d7c - Added some generic table routines to rtlfuncs.h so that they can be used in user-mode.
- 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
2006-10-16 03:19:14 +00:00