-/* $Id: stubs.c,v 1.80 2004/07/08 00:40:30 weiden Exp $
+/* $Id: stubs.c,v 1.81 2004/07/30 19:18:39 jimtabor Exp $
*
* KERNEL32.DLL stubs (unimplemented functions)
* Remove from this file, if you implement them.
return 0;
}
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GetSystemTimes(
- LPFILETIME lpIdleTime,
- LPFILETIME lpKernelTime,
- LPFILETIME lpUserTime
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
/*
* @unimplemented
*/
return 0;
}
-/*
- * @unimplemented
- */
-HANDLE
-STDCALL
-OpenThread(
- DWORD dwDesiredAccess,
- BOOL bInheritHandle,
- DWORD dwThreadId
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
/*
* @unimplemented
*/
-/* $Id: time.c,v 1.29 2004/07/22 06:28:52 jimtabor Exp $
+/* $Id: time.c,v 1.30 2004/07/30 19:18:39 jimtabor Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
return TRUE;
}
+
+/*
+ * @implemented
+ */
+BOOL
+STDCALL
+GetSystemTimes(
+ LPFILETIME lpIdleTime,
+ LPFILETIME lpKernelTime,
+ LPFILETIME lpUserTime
+ )
+{
+ SYSTEM_PROCESSORTIME_INFO SysProcTime;
+ NTSTATUS Status;
+
+ Status = ZwQuerySystemInformation(SystemProcessorPerformanceInformation,
+ &SysProcTime,
+ sizeof(SysProcTime),
+ NULL);
+
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastErrorByStatus(Status);
+ return FALSE;
+ }
+/*
+ Good only for one processor system.
+ */
+
+ lpIdleTime->dwLowDateTime = SysProcTime.TotalProcessorRunTime.LowPart;
+ lpIdleTime->dwHighDateTime = SysProcTime.TotalProcessorRunTime.HighPart;
+
+ lpKernelTime->dwLowDateTime = SysProcTime.TotalProcessorTime.LowPart;
+ lpKernelTime->dwHighDateTime = SysProcTime.TotalProcessorTime.HighPart;
+
+ lpUserTime->dwLowDateTime = SysProcTime.TotalProcessorUserTime.LowPart;
+ lpUserTime->dwHighDateTime = SysProcTime.TotalProcessorUserTime.HighPart;
+
+ return TRUE;
+}
+
/* EOF */
-/* $Id: thread.c,v 1.50 2004/06/13 20:04:56 navaraf Exp $
+/* $Id: thread.c,v 1.51 2004/07/30 19:18:39 jimtabor Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
}
+/*
+ * @implemented
+ */
+HANDLE
+STDCALL
+OpenThread(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ DWORD dwThreadId
+ )
+{
+ NTSTATUS errCode;
+ HANDLE ThreadHandle;
+ OBJECT_ATTRIBUTES ObjectAttributes;
+ CLIENT_ID ClientId ;
+
+ ClientId.UniqueProcess = INVALID_HANDLE_VALUE;
+ ClientId.UniqueThread = (HANDLE)dwThreadId;
+
+ ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
+ ObjectAttributes.RootDirectory = (HANDLE)NULL;
+ ObjectAttributes.SecurityDescriptor = NULL;
+ ObjectAttributes.SecurityQualityOfService = NULL;
+ ObjectAttributes.ObjectName = NULL;
+
+ if (bInheritHandle == TRUE)
+ ObjectAttributes.Attributes = OBJ_INHERIT;
+ else
+ ObjectAttributes.Attributes = 0;
+
+ errCode = NtOpenThread(&ThreadHandle,
+ dwDesiredAccess,
+ &ObjectAttributes,
+ &ClientId);
+ if (!NT_SUCCESS(errCode))
+ {
+ SetLastErrorByStatus (errCode);
+ return NULL;
+ }
+ return ThreadHandle;
+}
+
+
/*
* @implemented
*/