- Implement NtSetEventBoostPriority, NtGetCurrentProcessorNumber, NtQueryPortInformationProcess, NtWaitForMultipleObjects32.

svn path=/trunk/; revision=24635
This commit is contained in:
Alex Ionescu 2006-10-23 20:49:52 +00:00
parent 20cab2c593
commit 4ccf5bf0a4
4 changed files with 92 additions and 8 deletions

View file

@ -463,7 +463,7 @@ NtSetEvent(IN HANDLE EventHandle,
EventHandle, PreviousState);
/* Check if we were called from user-mode */
if((PreviousState) && (PreviousMode != KernelMode))
if ((PreviousState) && (PreviousMode != KernelMode))
{
/* Entry SEH Block */
_SEH_TRY
@ -488,16 +488,14 @@ NtSetEvent(IN HANDLE EventHandle,
PreviousMode,
(PVOID*)&Event,
NULL);
/* Check for success */
if(NT_SUCCESS(Status))
if (NT_SUCCESS(Status))
{
/* Set the Event */
LONG Prev = KeSetEvent(Event, EVENT_INCREMENT, FALSE);
ObDereferenceObject(Event);
/* Check if caller wants the old state back */
if(PreviousState)
if (PreviousState)
{
/* Entry SEH Block for return */
_SEH_TRY
@ -511,10 +509,39 @@ NtSetEvent(IN HANDLE EventHandle,
}
_SEH_END;
}
}
}
/* Return Status */
return Status;
/* Return Status */
return Status;
}
/*
* @implemented
*/
NTSTATUS
NTAPI
NtSetEventBoostPriority(IN HANDLE EventHandle)
{
PKEVENT Event;
NTSTATUS Status;
PAGED_CODE();
/* Open the Object */
Status = ObReferenceObjectByHandle(EventHandle,
EVENT_MODIFY_STATE,
ExEventObjectType,
ExGetPreviousMode(),
(PVOID*)&Event,
NULL);
if (NT_SUCCESS(Status))
{
/* Set the Event */
KeSetEventBoostPriority(Event, NULL);
ObDereferenceObject(Event);
}
/* Return Status */
return Status;
}
/* EOF */

View file

@ -1692,5 +1692,12 @@ NtFlushInstructionCache (
return STATUS_SUCCESS;
}
ULONG
NTAPI
NtGetCurrentProcessorNumber(VOID)
{
/* Just return the CPU */
return KeGetCurrentProcessorNumber();
}
/* EOF */

View file

@ -133,4 +133,12 @@ NtImpersonateClientOfPort (HANDLE PortHandle,
return(STATUS_NOT_IMPLEMENTED);
}
NTSTATUS
NTAPI
NtQueryPortInformationProcess(VOID)
{
/* This is all this function does */
return STATUS_UNSUCCESSFUL;
}
/* EOF */

View file

@ -277,6 +277,48 @@ Quickie:
return Status;
}
/*++
* @name NtWaitForMultipleObjects32
* @implemented NT5.1
*
* The NtWaitForMultipleObjects32 routine <FILLMEIN>
*
* @param ObjectCount
* <FILLMEIN>
*
* @param HandleArray
* <FILLMEIN>
*
* @param WaitType
* <FILLMEIN>
*
* @param Alertable
* <FILLMEIN>
*
* @param TimeOut
* <FILLMEIN>
*
* @return STATUS_SUCCESS or appropriate error value.
*
* @remarks None.
*
*--*/
NTSTATUS
NTAPI
NtWaitForMultipleObjects32(IN ULONG ObjectCount,
IN PLONG Handles,
IN WAIT_TYPE WaitType,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER TimeOut OPTIONAL)
{
/* FIXME WOW64 */
return NtWaitForMultipleObjects(ObjectCount,
(PHANDLE)Handles,
WaitType,
Alertable,
TimeOut);
}
/*++
* @name NtWaitForSingleObject
* @implemented NT4