Commit Graph
2813 Commits
Author SHA1 Message Date
Peter Ward f17d99c983 - Add the rtltypes.h change from r25264 back and add the define for HEAP_CREATE_ENABLE_EXECUTE to winnt.h, this, I believe, is the proper fix.
svn path=/trunk/; revision=25276
2007-01-02 10:25:51 +00:00
Aleksey Bragin b977a28611 Revert rtltypes.h change from r25264 until a proper fix is found.
svn path=/trunk/; revision=25275
2007-01-02 09:53:01 +00:00
Magnus Olsen d333f341a6 adding more define of IMAGE_SUBSYSTEM that we are missing
svn path=/trunk/; revision=25268
2007-01-01 21:32:21 +00:00
Magnus Olsen 9f258befad adding allot IMAGE_FILE_MACHINE to winnt that we where missing
svn path=/trunk/; revision=25266
2007-01-01 20:21:43 +00:00
Hervé Poussineau f9b6e910f9 Better support for non X86 systems
svn path=/trunk/; revision=25264
2007-01-01 14:50:16 +00:00
Alex Ionescu 8f2eb74d99 - Fix OB_SECURITY_METHOD prototype, callers, and implementors.
- Add call to SeOpenObjectAuditAlarm in ObCheckObjectAccess.
- Start adding Ob Callout validation on checked builds. For now only done around security functions.
- Set *MemoryAllocated to FALSE in ObGetObjectSecurity early on to avoid inconcistent state if the callback failed.
- Implement new XP function ObSetSecurityObjectByPointer and simplify NtSetSecurityObject by making it use it.
- More Win 2003 SecurityDescriptor Cache functions to sdcache instead of obsecure.c.

svn path=/trunk/; revision=25240
2006-12-29 22:17:29 +00:00
Alex Ionescu c0a3750d26 - Fix critical bugs in exception handling: Unwinding was completely broken, using the wrong SEH protector to detect collided unwinding. The correct protector itself also had a broken check.
- Fix architectural bug in the entire TrapFrame<->Context conversion system and Ring Privilege Transitions (Inter-ring and intra-ring) which was lacking proper sanitation and validation of segments, flags and debug registers. Among other things, IOPL is now respected, CS is not KGDT_R0_CODE | RPL_MASK anymore, and the GPF code is now properly being called. This completely fixes exception handling being totally broken and crashing firefox installer, mirc, and other applications.
- Rewrite the page fault handler base code in assembly instead of relying on a broken C routine. Detect VDM, V8086, detecting expected/normal fault in ExpInterlockedPopEntrySList and faults in the system handler code. Rewrite MmAccessFault to be the main function that calls out to other sub-fault functions, and use the same prototype as NT.
- Fix the KGDT boot table to have proper granularity and big flags, and extend it to 256 entries.
- Create proper thread context in RtlInitializeContext and cleanup Rtl Thread routines.
- Remove all int3 and breakpoints from trap handlers, and replace them with a much better "UNHANDLED_PATH" macro which freezes the system, beeps, and displays a message with the line of code that's unhandled. This is to clearly tell the user that something is unhandled, instead of nesting infinite exceptions due to the int3.
- Fix a bug in INT_PROLOG.
- Sanitize EFLAGS and Code Segments in KeContextToTrapFrame and KeTrapFrameToContext.
- Implement KiUpdateDr7 and KiRecordDr7 as well as DR_MASK and other DR-validation macros and functions to protect against DR-vulnerabilites as well as to properly account for each active hardware breakpoint in a per-thread fashion by using the dispatcher header.
- Allow CR0_EM when running in a VDM.
- Fix FPU/NPX Register handling in KeContextToTrapFrame and KeTrapFrameToContext, and also speed it up by manual copying instead of a memory move.
- Properly give IOPL 3 to user-mode threads if they requested it.
- Detect GPF during GPF.
- Detect pagefault with a trap-frame spread over two or more pages and nested.
- Properly sanitize and set correct trap frame in KiInitailizeUserApc.
- Return STATUS_ACCESS_VIOLATION during page faults instead of STATUS_UNSUCESSFUL. 
- Fix assert in VdmSwapContext, as well as Code Selector check which was broken.
- Fix delayed object deletion (ObDeferDeleteObject) and the Ob Repear Routine and list.
- Update Kernel Fun.
- BUGBUG: Temporaily hack VMWare to detection to always detect VMWare.

svn path=/trunk/; revision=25238
2006-12-29 18:49:00 +00:00
Eric Kohl 69a2a4ca6e - Rename SCM_START_PACKET to SCM_CONTROL_PACKET.
- Rename SCM_START_COMMAND to SCM_CONTROL_START and use the unused value 0 of the SERVICE_CONTROL_ constants.
- Implement stop command.

svn path=/trunk/; revision=25231
2006-12-26 01:29:22 +00:00
Peter Ward f696e3e547 - Compilation fix.
svn path=/trunk/; revision=25140
2006-12-13 05:37:55 +00:00
Johannes Anderwald 170373b2b0 Part 1/2 of WDK compability fixes
- add struct CONSOLE_READCONSOLE_CONTROL to wincon.h
- add missing pointer typedef
- fix declaration of ReadConsoleA 
                     ReadConsoleW
                     FindFirstVolumeA
                     FindFirstVolumeW
                     FindFirstVolumeMountPointA
                     FindFirstVolumeMountPointW
                     FindNextVolumeA
                     GetApplicationRecoveryCallback
                     RegisterApplicationRecoveryCallback
                     SystemTimeToTzSpecificLocalTime

- fix typedef of WIN32_FIND_STREAM_DATA

svn path=/trunk/; revision=25138
2006-12-12 23:52:02 +00:00
Alex Ionescu c39989df1b - Fix SleepEx.
- Put volatile statements in EX_RUNDOWN_REF, IRP, DEVICE_OBJECT, ERESOURCE, FILE_OBJECT, IO_REMOVE_LOCK, WORK_QUEUE_ITEM where required (thanks to Microsoft's changes in the WDK to mark the fields properly).
- Update FILE_OBJECT definition.
- Add some asserts to some I/O functions.
- Add stub support for File Objects created by XP+ Drivers which have File Object Extensions.
- Add some fixes to IopDeleteFile, including proper reference counting for the DO and VPB, as well as cleanup when the file is closed without a handle.
- Fix a bug in IopSecurityFile.
- Queue and unqueue IRPs in all I/O functions.
- Fully support IRP cancellation now.
- Fix critical bugs in NtDeviceIoControlFile and NtDeviceFsControlFile which were causing double queueing of IRPs and freeing of invalid memory, as well as invalid paramter checking for user-mode buffers.
- Add exhaustive validation checks to IoCreateFile, add more failure cases, and validate the EA buffer. Also support IO_ATTACH_DEVICE_API flag.
- Implement IoCreateStreamFileObjectEx and IoCreateStreamFileObjectLite and fix several bugs in the original implementation of IoCreateStreamFileObject.
- Fix a bug in RtlRaiseException.
- Update Io*ShareAccess routines to support XP+ style semantics related to special File Object flags which disable their use.
- Add validation to all Query/Set routines so that information clasess, lengths, buffers and alignment are properly checked.
- Also add an array for the proper acess rights that each query/set operation requires.
- Check backup/restore privileges during I/O File operations.
- Check traverse access during I/O File Operations.
- Check access privileges to the device during I/O file operations.
- Rename IopReferenceDeviceObject and also verify if an exclusive DO is trying to be invalidly opened.
- Support various extra security checks during I/O File/Device Parse Routine.
- Fix a bug during IopCleanupIrp so that we don't dereference the File OBject if this was a create operation.
- Fix some bogus asserts in IofCompleteRequest, and save the IRP Flags before signalling it's event, since the driver might've freed it behind our back.
- Fix a large bug in ObInsertObject which affected the insert of unnamed objects with forced security options (Such as process/threads).
- Fix the creation of the Process/Thread/Job Obejct Types to that security information is forced.
- Remove "Fix PS!!!" messages since the bug is now fixed and these objects now get proper security descriptors.
- Fix another bug in ObInsertObjet which wasn't properly validating user-mode objects and always assumed kernel mode.
- Silence multiple trace/checkpoint messages that have accumulated throughout time for various debugging purposes.

svn path=/trunk/; revision=25118
2006-12-10 18:40:30 +00:00
Andrew Greenwood 275e3ef97e These files aren't complete yet, but this will put them at least in
their right place...


svn path=/trunk/; revision=25107
2006-12-10 04:04:03 +00:00
Aleksey Bragin 87084dffa3 Add KdChangeOption() stub
svn path=/trunk/; revision=25077
2006-12-06 20:55:42 +00:00
Johannes Anderwald 8dde1987db - move undocumented constants to more appropiate location
- thnx to Alex_Ionescu

svn path=/trunk/; revision=25053
2006-12-03 21:19:23 +00:00
Aleksey Bragin 087400a522 NCI interface auditing, sysfuncs.lst.
- Fixed NtCompressKey() and NtQuerySystemEnvironmentValueEx() prototypes (they were incorrectly declared/defined, but had a correct number of params in sysfuncs.lst)
- Fixed incorrect number of parameters specified in sysfuncs.lst for NtLoadKeyEx(), NtQueryOpenSubKeysEx(), NtTranslateFilePath()

sysfuncs.lst now perfectly matches all functions definitions.

svn path=/trunk/; revision=25029
2006-12-03 11:13:05 +00:00
Alex Ionescu 8b4c009bfb - Implement V86 trap fixup during traps and interrupts.
- Implement DR register save/restore during traps, interrupts and system calls.
- Remove respective entry from krnlfun.c.

svn path=/trunk/; revision=25020
2006-12-02 20:49:56 +00:00
Alex Ionescu 088b3cd98e - Fix prototype/definition of HalCalibratePerformanceCounter and properly implement it.
- Implement KeStallExecutionProcessor in its own assembly file isntead of using inlined GCC assembly, and align the loop to 16 bytes for more streamlined execution speed.
- Mask out clock interrupt during Phase 0 and Initialize clock interrupt on HAL Phase 1. This enables the HAL clock interrupt which was already written.
- Make the clock interrupt use HalpCurrentTimeIncrement instead of hardcoding a value.
- Re-implement HalpInitializeClock to allow for dynamic increments from 1ms to 15ms with appropriate rollovers and to call KeSetTimeIncrement to update timer values with the kernel.
- Implement HalSetTimeIncrement to allow changing the clock ms increment (but this isn't yet respected).
- Remove system/runtime update routines from the deprecated IRQ implementation and use the newer assembly ones already written, since we're now using the HAL clock interrupt. Remove other unused code.
- Fix more bugs in new hal IRQ implementation (that still isn't used yet due to regressions) and implement HalClearSoftwareInterrupt.

svn path=/trunk/; revision=24908
2006-11-28 08:11:14 +00:00
Alex Ionescu 139ff99f50 - Cleanup HAL initialization code:
- Initailize the clock increment separately from the calibration of stall execution.
  - Raise IRQL to the current IRQL (basically a no-op) to force a standard PIC state. Will be needed for the new IRQ implementation when it'll work.
  - Scan commandline for PCILOCK and BREAK parameters during hal initalization. The former is not supported, only saved, while the latter causes a breakpoint just like the windows implemetnation.
  - Get the bus type (ISA, EISA, MCA) on startup to support bootup from NTLDR.
  - Validate HAL to match the kernel (checked kernel and UP kernel). Also make the kernel set the proper PRCB flags for this.
  - Initialize the CMOS lock.
  - Setup HAL Dispatch table and enable call to HalQuerySystemInformation in the kernel since it now works.
- Rewrite bus functions to get rid of the idea of "Bus handlers". This is a deprecated NT4 concept that ReactOS copied and only slows down performance.
  - Support custom private dispatch table PCI functions.
  - Provide default PCI functions.
  - Rewrite PCI functions using clean structures and code instead of magic macros and undocumented magic values. Use simple macros to generate PCI bus operations for write/read uchar, ushort and ulong.
  - Simplify function definitions for CMOS access.
  - Unify some dupli/tripi-cated code.
- Fix definition of HaliSetSystemInformation.
- Fix definitions of Bus Handler functions (add NTAPI).
- Add official BUS_HANDLER definition to NDK.
- Fix definition of HAL_PRIVATE_DISPATCH.
- Remove some derecated code (isa.c and mca.c).

svn path=/trunk/; revision=24872
2006-11-27 19:26:31 +00:00
Magnus Olsen aeea883a59 1. revers 24831 to 24833 userenv.h does not exists in ms psdk and shall move to folder include/ndk or include/reactos
2. do not create new private header, we already have one, but it is in wrong folder. 
3. This header should have been move long time ago. 
4. do not doing #include "userenv-priv.h" it will not found the header in syssetup/install
 

svn path=/trunk/; revision=24834
2006-11-26 10:39:50 +00:00
Johannes Anderwald 14d9f47180 - finally clean up userenv.h header
svn path=/trunk/; revision=24833
2006-11-26 10:10:29 +00:00
Magnus Olsen 2607f10229 get rid of some of vs warings when we are using our own objidl, it did forget #undef some interface
svn path=/trunk/; revision=24824
2006-11-25 14:43:29 +00:00
James Tabor 6499dbb80f Add Enhanced Meta File header pointer to local DC structure.
svn path=/trunk/; revision=24819
2006-11-24 08:53:59 +00:00
Magnus Olsen 97c3a7658a adding new ddraw.h header. we are delete wine ddraw.h header and using my header I wrote instead.
svn path=/trunk/; revision=24817
2006-11-23 21:49:29 +00:00
Magnus Olsen 4c93f74b77 adding some new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24816
2006-11-23 20:19:54 +00:00
Magnus Olsen 5a943e65b8 adding two new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24815
2006-11-23 20:13:17 +00:00
Magnus Olsen 708c9d5c71 adding one new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24814
2006-11-23 20:09:07 +00:00
Magnus Olsen 2700e7a12c adding two new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24813
2006-11-23 20:06:14 +00:00
Magnus Olsen 2d36c9b726 update : ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24812
2006-11-23 19:48:12 +00:00
Magnus Olsen 3ffeae3d50 update : ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24811
2006-11-23 18:49:17 +00:00
Magnus Olsen 5995f74c17 adding three new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24810
2006-11-23 18:41:41 +00:00
Magnus Olsen cc4a3eac21 1. adding two new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
2. change bit of layout in usbkern

svn path=/trunk/; revision=24809
2006-11-23 18:38:19 +00:00
Magnus Olsen dfeb2d6b14 adding two new ddk header, the info are base/got from windows xp ddk kit version 3790.1830
svn path=/trunk/; revision=24808
2006-11-23 18:35:38 +00:00
Aleksey Bragin b1d908abe5 comctl32 auto-winesync
svn path=/trunk/; revision=24806
2006-11-23 15:49:53 +00:00
Magnus Olsen 7635779c5e written header usbkern.h
svn path=/trunk/; revision=24803
2006-11-22 20:38:40 +00:00
Thomas Bluemel eb04d1528e - Correct definition of DbgPrompt
- Add definitions for the CSTRING structure

svn path=/trunk/; revision=24791
2006-11-19 21:14:49 +00:00
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