- Subsystemization of Process Creation code. Memory code done by new Mm functions (not all used yet),
Kernel code done by Ke*, etc.
- Written to be compatible with the information in "Windows Internals".
- Optimized and cleaned up.
- ObInsertObject is now called at the end, fixing a plethora of wrong things that were covered with FIXMEs.
- PEB is allocated with a Memory Area, and so will TEB soon, which allows 4KB allocation without 64KB gra
nularity.
- System DLL Mapping/Loading has been changed to be cached at system bootup, resulting in faster code.
Also changed Peb to report NT 5.0
NOTE: Messy, more to come soon. The full benefits of this patch won't be realized until the complete changes
are in.
svn path=/trunk/; revision=14660
Corrected adapter index problem in iinfo.c. Now the index returned is from
IF->Index.
ninfo: ditto.
ip.c: Expose IPAddInterfaceRoute and IPRemoveInterfaceRoute for use by
set ip address IOCTL.
if.c: Allow deleting of TCP context.
main.c: Turn off debugging in CVS.
svn path=/trunk/; revision=14644
- IoAllocateVpb renamed to IopAllocateVpb and made cleaner
- Let ObCreateObject do all the memory allocation since the extra data belongs to the
object and it should be responsible for allocating it. No more extra pool allocations
or deallocations.
- Zero out everythign a single time.
- Remove useless code duplication
- Use proper I/O Manager types for the object headers.
- Honour Exclusive Flag, and Has Name Flag.
- Only initialize event if there is a volume.
- Initialize a VPB for Virtual Disks also.
- Set up Device Object Extension properly
- Set DO_DEVICE_INITIALIZING flag.
- Use proper sector sizes, don't hardcode 512 (should be 2048 for cds)
- Actually insert the object into the object table with ObInsertObject. This might seem
useless, but remember that's simply because ROS has a broken Ob Manager which does way
too much in ObCreateObject. It will be easier to use the rewrite if this is done properly.
- Set the right sizes in some places.
svn path=/trunk/; revision=14643
my local work to avoid duplication.
- Implemented IoRegisterBootDriverReinitialization, but routines don't actually get called yet.
- Created IopGetDeviceObjectPointer to deal with the case when the pointer is needed for an attach;
when this happens, a special (documented) flag should be sent to the driver, so that it can do any
internal routines to be ready for an attach.
- Fixed IoAttachDevice to use the Safe Attach routine and sent the IO_ATTACH_DEVICE_API flag (See above)
- Fixed IoAttachDeviceToDeviceStack to call the safe function.
- Optimized IoAttachDeviceByPointer
- Implemented IoAttachDeviceToDeviceStackSafe. Support Device Extension Attach semantics.
- Added various checks for unload/delete flags (that we never supported). Checks are pretty useless for now
since we don't use the flags, but I've added one during IoDeleteDevice.
- Implemented IoEnumerateDeviceObjectList. Should work, but untested.
- Implemented IoGetDeviceAttachmentBaseRef.
- Optimized IoGetRelatedDeviceObject.
- Made IoGetDeviceObjectPointer call the internal routine (see #2 above).
- Implemented IoDetachDevice.
- Removed IoOpenDeviceInstanceKey and IoQueryDeviceEnumInfo. Obsoleted, unimplemented, undocumented NT4 APIs.
- Various Attach/Detach fixes.
svn path=/trunk/; revision=14640