From a05334c8b553daff7b07171637c884b2e18c6a78 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 18 Sep 2012 00:10:14 -0400 Subject: [PATCH] libwinpr-handle: add definitions for objects --- winpr/include/winpr/handle.h | 30 ++++++++++++++++++++++++++++++ winpr/include/winpr/thread.h | 3 +++ winpr/libwinpr/handle/handle.c | 13 +++++++++++++ winpr/libwinpr/thread/thread.c | 11 +++++++++++ 4 files changed, 57 insertions(+) diff --git a/winpr/include/winpr/handle.h b/winpr/include/winpr/handle.h index 284677f..b54d6e1 100644 --- a/winpr/include/winpr/handle.h +++ b/winpr/include/winpr/handle.h @@ -25,6 +25,36 @@ #include #include #include +#include + +#define OBJ_INHERIT 0x00000002 +#define OBJ_PERMANENT 0x00000010 +#define OBJ_EXCLUSIVE 0x00000020 +#define OBJ_CASE_INSENSITIVE 0x00000040 +#define OBJ_OPENIF 0x00000080 +#define OBJ_OPENLINK 0x00000100 +#define OBJ_KERNEL_HANDLE 0x00000200 +#define OBJ_FORCE_ACCESS_CHECK 0x00000400 +#define OBJ_VALID_ATTRIBUTES 0x000007F2 + +typedef struct _OBJECT_ATTRIBUTES +{ + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; + +#define InitializeObjectAttributes(p, n, a, r, s) { \ + (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ + (p)->RootDirectory = (r); \ + (p)->Attributes = (a); \ + (p)->ObjectName = (n); \ + (p)->SecurityDescriptor = (s); \ + (p)->SecurityQualityOfService = NULL; \ +} #ifndef _WIN32 diff --git a/winpr/include/winpr/thread.h b/winpr/include/winpr/thread.h index d9e7d67..1957c83 100644 --- a/winpr/include/winpr/thread.h +++ b/winpr/include/winpr/thread.h @@ -107,6 +107,9 @@ WINPR_API BOOL CreateProcessAsUserW(HANDLE hToken, LPCWSTR lpApplicationName, LP #define CreateProcessAsUser CreateProcessAsUserA #endif +WINPR_API HANDLE CreateRemoteThread(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId); + WINPR_API HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); diff --git a/winpr/libwinpr/handle/handle.c b/winpr/libwinpr/handle/handle.c index 6f9f9c7..0522049 100644 --- a/winpr/libwinpr/handle/handle.c +++ b/winpr/libwinpr/handle/handle.c @@ -25,6 +25,19 @@ #ifndef _WIN32 +typedef struct _HANDLE_TABLE_ENTRY +{ + PVOID Object; + ULONG ObAttributes; + ULONG Value; +} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; + +typedef struct _HANDLE_TABLE +{ + LONG Count; + PHANDLE_TABLE_ENTRY* Handles; +} HANDLE_TABLE, *PHANDLE_TABLE; + #if defined __APPLE__ #include #include diff --git a/winpr/libwinpr/thread/thread.c b/winpr/libwinpr/thread/thread.c index c0d6319..a45e22b 100644 --- a/winpr/libwinpr/thread/thread.c +++ b/winpr/libwinpr/thread/thread.c @@ -125,6 +125,12 @@ BOOL CreateProcessAsUserW(HANDLE hToken, LPCWSTR lpApplicationName, LPWSTR lpCom return TRUE; } +HANDLE CreateRemoteThread(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId) +{ + return NULL; +} + HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId) { @@ -170,6 +176,11 @@ DWORD GetCurrentThreadId(VOID) return 0; } +DWORD GetProcessId(HANDLE Process) +{ + return 0; +} + DWORD ResumeThread(HANDLE hThread) { return 0; -- 2.7.4