ntoskrnl.exe: Implemented a couple of time-related APIs.

This commit is contained in:
Alexandre Julliard 2007-05-18 16:48:54 +02:00
parent 73cc00f9a5
commit bd3a08b355
3 changed files with 43 additions and 3 deletions

View File

@ -130,6 +130,7 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff,
IO_STACK_LOCATION irpsp;
PDRIVER_DISPATCH dispatch = device->DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL];
NTSTATUS status;
LARGE_INTEGER count;
TRACE( "ioctl %x device %p in_size %u out_size %u\n", code, device, in_size, *out_size );
@ -159,6 +160,8 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff,
device->CurrentIrp = &irp;
KeQueryTickCount( &count ); /* update the global KeTickCount */
if (TRACE_ON(relay))
DPRINTF( "%04x:Call driver dispatch %p (device=%p,irp=%p)\n",
GetCurrentThreadId(), dispatch, device, &irp );
@ -415,6 +418,37 @@ void WINAPI ExFreePoolWithTag( void *ptr, ULONG tag )
}
/***********************************************************************
* KeQuerySystemTime (NTOSKRNL.EXE.@)
*/
void WINAPI KeQuerySystemTime( LARGE_INTEGER *time )
{
NtQuerySystemTime( time );
}
/***********************************************************************
* KeQueryTickCount (NTOSKRNL.EXE.@)
*/
void WINAPI KeQueryTickCount( LARGE_INTEGER *count )
{
count->QuadPart = NtGetTickCount();
/* update the global variable too */
KeTickCount.LowPart = count->u.LowPart;
KeTickCount.High1Time = count->u.HighPart;
KeTickCount.High2Time = count->u.HighPart;
}
/***********************************************************************
* KeQueryTimeIncrement (NTOSKRNL.EXE.@)
*/
ULONG WINAPI KeQueryTimeIncrement(void)
{
return 10000;
}
/***********************************************************************
* MmAllocateNonCachedMemory (NTOSKRNL.EXE.@)
*/
@ -493,11 +527,14 @@ NTSTATUS WINAPI PsSetCreateProcessNotifyRoutine( PCREATE_PROCESS_NOTIFY_ROUTINE
*/
BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
{
LARGE_INTEGER count;
switch(reason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls( inst );
RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
KeQueryTickCount( &count ); /* initialize the global KeTickCount */
break;
}
return TRUE;

View File

@ -573,9 +573,9 @@
@ stub KeQueryInterruptTime
@ stub KeQueryPriorityThread
@ stub KeQueryRuntimeThread
@ stub KeQuerySystemTime
@ stub KeQueryTickCount
@ stub KeQueryTimeIncrement
@ stdcall KeQuerySystemTime(ptr)
@ stdcall KeQueryTickCount(ptr)
@ stdcall KeQueryTimeIncrement()
@ stub KeRaiseUserException
@ stub KeReadStateEvent
@ stub KeReadStateMutant

View File

@ -874,6 +874,9 @@ NTSTATUS WINAPI IoDeleteSymbolicLink(UNICODE_STRING*);
PEPROCESS WINAPI IoGetCurrentProcess(void);
PKTHREAD WINAPI KeGetCurrentThread(void);
void WINAPI KeQuerySystemTime(LARGE_INTEGER*);
void WINAPI KeQueryTickCount(LARGE_INTEGER*);
ULONG WINAPI KeQueryTimeIncrement(void);
LPVOID WINAPI MmAllocateNonCachedMemory(SIZE_T);
void WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T);