mirror of
https://github.com/reactos/reactos.git
synced 2025-05-17 16:27:00 +00:00
- Implement NtSetEventBoostPriority, NtGetCurrentProcessorNumber, NtQueryPortInformationProcess, NtWaitForMultipleObjects32.
svn path=/trunk/; revision=24635
This commit is contained in:
parent
20cab2c593
commit
4ccf5bf0a4
4 changed files with 92 additions and 8 deletions
|
@ -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 */
|
||||
|
|
|
@ -1692,5 +1692,12 @@ NtFlushInstructionCache (
|
|||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
NtGetCurrentProcessorNumber(VOID)
|
||||
{
|
||||
/* Just return the CPU */
|
||||
return KeGetCurrentProcessorNumber();
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue