Well, I fixed all the other problems (I will skip my rant on how
""successful"" this peer review was.)
- ROS_EPROCESS was not covered by pshpack4.h/poppack.h like EPROCESS
was. This caused alignment mismatches when typecasting.
- SECTION_OBJECT was allocated with sizeof(SECTION_OBJECT), then freed
with sizeof(ROS_SECTION_OBJECT), and other similar size problems.
- The thread callback went from (IN BOOLEAN Create) to (IN SOMEENUM
Type), where Type 0 is create, and Type 1 is destroy. However the
calling logic was not reversed.
I am going to commit the patch tomorrow, then work on the following:
1) Undo the HANDLE_TABLE/HANDLE_TABLE_ENTRY hacks and see why they were
the cause of that strange APC_LEVEL assertion during mutex release.
2) Use PVOID Spare0[3]; in the real EPROCESS to store the LockThread and
LockCount, and change the lock implementation to allocate the event so
that the last spare can be used as a PKEVENT instead. Of course, once
pushlocks work, this should all go away, but like this, ROS_EPROCESS can
die.
3) Get rid of MADDRESS_SPACE and use the NT Type instead. I think most
fields can be mapped to the NT Type, without changing any of Filip's
implementation.
4) Write a local patch to use NT-style object directories, to avoid
using a list_entry and so that ROS_OBJECT_HEADER can become
OBJECT_HEADER again.
5) MSVC Support
Best regards,
Alex Ionescu