source: trunk/src/kernel32/hmthread.h@ 9748

Last change on this file since 9748 was 9748, checked in by sandervl, 23 years ago

Support DuplicateHandle for threads; cleaned up semaphore code

File size: 3.0 KB
Line 
1/* $Id: hmthread.h,v 1.5 2003-02-04 11:29:01 sandervl Exp $ */
2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 *
6 * Win32 thread handle class
7 *
8 * Copyright 2000 Sander van Leeuwen (sandervl@xs4all.nl)
9 *
10 */
11
12#ifndef __HMTHREAD_H__
13#define __HMTHREAD_H__
14
15#include "HMDevice.h"
16#include "HMOpen32.h"
17
18#define THREAD_TERMINATED 0
19#define THREAD_ALIVE 1
20
21class HMDeviceThreadClass : public HMDeviceOpen32Class
22{
23public:
24 HMDeviceThreadClass(LPCSTR lpDeviceName) : HMDeviceOpen32Class(lpDeviceName) {}
25
26 virtual HANDLE CreateThread(PHMHANDLEDATA pHMHandleData,
27 LPSECURITY_ATTRIBUTES lpsa,
28 DWORD cbStack,
29 LPTHREAD_START_ROUTINE lpStartAddr,
30 LPVOID lpvThreadParm,
31 DWORD fdwCreate,
32 LPDWORD lpIDThread,
33 BOOL fFirstThread);
34
35 /* this is a handler method for calls to WaitForSingleObject */
36 virtual DWORD WaitForSingleObject(PHMHANDLEDATA pHMHandleData,
37 DWORD dwTimeout);
38
39 /* this is a handler method for calls to WaitForSingleObjectEx */
40 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData,
41 DWORD dwTimeout,
42 BOOL fAlertable);
43
44 virtual INT GetThreadPriority(HANDLE hThread, PHMHANDLEDATA pHMHandleData);
45 virtual DWORD SuspendThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData);
46 virtual BOOL SetThreadPriority(HANDLE hThread, PHMHANDLEDATA pHMHandleData, int priority);
47
48 virtual BOOL DuplicateHandle(HANDLE srchandle, PHMHANDLEDATA pHMHandleData, HANDLE srcprocess,
49 PHMHANDLEDATA pHMSrcHandle,
50 HANDLE destprocess,
51 PHANDLE desthandle,
52 DWORD fdwAccess,
53 BOOL fInherit,
54 DWORD fdwOptions,
55 DWORD fdwOdinOptions);
56
57 virtual BOOL GetThreadContext(HANDLE hThread, PHMHANDLEDATA pHMHandleData, PCONTEXT lpContext);
58 virtual BOOL SetThreadContext(HANDLE hThread, PHMHANDLEDATA pHMHandleData, const CONTEXT *lpContext);
59
60 virtual BOOL GetThreadTimes(HANDLE hThread, PHMHANDLEDATA pHMHandleData,
61 LPFILETIME lpCreationTime, LPFILETIME lpExitTime,
62 LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
63
64 virtual BOOL TerminateThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData, DWORD exitcode);
65 virtual DWORD ResumeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData);
66 virtual BOOL GetExitCodeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData, LPDWORD lpExitCode);
67 virtual BOOL SetThreadTerminated(HANDLE hThread, PHMHANDLEDATA pHMHandleData);
68
69 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
70};
71
72
73#endif // __HMTHREAD_H__
Note: See TracBrowser for help on using the repository browser.