[NTOS]: Implement C version of KiServiceExit, the second system call exit routine. This one sets a new EAX value to be returned to the caller and is used by system calls.
[NTOS]: Implement NtContinue in C instead of ASM. Due to the changes above, this can now be done in C and use the new KiServiceExit.
svn path=/trunk/; revision=45142
[NTOS]: Implement system service exit (for system calls or KiServiceExit2) in KiExitTrap. Both iret (for user calls), jmp (for kernel calls) and sysexit (for user fast calls) are implemented.
[NTOS]: Implement KiThreadStartup in C instead of ASM. It is the first caller of the new KiServiceExit2. Threads now start up in C!
svn path=/trunk/; revision=45141
[NTOS]: Implement KiComputeTimerTableIndex in C instead of ASM. Based off eVb's ARM implementation, bugfixed to do correct math instead.
As a side effect, this should fix timers on ARM ;-)
svn path=/trunk/; revision=45140
Fix buffer overrun in ExFreePoolWithTag when dealing with a PoolType other than NonPagedPool and PagedPool. Spotted by Amine Khaldi.
svn path=/trunk/; revision=45134
KiTrap0DHandler: fix buffer overrun (Spotted by Amine Khaldi) and optimize the code by checking the counter variable, instead of Instruction, this works the same, but the compiler can make sense of it and safe one comparison.
svn path=/trunk/; revision=45132
- Implement -f and -i options
- Note: This raises our max ping data size to 65507 (0xFFFF - sizeof(IPv4Header) - sizeof(ICMPv4Header)) so we match linux's (iputils) ping max size but Windows' max is 65500 and I'm not sure if we should change our code to match Windows or not
svn path=/branches/aicom-network-branch/; revision=45129
- Fix a bug in the packet waiting code
- Display the IP address if getnameinfo fails
- tracert is actually useful now
svn path=/branches/aicom-network-branch/; revision=45094
- Move the TDI stuff from iphlpapi to a shared library called tdilib
[IP]
- Implement tcpip side of IP_HDRINCL
[PSDK, WSHTCPIP, WSHIRDA]
- Fix definition of WSHGetSocketInformation
[PSDK]
- Add AO_OPTION_* defines
[WSHTCPIP]
- Request notifications for bind also
- Implement WSHSetSocketInformation
[MSAFD]
- Implement event notifications (bonus: fixes a memory leak on socket closure due to unfreed helper context)
- Store TdiConnectionHandle the same way we store TdiAddressHandle
- Half-plement WSPSetSockOpt
- Fix WSPGetSockOpt
[TCPIP]
- Handle AO_OPTION_TTL, AO_OPTION_IP_DONTFRAGMENT (not working yet), AO_OPTION_BROADCAST (not working yet), and AO_OPTION_IP_HDRINCL
- Add new members of ADDRESS_FILE for the preceding AO options
[AFD]
- Return the connection handle in the Information of the IOSB (same as we do with the address file handle)
[GENERAL]
- Tracert works now
svn path=/branches/aicom-network-branch/; revision=45093
Patch by Jose Catena:
allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change
since esp was altered, but the definitions were not actually changed
See issue #5121 for more details.
svn path=/trunk/; revision=45088
- Switch to the new user handle manager. Added more handle types to win32k. One or two step to WND, desktop heap supported.
- Test with every application in my test suite. Needs more testing and clean up. Bleeding edge!
svn path=/trunk/; revision=45085
34969 Some ULONG / SIZE_T fixes, handle amd64 in PspCreateThread
34986 Fix several 64 bit issues
35968 Fix Size parameter of CmpAllpcate (ULONG->SIZE_T).
35970 Fix pointer <-> ULONG cast
35971 Fix pointer <-> ULONG cast fixes
36332 fix 64 bit warnings
37435 Fix several ULONG/ULONG_PTR issues. Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength
39522 ExInitializeSystemlookasideList: Use InitializeSListHead instead of directly accessing the members. ExpAllocateLocallyUniqueId: use InterlockedCompareExchange64 instead of non-portable ExfInterlockedCompareExchange64
37433 fix InterlockedExchangePointer usage
38105 Use KeGetCurrentPrcb() instead of KeGetPcr()->Prcb / KeGetPcr()->CurrentPrcb
39160 Use wbinvd instruction for amd64, too.
svn path=/trunk/; revision=45066
[NTOS]: Optimize trap entry/exit by manually copying registers to the trap frame the correct way from the first time. Avoids conversion between PUSHA and KTRAP_FRAMEs and makes trap frames compatible the whole time (other than being slightly faster).
[NTOS]: Provide compiler with hints on likely code paths during trap entry and exit, which makes the code more linear and improves performance. The following assumptions (known to be true) are made: (1) Interrupts happen more often than system calls (per unit of time), so prioritize paths we take during interrupts. (2) The CPU spends most of its time in Ring 3, so prioritize traps from user-mode. (3) V8086 mode, debugging, 16-bit stacks, are uncommon, so de-prioritize them.
[NTOS]: Use KTRAP_FRAME offset names recommended by Timo instead of substraction which was confusing some people (still seems clearer to me).
svn path=/trunk/; revision=45064