From bd7ddb9c254fc4e94edc4a4be286c19a82cc8c09 Mon Sep 17 00:00:00 2001 From: wj32 Date: Sat, 24 Jul 2010 06:51:35 +0000 Subject: [PATCH] added phlib exports git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3422 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- 2.x/trunk/ProcessHacker/ProcessHacker.vcproj | 20 +- .../ProcessHacker/{support.c => appsup.c} | 0 2.x/trunk/ProcessHacker/include/phapp.h | 2 +- 2.x/trunk/phlib/include/fastlock.h | 42 +- 2.x/trunk/phlib/include/graph.h | 3 + 2.x/trunk/phlib/include/hexedit.h | 1 + 2.x/trunk/phlib/include/kph.h | 48 +- 2.x/trunk/phlib/include/ph.h | 257 +++++++++ 2.x/trunk/phlib/include/phbase.h | 505 ++++++++++++++---- 2.x/trunk/phlib/include/phgui.h | 47 ++ 2.x/trunk/phlib/include/queuedlock.h | 55 +- 2.x/trunk/phlib/include/ref.h | 69 ++- 12 files changed, 905 insertions(+), 144 deletions(-) rename 2.x/trunk/ProcessHacker/{support.c => appsup.c} (100%) diff --git a/2.x/trunk/ProcessHacker/ProcessHacker.vcproj b/2.x/trunk/ProcessHacker/ProcessHacker.vcproj index 0ccf88c95..326b3e3f2 100644 --- a/2.x/trunk/ProcessHacker/ProcessHacker.vcproj +++ b/2.x/trunk/ProcessHacker/ProcessHacker.vcproj @@ -47,7 +47,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="../phlib/include;../phlib/pcre;include" - PreprocessorDefinitions="WIN32;DEBUG;_WINDOWS" + PreprocessorDefinitions="WIN32;DEBUG;_WINDOWS;PHLIB_EXPORT" StringPooling="true" MinimalRebuild="false" BasicRuntimeChecks="3" @@ -128,7 +128,7 @@ AdditionalOptions="/MP" Optimization="0" AdditionalIncludeDirectories="../phlib/include;../phlib/pcre;include" - PreprocessorDefinitions="WIN64;DEBUG;_WINDOWS" + PreprocessorDefinitions="WIN64;DEBUG;_WINDOWS;PHLIB_EXPORT" StringPooling="true" MinimalRebuild="false" BasicRuntimeChecks="3" @@ -211,7 +211,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories="../phlib/include;../phlib/pcre;include" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PHLIB_EXPORT" StringPooling="true" RuntimeLibrary="0" BufferSecurityCheck="false" @@ -296,7 +296,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories="../phlib/include;../phlib/pcre;include" - PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS" + PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS;PHLIB_EXPORT" StringPooling="true" RuntimeLibrary="0" BufferSecurityCheck="false" @@ -357,8 +357,6 @@ + + @@ -828,10 +832,6 @@ RelativePath=".\ssndmsg.c" > - - diff --git a/2.x/trunk/ProcessHacker/support.c b/2.x/trunk/ProcessHacker/appsup.c similarity index 100% rename from 2.x/trunk/ProcessHacker/support.c rename to 2.x/trunk/ProcessHacker/appsup.c diff --git a/2.x/trunk/ProcessHacker/include/phapp.h b/2.x/trunk/ProcessHacker/include/phapp.h index 31ff19026..2b663f563 100644 --- a/2.x/trunk/ProcessHacker/include/phapp.h +++ b/2.x/trunk/ProcessHacker/include/phapp.h @@ -260,7 +260,7 @@ VOID PhWriteProcessTree( __inout PPH_FILE_STREAM FileStream ); -// support +// appsup BOOLEAN PhGetProcessIsSuspended( __in PSYSTEM_PROCESS_INFORMATION Process diff --git a/2.x/trunk/phlib/include/fastlock.h b/2.x/trunk/phlib/include/fastlock.h index 92917ba8f..ccaa101e8 100644 --- a/2.x/trunk/phlib/include/fastlock.h +++ b/2.x/trunk/phlib/include/fastlock.h @@ -14,41 +14,67 @@ typedef struct _PH_FAST_LOCK VOID PhFastLockInitialization(); -VOID PhInitializeFastLock( +PHLIBAPI +VOID +NTAPI +PhInitializeFastLock( __out PPH_FAST_LOCK FastLock ); -VOID PhDeleteFastLock( +PHLIBAPI +VOID +NTAPI +PhDeleteFastLock( __inout PPH_FAST_LOCK FastLock ); #define PhAcquireFastLockExclusive PhfAcquireFastLockExclusive -__mayRaise VOID FASTCALL PhfAcquireFastLockExclusive( +__mayRaise +PHLIBAPI +VOID +FASTCALL +PhfAcquireFastLockExclusive( __inout PPH_FAST_LOCK FastLock ); #define PhAcquireFastLockShared PhfAcquireFastLockShared -__mayRaise VOID FASTCALL PhfAcquireFastLockShared( +__mayRaise +PHLIBAPI +VOID +FASTCALL +PhfAcquireFastLockShared( __inout PPH_FAST_LOCK FastLock ); #define PhReleaseFastLockExclusive PhfReleaseFastLockExclusive -VOID FASTCALL PhfReleaseFastLockExclusive( +PHLIBAPI +VOID +FASTCALL +PhfReleaseFastLockExclusive( __inout PPH_FAST_LOCK FastLock ); #define PhReleaseFastLockShared PhfReleaseFastLockShared -VOID FASTCALL PhfReleaseFastLockShared( +PHLIBAPI +VOID +FASTCALL +PhfReleaseFastLockShared( __inout PPH_FAST_LOCK FastLock ); #define PhTryAcquireFastLockExclusive PhfTryAcquireFastLockExclusive -BOOLEAN FASTCALL PhfTryAcquireFastLockExclusive( +PHLIBAPI +BOOLEAN +FASTCALL +PhfTryAcquireFastLockExclusive( __inout PPH_FAST_LOCK FastLock ); #define PhTryAcquireFastLockShared PhfTryAcquireFastLockShared -BOOLEAN FASTCALL PhfTryAcquireFastLockShared( +PHLIBAPI +BOOLEAN +FASTCALL +PhfTryAcquireFastLockShared( __inout PPH_FAST_LOCK FastLock ); diff --git a/2.x/trunk/phlib/include/graph.h b/2.x/trunk/phlib/include/graph.h index 23971c026..5e94b95b1 100644 --- a/2.x/trunk/phlib/include/graph.h +++ b/2.x/trunk/phlib/include/graph.h @@ -50,11 +50,13 @@ typedef struct _PH_GRAPH_DRAW_INFO BOOLEAN PhGraphControlInitialization(); +PHLIBAPI VOID PhDrawGraph( __in HDC hdc, __in PPH_GRAPH_DRAW_INFO DrawInfo ); +PHLIBAPI VOID PhSetGraphText( __in HDC hdc, __inout PPH_GRAPH_DRAW_INFO DrawInfo, @@ -64,6 +66,7 @@ VOID PhSetGraphText( __in ULONG Align ); +PHLIBAPI HWND PhCreateGraphControl( __in HWND ParentHandle, __in INT_PTR Id diff --git a/2.x/trunk/phlib/include/hexedit.h b/2.x/trunk/phlib/include/hexedit.h index 79fe1e7c1..d2a1c254c 100644 --- a/2.x/trunk/phlib/include/hexedit.h +++ b/2.x/trunk/phlib/include/hexedit.h @@ -10,6 +10,7 @@ BOOLEAN PhHexEditInitialization(); +PHLIBAPI HWND PhCreateHexEditControl( __in HWND ParentHandle, __in INT_PTR Id diff --git a/2.x/trunk/phlib/include/kph.h b/2.x/trunk/phlib/include/kph.h index e0906f869..bffa1ff4a 100644 --- a/2.x/trunk/phlib/include/kph.h +++ b/2.x/trunk/phlib/include/kph.h @@ -122,37 +122,42 @@ typedef struct _ETWREG_BASIC_INFORMATION ULONG_PTR SessionId; } ETWREG_BASIC_INFORMATION, *PETWREG_BASIC_INFORMATION; -NTSTATUS KphInit(); - +PHLIBAPI NTSTATUS KphConnect( __out PHANDLE KphHandle, __in_opt PWSTR DeviceName ); +PHLIBAPI NTSTATUS KphConnect2( __out PHANDLE KphHandle, __in_opt PWSTR DeviceName, __in PWSTR FileName ); +PHLIBAPI NTSTATUS KphDisconnect( __in HANDLE KphHandle ); +PHLIBAPI NTSTATUS KphInstall( __in_opt PWSTR DeviceName, __in PWSTR FileName ); +PHLIBAPI NTSTATUS KphUninstall( __in_opt PWSTR DeviceName ); +PHLIBAPI NTSTATUS KphGetFeatures( __in HANDLE KphHandle, __out PULONG Features ); +PHLIBAPI NTSTATUS KphOpenProcess( __in HANDLE KphHandle, __out PHANDLE ProcessHandle, @@ -160,6 +165,7 @@ NTSTATUS KphOpenProcess( __in ACCESS_MASK DesiredAccess ); +PHLIBAPI NTSTATUS KphOpenProcessToken( __in HANDLE KphHandle, __out PHANDLE TokenHandle, @@ -167,6 +173,7 @@ NTSTATUS KphOpenProcessToken( __in ACCESS_MASK DesiredAccess ); +PHLIBAPI NTSTATUS KphOpenProcessJob( __in HANDLE KphHandle, __out PHANDLE JobHandle, @@ -174,22 +181,26 @@ NTSTATUS KphOpenProcessJob( __in ACCESS_MASK DesiredAccess ); +PHLIBAPI NTSTATUS KphSuspendProcess( __in HANDLE KphHandle, __in HANDLE ProcessHandle ); +PHLIBAPI NTSTATUS KphResumeProcess( __in HANDLE KphHandle, __in HANDLE ProcessHandle ); +PHLIBAPI NTSTATUS KphTerminateProcess( __in HANDLE KphHandle, __in HANDLE ProcessHandle, __in NTSTATUS ExitStatus ); +PHLIBAPI NTSTATUS KphReadVirtualMemory( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -199,6 +210,7 @@ NTSTATUS KphReadVirtualMemory( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphWriteVirtualMemory( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -208,6 +220,7 @@ NTSTATUS KphWriteVirtualMemory( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphUnsafeReadVirtualMemory( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -217,30 +230,35 @@ NTSTATUS KphUnsafeReadVirtualMemory( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphGetProcessProtected( __in HANDLE KphHandle, __in HANDLE ProcessId, __out PBOOLEAN IsProtected ); +PHLIBAPI NTSTATUS KphSetProcessProtected( __in HANDLE KphHandle, __in HANDLE ProcessId, __in BOOLEAN IsProtected ); +PHLIBAPI NTSTATUS KphSetExecuteOptions( __in HANDLE KphHandle, __in HANDLE ProcessHandle, __in ULONG ExecuteOptions ); +PHLIBAPI NTSTATUS KphSetProcessToken( __in HANDLE KphHandle, __in HANDLE SourceProcessId, __in HANDLE TargetProcessId ); +PHLIBAPI NTSTATUS KphQueryInformationProcess( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -250,6 +268,7 @@ NTSTATUS KphQueryInformationProcess( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphQueryInformationThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, @@ -259,6 +278,7 @@ NTSTATUS KphQueryInformationThread( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphSetInformationProcess( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -267,6 +287,7 @@ NTSTATUS KphSetInformationProcess( __in ULONG ProcessInformationLength ); +PHLIBAPI NTSTATUS KphSetInformationThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, @@ -275,6 +296,7 @@ NTSTATUS KphSetInformationThread( __in ULONG ThreadInformationLength ); +PHLIBAPI NTSTATUS KphOpenThread( __in HANDLE KphHandle, __out PHANDLE ThreadHandle, @@ -282,6 +304,7 @@ NTSTATUS KphOpenThread( __in ACCESS_MASK DesiredAccess ); +PHLIBAPI NTSTATUS KphOpenThreadProcess( __in HANDLE KphHandle, __out PHANDLE ProcessHandle, @@ -289,30 +312,35 @@ NTSTATUS KphOpenThreadProcess( __in ACCESS_MASK DesiredAccess ); +PHLIBAPI NTSTATUS KphTerminateThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __in NTSTATUS ExitStatus ); +PHLIBAPI NTSTATUS KphDangerousTerminateThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __in NTSTATUS ExitStatus ); +PHLIBAPI NTSTATUS KphGetContextThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __inout PCONTEXT ThreadContext ); +PHLIBAPI NTSTATUS KphSetContextThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __in PCONTEXT ThreadContext ); +PHLIBAPI NTSTATUS KphCaptureStackBackTraceThread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, @@ -323,18 +351,21 @@ NTSTATUS KphCaptureStackBackTraceThread( __out_opt PULONG BackTraceHash ); +PHLIBAPI NTSTATUS KphGetThreadWin32Thread( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __out PPVOID Win32Thread ); +PHLIBAPI NTSTATUS KphAssignImpersonationToken( __in HANDLE KphHandle, __in HANDLE ThreadHandle, __in HANDLE TokenHandle ); +PHLIBAPI NTSTATUS KphQueryProcessHandles( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -343,6 +374,7 @@ NTSTATUS KphQueryProcessHandles( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphGetHandleObjectName( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -352,6 +384,7 @@ NTSTATUS KphGetHandleObjectName( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphZwQueryObject( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -362,6 +395,7 @@ NTSTATUS KphZwQueryObject( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphDuplicateObject( __in HANDLE KphHandle, __in HANDLE SourceProcessHandle, @@ -373,6 +407,7 @@ NTSTATUS KphDuplicateObject( __in ULONG Options ); +PHLIBAPI NTSTATUS KphSetHandleAttributes( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -380,12 +415,14 @@ NTSTATUS KphSetHandleAttributes( __in ULONG Flags ); +PHLIBAPI NTSTATUS KphSetHandleGrantedAccess( __in HANDLE KphHandle, __in HANDLE Handle, __in ACCESS_MASK GrantedAccess ); +PHLIBAPI NTSTATUS KphGetProcessId( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -393,6 +430,7 @@ NTSTATUS KphGetProcessId( __out PHANDLE ProcessId ); +PHLIBAPI NTSTATUS KphGetThreadId( __in HANDLE KphHandle, __in HANDLE ProcessHandle, @@ -401,6 +439,7 @@ NTSTATUS KphGetThreadId( __out_opt PHANDLE ProcessId ); +PHLIBAPI NTSTATUS KphOpenNamedObject( __in HANDLE KphHandle, __out PHANDLE Handle, @@ -408,6 +447,7 @@ NTSTATUS KphOpenNamedObject( __in POBJECT_ATTRIBUTES ObjectAttributes ); +PHLIBAPI NTSTATUS KphOpenDirectoryObject( __in HANDLE KphHandle, __out PHANDLE DirectoryHandle, @@ -415,12 +455,14 @@ NTSTATUS KphOpenDirectoryObject( __in POBJECT_ATTRIBUTES ObjectAttributes ); +PHLIBAPI NTSTATUS KphOpenDriver( __in HANDLE KphHandle, __out PHANDLE DriverHandle, __in POBJECT_ATTRIBUTES ObjectAttributes ); +PHLIBAPI NTSTATUS KphQueryInformationDriver( __in HANDLE KphHandle, __in HANDLE DriverHandle, @@ -430,12 +472,14 @@ NTSTATUS KphQueryInformationDriver( __out_opt PULONG ReturnLength ); +PHLIBAPI NTSTATUS KphOpenType( __in HANDLE KphHandle, __out PHANDLE TypeHandle, __in POBJECT_ATTRIBUTES ObjectAttributes ); +PHLIBAPI NTSTATUS KphQueryInformationEtwReg( __in HANDLE KphHandle, __in HANDLE ProcessHandle, diff --git a/2.x/trunk/phlib/include/ph.h b/2.x/trunk/phlib/include/ph.h index 5bbe9d042..a9563ddb8 100644 --- a/2.x/trunk/phlib/include/ph.h +++ b/2.x/trunk/phlib/include/ph.h @@ -69,30 +69,35 @@ typedef struct _PH_THREAD_STACK_FRAME PVOID Params[4]; } PH_THREAD_STACK_FRAME, *PPH_THREAD_STACK_FRAME; +PHLIBAPI NTSTATUS PhOpenProcess( __out PHANDLE ProcessHandle, __in ACCESS_MASK DesiredAccess, __in HANDLE ProcessId ); +PHLIBAPI NTSTATUS PhOpenThread( __out PHANDLE ThreadHandle, __in ACCESS_MASK DesiredAccess, __in HANDLE ThreadId ); +PHLIBAPI NTSTATUS PhOpenThreadProcess( __out PHANDLE ProcessHandle, __in ACCESS_MASK DesiredAccess, __in HANDLE ThreadHandle ); +PHLIBAPI NTSTATUS PhOpenProcessToken( __out PHANDLE TokenHandle, __in ACCESS_MASK DesiredAccess, __in HANDLE ProcessHandle ); +PHLIBAPI NTSTATUS PhOpenThreadToken( __out PHANDLE TokenHandle, __in ACCESS_MASK DesiredAccess, @@ -100,56 +105,67 @@ NTSTATUS PhOpenThreadToken( __in BOOLEAN OpenAsSelf ); +PHLIBAPI NTSTATUS PhGetObjectSecurity( __in HANDLE Handle, __in SECURITY_INFORMATION SecurityInformation, __out PSECURITY_DESCRIPTOR *SecurityDescriptor ); +PHLIBAPI NTSTATUS PhSetObjectSecurity( __in HANDLE Handle, __in SECURITY_INFORMATION SecurityInformation, __in PSECURITY_DESCRIPTOR SecurityDescriptor ); +PHLIBAPI NTSTATUS PhTerminateProcess( __in HANDLE ProcessHandle, __in NTSTATUS ExitStatus ); +PHLIBAPI NTSTATUS PhSuspendProcess( __in HANDLE ProcessHandle ); +PHLIBAPI NTSTATUS PhResumeProcess( __in HANDLE ProcessHandle ); +PHLIBAPI NTSTATUS PhTerminateThread( __in HANDLE ThreadHandle, __in NTSTATUS ExitStatus ); +PHLIBAPI NTSTATUS PhSuspendThread( __in HANDLE ThreadHandle, __out_opt PULONG PreviousSuspendCount ); +PHLIBAPI NTSTATUS PhResumeThread( __in HANDLE ThreadHandle, __out_opt PULONG PreviousSuspendCount ); +PHLIBAPI NTSTATUS PhGetThreadContext( __in HANDLE ThreadHandle, __inout PCONTEXT Context ); +PHLIBAPI NTSTATUS PhSetThreadContext( __in HANDLE ThreadHandle, __in PCONTEXT Context ); +PHLIBAPI NTSTATUS PhReadVirtualMemory( __in HANDLE ProcessHandle, __in PVOID BaseAddress, @@ -158,6 +174,7 @@ NTSTATUS PhReadVirtualMemory( __out_opt PSIZE_T NumberOfBytesRead ); +PHLIBAPI NTSTATUS PhWriteVirtualMemory( __in HANDLE ProcessHandle, __in PVOID BaseAddress, @@ -166,26 +183,31 @@ NTSTATUS PhWriteVirtualMemory( __out_opt PSIZE_T NumberOfBytesWritten ); +PHLIBAPI NTSTATUS PhGetProcessBasicInformation( __in HANDLE ProcessHandle, __out PPROCESS_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetProcessExtendedBasicInformation( __in HANDLE ProcessHandle, __out PPROCESS_EXTENDED_BASIC_INFORMATION ExtendedBasicInformation ); +PHLIBAPI NTSTATUS PhGetProcessTimes( __in HANDLE ProcessHandle, __out PKERNEL_USER_TIMES Times ); +PHLIBAPI NTSTATUS PhGetProcessImageFileName( __in HANDLE ProcessHandle, __out PPH_STRING *FileName ); +PHLIBAPI NTSTATUS PhGetProcessImageFileNameWin32( __in HANDLE ProcessHandle, __out PPH_STRING *FileName @@ -204,62 +226,74 @@ NTSTATUS PhGetProcessImageFileNameWin32( #define PhGetProcessCommandLine(ProcessHandle, String) \ PhGetProcessPebString(ProcessHandle, PhpoCommandLine, String) +PHLIBAPI NTSTATUS PhGetProcessPebString( __in HANDLE ProcessHandle, __in PH_PEB_OFFSET Offset, __out PPH_STRING *String ); +PHLIBAPI NTSTATUS PhGetProcessSessionId( __in HANDLE ProcessHandle, __out PULONG SessionId ); +PHLIBAPI NTSTATUS PhGetProcessExecuteFlags( __in HANDLE ProcessHandle, __out PULONG ExecuteFlags ); +PHLIBAPI NTSTATUS PhGetProcessIsWow64( __in HANDLE ProcessHandle, __out PBOOLEAN IsWow64 ); +PHLIBAPI NTSTATUS PhGetProcessPeb32( __in HANDLE ProcessHandle, __out PPVOID Peb32 ); +PHLIBAPI NTSTATUS PhGetProcessIsBeingDebugged( __in HANDLE ProcessHandle, __out PBOOLEAN IsBeingDebugged ); +PHLIBAPI NTSTATUS PhGetProcessDebugObject( __in HANDLE ProcessHandle, __out PHANDLE DebugObjectHandle ); +PHLIBAPI NTSTATUS PhGetProcessIoPriority( __in HANDLE ProcessHandle, __out PULONG IoPriority ); +PHLIBAPI NTSTATUS PhGetProcessPagePriority( __in HANDLE ProcessHandle, __out PULONG PagePriority ); +PHLIBAPI NTSTATUS PhGetProcessIsPosix( __in HANDLE ProcessHandle, __out PBOOLEAN IsPosix ); +PHLIBAPI NTSTATUS PhGetProcessCycleTime( __in HANDLE ProcessHandle, __out PULONG64 CycleTime ); +PHLIBAPI NTSTATUS PhGetProcessConsoleHostProcessId( __in HANDLE ProcessHandle, __out PHANDLE ConsoleHostProcessId @@ -269,38 +303,45 @@ NTSTATUS PhGetProcessConsoleHostProcessId( #define PH_PROCESS_DEP_ATL_THUNK_EMULATION_DISABLED 0x2 #define PH_PROCESS_DEP_PERMANENT 0x4 +PHLIBAPI NTSTATUS PhGetProcessDepStatus( __in HANDLE ProcessHandle, __out PULONG DepStatus ); +PHLIBAPI NTSTATUS PhGetProcessPosixCommandLine( __in HANDLE ProcessHandle, __out PPH_STRING *CommandLine ); +PHLIBAPI NTSTATUS PhGetProcessEnvironmentVariables( __in HANDLE ProcessHandle, __out PPH_ENVIRONMENT_VARIABLE *Variables, __out PULONG NumberOfVariables ); +PHLIBAPI VOID PhFreeProcessEnvironmentVariables( __in PPH_ENVIRONMENT_VARIABLE Variables, __in ULONG NumberOfVariables ); +PHLIBAPI NTSTATUS PhGetProcessMappedFileName( __in HANDLE ProcessHandle, __in PVOID BaseAddress, __out PPH_STRING *FileName ); +PHLIBAPI NTSTATUS PhGetProcessWorkingSetInformation( __in HANDLE ProcessHandle, __out PMEMORY_WORKING_SET_INFORMATION *WorkingSetInformation ); +PHLIBAPI NTSTATUS PhGetProcessWsCounters( __in HANDLE ProcessHandle, __out PPH_PROCESS_WS_COUNTERS WsCounters @@ -308,69 +349,82 @@ NTSTATUS PhGetProcessWsCounters( typedef struct _PROCESS_HANDLE_INFORMATION *PPROCESS_HANDLE_INFORMATION; +PHLIBAPI NTSTATUS PhEnumProcessHandles( __in HANDLE ProcessHandle, __out PPROCESS_HANDLE_INFORMATION *Handles ); +PHLIBAPI NTSTATUS PhSetProcessAffinityMask( __in HANDLE ProcessHandle, __in ULONG_PTR AffinityMask ); +PHLIBAPI NTSTATUS PhSetProcessIoPriority( __in HANDLE ProcessHandle, __in ULONG IoPriority ); +PHLIBAPI NTSTATUS PhSetProcessExecuteFlags( __in HANDLE ProcessHandle, __in ULONG ExecuteFlags ); +PHLIBAPI NTSTATUS PhSetProcessDepStatus( __in HANDLE ProcessHandle, __in ULONG DepStatus ); +PHLIBAPI NTSTATUS PhSetProcessDepStatusInvasive( __in HANDLE ProcessHandle, __in ULONG DepStatus, __in_opt PLARGE_INTEGER Timeout ); +PHLIBAPI NTSTATUS PhInjectDllProcess( __in HANDLE ProcessHandle, __in PWSTR FileName, __in_opt PLARGE_INTEGER Timeout ); +PHLIBAPI NTSTATUS PhUnloadDllProcess( __in HANDLE ProcessHandle, __in PVOID BaseAddress, __in_opt PLARGE_INTEGER Timeout ); +PHLIBAPI NTSTATUS PhGetThreadBasicInformation( __in HANDLE ThreadHandle, __out PTHREAD_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetThreadIoPriority( __in HANDLE ThreadHandle, __out PULONG IoPriority ); +PHLIBAPI NTSTATUS PhGetThreadPagePriority( __in HANDLE ThreadHandle, __out PULONG PagePriority ); +PHLIBAPI NTSTATUS PhGetThreadCycleTime( __in HANDLE ThreadHandle, __out PULONG64 CycleTime ); +PHLIBAPI NTSTATUS PhSetThreadIoPriority( __in HANDLE ThreadHandle, __in ULONG IoPriority @@ -397,6 +451,7 @@ typedef BOOLEAN (NTAPI *PPH_WALK_THREAD_STACK_CALLBACK)( __in PVOID Context ); +PHLIBAPI NTSTATUS PhWalkThreadStack( __in HANDLE ThreadHandle, __in_opt HANDLE ProcessHandle, @@ -405,101 +460,121 @@ NTSTATUS PhWalkThreadStack( __in PVOID Context ); +PHLIBAPI NTSTATUS PhGetJobBasicAndIoAccounting( __in HANDLE JobHandle, __out PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION BasicAndIoAccounting ); +PHLIBAPI NTSTATUS PhGetJobBasicLimits( __in HANDLE JobHandle, __out PJOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimits ); +PHLIBAPI NTSTATUS PhGetJobExtendedLimits( __in HANDLE JobHandle, __out PJOBOBJECT_EXTENDED_LIMIT_INFORMATION ExtendedLimits ); +PHLIBAPI NTSTATUS PhGetJobBasicUiRestrictions( __in HANDLE JobHandle, __out PJOBOBJECT_BASIC_UI_RESTRICTIONS BasicUiRestrictions ); +PHLIBAPI NTSTATUS PhGetJobProcessIdList( __in HANDLE JobHandle, __out PJOBOBJECT_BASIC_PROCESS_ID_LIST *ProcessIdList ); +PHLIBAPI NTSTATUS PhGetTokenUser( __in HANDLE TokenHandle, __out PTOKEN_USER *User ); +PHLIBAPI NTSTATUS PhGetTokenOwner( __in HANDLE TokenHandle, __out PTOKEN_OWNER *Owner ); +PHLIBAPI NTSTATUS PhGetTokenPrimaryGroup( __in HANDLE TokenHandle, __out PTOKEN_PRIMARY_GROUP *PrimaryGroup ); +PHLIBAPI NTSTATUS PhGetTokenSessionId( __in HANDLE TokenHandle, __out PULONG SessionId ); +PHLIBAPI NTSTATUS PhGetTokenElevationType( __in HANDLE TokenHandle, __out PTOKEN_ELEVATION_TYPE ElevationType ); +PHLIBAPI NTSTATUS PhGetTokenIsElevated( __in HANDLE TokenHandle, __out PBOOLEAN Elevated ); +PHLIBAPI NTSTATUS PhGetTokenStatistics( __in HANDLE TokenHandle, __out PTOKEN_STATISTICS Statistics ); +PHLIBAPI NTSTATUS PhGetTokenSource( __in HANDLE TokenHandle, __out PTOKEN_SOURCE Source ); +PHLIBAPI NTSTATUS PhGetTokenGroups( __in HANDLE TokenHandle, __out PTOKEN_GROUPS *Groups ); +PHLIBAPI NTSTATUS PhGetTokenPrivileges( __in HANDLE TokenHandle, __out PTOKEN_PRIVILEGES *Privileges ); +PHLIBAPI NTSTATUS PhGetTokenLinkedToken( __in HANDLE TokenHandle, __out PHANDLE LinkedTokenHandle ); +PHLIBAPI NTSTATUS PhGetTokenIsVirtualizationAllowed( __in HANDLE TokenHandle, __out PBOOLEAN IsVirtualizationAllowed ); +PHLIBAPI NTSTATUS PhGetTokenIsVirtualizationEnabled( __in HANDLE TokenHandle, __out PBOOLEAN IsVirtualizationEnabled ); +PHLIBAPI NTSTATUS PhSetTokenSessionId( __in HANDLE TokenHandle, __in ULONG SessionId ); +PHLIBAPI BOOLEAN PhSetTokenPrivilege( __in HANDLE TokenHandle, __in_opt PWSTR PrivilegeName, @@ -507,78 +582,93 @@ BOOLEAN PhSetTokenPrivilege( __in ULONG Attributes ); +PHLIBAPI BOOLEAN PhSetTokenPrivilege2( __in HANDLE TokenHandle, __in LONG Privilege, __in ULONG Attributes ); +PHLIBAPI NTSTATUS PhSetTokenIsVirtualizationEnabled( __in HANDLE TokenHandle, __in BOOLEAN IsVirtualizationEnabled ); +PHLIBAPI NTSTATUS PhGetTokenIntegrityLevel( __in HANDLE TokenHandle, __out_opt PPH_INTEGRITY IntegrityLevel, __out_opt PPH_STRING *IntegrityString ); +PHLIBAPI NTSTATUS PhGetEventBasicInformation( __in HANDLE EventHandle, __out PEVENT_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetMutantBasicInformation( __in HANDLE MutantHandle, __out PMUTANT_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetMutantOwnerInformation( __in HANDLE MutantHandle, __out PMUTANT_OWNER_INFORMATION OwnerInformation ); +PHLIBAPI NTSTATUS PhGetSectionBasicInformation( __in HANDLE SectionHandle, __out PSECTION_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetSemaphoreBasicInformation( __in HANDLE SemaphoreHandle, __out PSEMAPHORE_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetTimerBasicInformation( __in HANDLE TimerHandle, __out PTIMER_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetFileSize( __in HANDLE FileHandle, __out PLARGE_INTEGER Size ); +PHLIBAPI NTSTATUS PhSetFileSize( __in HANDLE FileHandle, __in PLARGE_INTEGER Size ); +PHLIBAPI NTSTATUS PhGetTransactionManagerBasicInformation( __in HANDLE TransactionManagerHandle, __out PTRANSACTIONMANAGER_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetTransactionManagerLogFileName( __in HANDLE TransactionManagerHandle, __out PPH_STRING *LogFileName ); +PHLIBAPI NTSTATUS PhGetTransactionBasicInformation( __in HANDLE TransactionHandle, __out PTRANSACTION_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhGetTransactionPropertiesInformation( __in HANDLE TransactionHandle, __out_opt PLARGE_INTEGER Timeout, @@ -586,32 +676,38 @@ NTSTATUS PhGetTransactionPropertiesInformation( __out_opt PPH_STRING *Description ); +PHLIBAPI NTSTATUS PhGetResourceManagerBasicInformation( __in HANDLE ResourceManagerHandle, __out_opt PGUID Guid, __out_opt PPH_STRING *Description ); +PHLIBAPI NTSTATUS PhGetEnlistmentBasicInformation( __in HANDLE EnlistmentHandle, __out PENLISTMENT_BASIC_INFORMATION BasicInformation ); +PHLIBAPI NTSTATUS PhOpenDriverByBaseAddress( __out PHANDLE DriverHandle, __in PVOID BaseAddress ); +PHLIBAPI NTSTATUS PhGetDriverServiceKeyName( __in HANDLE DriverHandle, __out PPH_STRING *ServiceKeyName ); +PHLIBAPI NTSTATUS PhUnloadDriver( __in_opt PVOID BaseAddress, __in_opt PWSTR Name ); +PHLIBAPI NTSTATUS PhDuplicateObject( __in HANDLE SourceProcessHandle, __in HANDLE SourceHandle, @@ -641,20 +737,24 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_PROCESS_MODULES_CALLBACK)( __in PVOID Context ); +PHLIBAPI NTSTATUS PhEnumProcessModules( __in HANDLE ProcessHandle, __in PPH_ENUM_PROCESS_MODULES_CALLBACK Callback, __in PVOID Context ); +PHLIBAPI NTSTATUS PhSetProcessModuleLoadCount( __in HANDLE ProcessHandle, __in PVOID BaseAddress, __in USHORT LoadCount ); +PHLIBAPI PPH_STRING PhGetKernelFileName(); +PHLIBAPI NTSTATUS PhEnumKernelModules( __out PRTL_PROCESS_MODULES *Modules ); @@ -685,28 +785,34 @@ NTSTATUS PhEnumKernelModules( NULL \ ) +PHLIBAPI NTSTATUS PhEnumProcesses( __out PPVOID Processes ); +PHLIBAPI NTSTATUS PhEnumProcessesForSession( __out PPVOID Processes, __in ULONG SessionId ); +PHLIBAPI NTSTATUS PhEnumProcessesEx( __out PPVOID Processes ); +PHLIBAPI PSYSTEM_PROCESS_INFORMATION PhFindProcessInformation( __in PVOID Processes, __in HANDLE ProcessId ); +PHLIBAPI NTSTATUS PhEnumHandles( __out PSYSTEM_HANDLE_INFORMATION *Handles ); +PHLIBAPI NTSTATUS PhEnumHandlesEx( __out PSYSTEM_HANDLE_INFORMATION_EX *Handles ); @@ -725,15 +831,18 @@ NTSTATUS PhEnumHandlesEx( NULL \ ) +PHLIBAPI NTSTATUS PhEnumPagefiles( __out PPVOID Pagefiles ); +PHLIBAPI NTSTATUS PhGetProcessImageFileNameByProcessId( __in HANDLE ProcessId, __out PPH_STRING *FileName ); +PHLIBAPI NTSTATUS PhGetProcessIsDotNet( __in HANDLE ProcessId, __out PBOOLEAN IsDotNet @@ -757,6 +866,7 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_DIRECTORY_OBJECTS)( __in PVOID Context ); +PHLIBAPI NTSTATUS PhEnumDirectoryObjects( __in HANDLE DirectoryHandle, __in PPH_ENUM_DIRECTORY_OBJECTS Callback, @@ -768,6 +878,7 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_DIRECTORY_FILE)( __in PVOID Context ); +PHLIBAPI NTSTATUS PhEnumDirectoryFile( __in HANDLE FileHandle, __in_opt PPH_STRINGREF SearchPattern, @@ -783,6 +894,7 @@ NTSTATUS PhEnumDirectoryFile( NULL \ ) +PHLIBAPI NTSTATUS PhEnumFileStreams( __in HANDLE FileHandle, __out PPVOID Streams @@ -790,14 +902,18 @@ NTSTATUS PhEnumFileStreams( VOID PhInitializeDevicePrefixes(); +PHLIBAPI VOID PhRefreshMupDevicePrefixes(); +PHLIBAPI VOID PhRefreshDosDevicePrefixes(); +PHLIBAPI PPH_STRING PhResolveDevicePrefix( __in PPH_STRING Name ); +PHLIBAPI PPH_STRING PhGetFileName( __in PPH_STRING FileName ); @@ -837,6 +953,7 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_GENERIC_MODULES_CALLBACK)( #define PH_ENUM_GENERIC_MAPPED_FILES 0x1 +PHLIBAPI NTSTATUS PhEnumGenericModules( __in HANDLE ProcessId, __in_opt HANDLE ProcessHandle, @@ -847,27 +964,32 @@ NTSTATUS PhEnumGenericModules( // lsa +PHLIBAPI NTSTATUS PhOpenLsaPolicy( __out PLSA_HANDLE PolicyHandle, __in ACCESS_MASK DesiredAccess, __in_opt PUNICODE_STRING SystemName ); +PHLIBAPI BOOLEAN PhLookupPrivilegeName( __in PLUID PrivilegeValue, __out PPH_STRING *PrivilegeName ); +PHLIBAPI BOOLEAN PhLookupPrivilegeDisplayName( __in PWSTR PrivilegeName, __out PPH_STRING *PrivilegeDisplayName ); +PHLIBAPI BOOLEAN PhLookupPrivilegeValue( __in PWSTR PrivilegeName, __out PLUID PrivilegeValue ); +PHLIBAPI NTSTATUS PhLookupSid( __in PSID Sid, __out_opt PPH_STRING *Name, @@ -875,12 +997,14 @@ NTSTATUS PhLookupSid( __out_opt PSID_NAME_USE NameUse ); +PHLIBAPI PPH_STRING PhGetSidFullName( __in PSID Sid, __in BOOLEAN IncludeDomain, __out_opt PSID_NAME_USE NameUse ); +PHLIBAPI PPH_STRING PhSidToStringSid( __in PSID Sid ); @@ -890,6 +1014,7 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_ACCOUNTS_CALLBACK)( __in PVOID Context ); +PHLIBAPI NTSTATUS PhEnumAccounts( __in LSA_HANDLE PolicyHandle, __in PPH_ENUM_ACCOUNTS_CALLBACK Callback, @@ -908,14 +1033,17 @@ PPH_GET_CLIENT_ID_NAME PhSetHandleClientIdFunction( __in PPH_GET_CLIENT_ID_NAME GetClientIdName ); +PHLIBAPI PPH_STRING PhFormatNativeKeyName( __in PPH_STRING Name ); +PHLIBAPI __callback PPH_STRING PhStdGetClientIdName( __in PCLIENT_ID ClientId ); +PHLIBAPI NTSTATUS PhGetHandleInformation( __in HANDLE ProcessHandle, __in HANDLE Handle, @@ -960,12 +1088,14 @@ typedef struct _PH_MAPPED_IMAGE USHORT Magic; } PH_MAPPED_IMAGE, *PPH_MAPPED_IMAGE; +PHLIBAPI NTSTATUS PhInitializeMappedImage( __out PPH_MAPPED_IMAGE MappedImage, __in PVOID ViewBase, __in SIZE_T Size ); +PHLIBAPI NTSTATUS PhLoadMappedImage( __in_opt PWSTR FileName, __in_opt HANDLE FileHandle, @@ -973,10 +1103,12 @@ NTSTATUS PhLoadMappedImage( __out PPH_MAPPED_IMAGE MappedImage ); +PHLIBAPI NTSTATUS PhUnloadMappedImage( __inout PPH_MAPPED_IMAGE MappedImage ); +PHLIBAPI NTSTATUS PhMapViewOfEntireFile( __in_opt PWSTR FileName, __in_opt HANDLE FileHandle, @@ -985,17 +1117,20 @@ NTSTATUS PhMapViewOfEntireFile( __out PSIZE_T Size ); +PHLIBAPI PIMAGE_SECTION_HEADER PhMappedImageRvaToSection( __in PPH_MAPPED_IMAGE MappedImage, __in ULONG Rva ); +PHLIBAPI PVOID PhMappedImageRvaToVa( __in PPH_MAPPED_IMAGE MappedImage, __in ULONG Rva, __out_opt PIMAGE_SECTION_HEADER *Section ); +PHLIBAPI BOOLEAN PhGetMappedImageSectionName( __in PIMAGE_SECTION_HEADER Section, __out_ecount_z_opt(Count) PSTR Buffer, @@ -1003,17 +1138,20 @@ BOOLEAN PhGetMappedImageSectionName( __out_opt PULONG ReturnCount ); +PHLIBAPI NTSTATUS PhGetMappedImageDataEntry( __in PPH_MAPPED_IMAGE MappedImage, __in ULONG Index, __out PIMAGE_DATA_DIRECTORY *Entry ); +PHLIBAPI NTSTATUS PhGetMappedImageLoadConfig32( __in PPH_MAPPED_IMAGE MappedImage, __out PIMAGE_LOAD_CONFIG_DIRECTORY32 *LoadConfig ); +PHLIBAPI NTSTATUS PhGetMappedImageLoadConfig64( __in PPH_MAPPED_IMAGE MappedImage, __out PIMAGE_LOAD_CONFIG_DIRECTORY64 *LoadConfig @@ -1043,17 +1181,20 @@ typedef struct _PH_MAPPED_IMAGE_EXPORT_FUNCTION PSTR ForwardedName; } PH_MAPPED_IMAGE_EXPORT_FUNCTION, *PPH_MAPPED_IMAGE_EXPORT_FUNCTION; +PHLIBAPI NTSTATUS PhInitializeMappedImageExports( __out PPH_MAPPED_IMAGE_EXPORTS Exports, __in PPH_MAPPED_IMAGE MappedImage ); +PHLIBAPI NTSTATUS PhGetMappedImageExportEntry( __in PPH_MAPPED_IMAGE_EXPORTS Exports, __in ULONG Index, __out PPH_MAPPED_IMAGE_EXPORT_ENTRY Entry ); +PHLIBAPI NTSTATUS PhGetMappedImageExportFunction( __in PPH_MAPPED_IMAGE_EXPORTS Exports, __in_opt PSTR Name, @@ -1089,17 +1230,20 @@ typedef struct _PH_MAPPED_IMAGE_IMPORT_ENTRY }; } PH_MAPPED_IMAGE_IMPORT_ENTRY, *PPH_MAPPED_IMAGE_IMPORT_ENTRY; +PHLIBAPI NTSTATUS PhInitializeMappedImageImports( __out PPH_MAPPED_IMAGE_IMPORTS Imports, __in PPH_MAPPED_IMAGE MappedImage ); +PHLIBAPI NTSTATUS PhGetMappedImageImportDll( __in PPH_MAPPED_IMAGE_IMPORTS Imports, __in ULONG Index, __out PPH_MAPPED_IMAGE_IMPORT_DLL ImportDll ); +PHLIBAPI NTSTATUS PhGetMappedImageImportEntry( __in PPH_MAPPED_IMAGE_IMPORT_DLL ImportDll, __in ULONG Index, @@ -1158,12 +1302,14 @@ typedef struct _PH_MAPPED_ARCHIVE_IMPORT_ENTRY USHORT Machine; } PH_MAPPED_ARCHIVE_IMPORT_ENTRY, *PPH_MAPPED_ARCHIVE_IMPORT_ENTRY; +PHLIBAPI NTSTATUS PhInitializeMappedArchive( __out PPH_MAPPED_ARCHIVE MappedArchive, __in PVOID ViewBase, __in SIZE_T Size ); +PHLIBAPI NTSTATUS PhLoadMappedArchive( __in_opt PWSTR FileName, __in_opt HANDLE FileHandle, @@ -1171,19 +1317,23 @@ NTSTATUS PhLoadMappedArchive( __out PPH_MAPPED_ARCHIVE MappedArchive ); +PHLIBAPI NTSTATUS PhUnloadMappedArchive( __inout PPH_MAPPED_ARCHIVE MappedArchive ); +PHLIBAPI NTSTATUS PhGetNextMappedArchiveMember( __in PPH_MAPPED_ARCHIVE_MEMBER Member, __out PPH_MAPPED_ARCHIVE_MEMBER NextMember ); +PHLIBAPI BOOLEAN PhIsMappedArchiveMemberShortFormat( __in PPH_MAPPED_ARCHIVE_MEMBER Member ); +PHLIBAPI NTSTATUS PhGetMappedArchiveImportEntry( __in PPH_MAPPED_ARCHIVE_MEMBER Member, __out PPH_MAPPED_ARCHIVE_IMPORT_ENTRY Entry @@ -1197,6 +1347,7 @@ extern PPH_OBJECT_TYPE PhFileStreamType; BOOLEAN PhIoSupportInitialization(); +PHLIBAPI NTSTATUS PhCreateFileWin32( __out PHANDLE FileHandle, __in PWSTR FileName, @@ -1207,6 +1358,7 @@ NTSTATUS PhCreateFileWin32( __in ULONG CreateOptions ); +PHLIBAPI NTSTATUS PhDeleteFileWin32( __in PWSTR FileName ); @@ -1255,6 +1407,7 @@ typedef struct _PH_FILE_STREAM ULONG WritePosition; // write position in buffer } PH_FILE_STREAM, *PPH_FILE_STREAM; +PHLIBAPI NTSTATUS PhCreateFileStream( __out PPH_FILE_STREAM *FileStream, __in PWSTR FileName, @@ -1264,6 +1417,7 @@ NTSTATUS PhCreateFileStream( __in ULONG Flags ); +PHLIBAPI NTSTATUS PhCreateFileStream2( __out PPH_FILE_STREAM *FileStream, __in HANDLE FileHandle, @@ -1271,10 +1425,12 @@ NTSTATUS PhCreateFileStream2( __in ULONG BufferLength ); +PHLIBAPI VOID PhFileStreamVerify( __in PPH_FILE_STREAM FileStream ); +PHLIBAPI NTSTATUS PhFileStreamRead( __inout PPH_FILE_STREAM FileStream, __out_bcount(Length) PVOID Buffer, @@ -1282,23 +1438,27 @@ NTSTATUS PhFileStreamRead( __out_opt PULONG ReadLength ); +PHLIBAPI NTSTATUS PhFileStreamWrite( __inout PPH_FILE_STREAM FileStream, __in_bcount(Length) PVOID Buffer, __in ULONG Length ); +PHLIBAPI NTSTATUS PhFileStreamFlush( __inout PPH_FILE_STREAM FileStream, __in BOOLEAN Full ); +PHLIBAPI NTSTATUS PhFileStreamSeek( __inout PPH_FILE_STREAM FileStream, __in PLARGE_INTEGER Offset, __in PH_SEEK_ORIGIN Origin ); +PHLIBAPI NTSTATUS PhFileStreamLock( __inout PPH_FILE_STREAM FileStream, __in PLARGE_INTEGER Position, @@ -1307,6 +1467,7 @@ NTSTATUS PhFileStreamLock( __in BOOLEAN Shared ); +PHLIBAPI NTSTATUS PhFileStreamUnlock( __inout PPH_FILE_STREAM FileStream, __in PLARGE_INTEGER Position, @@ -1315,28 +1476,33 @@ NTSTATUS PhFileStreamUnlock( #define PH_FILE_STREAM_STRING_BLOCK_SIZE (PAGE_SIZE / 2) +PHLIBAPI NTSTATUS PhFileStreamWriteStringAsAnsi( __inout PPH_FILE_STREAM FileStream, __in PPH_STRINGREF String ); +PHLIBAPI NTSTATUS PhFileStreamWriteStringAsAnsi2( __inout PPH_FILE_STREAM FileStream, __in PWSTR String ); +PHLIBAPI NTSTATUS PhFileStreamWriteStringAsAnsiEx( __inout PPH_FILE_STREAM FileStream, __in PWSTR Buffer, __in SIZE_T Length ); +PHLIBAPI NTSTATUS PhFileStreamWriteStringFormat_V( __inout PPH_FILE_STREAM FileStream, __in __format_string PWSTR Format, __in va_list ArgPtr ); +PHLIBAPI NTSTATUS PhFileStreamWriteStringFormat( __inout PPH_FILE_STREAM FileStream, __in __format_string PWSTR Format, @@ -1358,6 +1524,7 @@ typedef enum _VERIFY_RESULT VOID PhVerifyInitialization(); +PHLIBAPI VERIFY_RESULT PhVerifyFile( __in PWSTR FileName, __out_opt PPH_STRING *SignerName @@ -1509,10 +1676,12 @@ BOOLEAN PhSymbolProviderInitialization(); VOID PhSymbolProviderDynamicImport(); +PHLIBAPI PPH_SYMBOL_PROVIDER PhCreateSymbolProvider( __in_opt HANDLE ProcessId ); +PHLIBAPI BOOLEAN PhGetLineFromAddress( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in ULONG64 Address, @@ -1521,12 +1690,14 @@ BOOLEAN PhGetLineFromAddress( __out_opt PPH_SYMBOL_LINE_IINFORMATION Information ); +PHLIBAPI ULONG64 PhGetModuleFromAddress( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in ULONG64 Address, __out_opt PPH_STRING *FileName ); +PHLIBAPI PPH_STRING PhGetSymbolFromAddress( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in ULONG64 Address, @@ -1536,12 +1707,14 @@ PPH_STRING PhGetSymbolFromAddress( __out_opt PULONG64 Displacement ); +PHLIBAPI BOOLEAN PhGetSymbolFromName( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in PWSTR Name, __out PPH_SYMBOL_INFORMATION Information ); +PHLIBAPI BOOLEAN PhSymbolProviderLoadModule( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in PWSTR FileName, @@ -1549,11 +1722,13 @@ BOOLEAN PhSymbolProviderLoadModule( __in ULONG Size ); +PHLIBAPI VOID PhSymbolProviderSetOptions( __in ULONG Mask, __in ULONG Value ); +PHLIBAPI VOID PhSymbolProviderSetSearchPath( __in PPH_SYMBOL_PROVIDER SymbolProvider, __in PWSTR Path @@ -1567,6 +1742,7 @@ extern WCHAR *PhServiceStartTypeStrings[5]; extern WCHAR *PhServiceErrorControlStrings[4]; #endif +PHLIBAPI PVOID PhEnumServices( __in SC_HANDLE ScManagerHandle, __in_opt ULONG Type, @@ -1574,62 +1750,76 @@ PVOID PhEnumServices( __out PULONG Count ); +PHLIBAPI SC_HANDLE PhOpenService( __in PWSTR ServiceName, __in ACCESS_MASK DesiredAccess ); +PHLIBAPI PVOID PhGetServiceConfig( __in SC_HANDLE ServiceHandle ); +PHLIBAPI PPH_STRING PhGetServiceDescription( __in SC_HANDLE ServiceHandle ); +PHLIBAPI BOOLEAN PhGetServiceDelayedAutoStart( __in SC_HANDLE ServiceHandle, __out PBOOLEAN DelayedAutoStart ); +PHLIBAPI BOOLEAN PhSetServiceDelayedAutoStart( __in SC_HANDLE ServiceHandle, __in BOOLEAN DelayedAutoStart ); +PHLIBAPI PWSTR PhGetServiceStateString( __in ULONG ServiceState ); +PHLIBAPI PWSTR PhGetServiceTypeString( __in ULONG ServiceType ); +PHLIBAPI ULONG PhGetServiceTypeInteger( __in PWSTR ServiceType ); +PHLIBAPI PWSTR PhGetServiceStartTypeString( __in ULONG ServiceStartType ); +PHLIBAPI ULONG PhGetServiceStartTypeInteger( __in PWSTR ServiceStartType ); +PHLIBAPI PWSTR PhGetServiceErrorControlString( __in ULONG ServiceErrorControl ); +PHLIBAPI ULONG PhGetServiceErrorControlInteger( __in PWSTR ServiceErrorControl ); +PHLIBAPI PPH_STRING PhGetServiceNameFromTag( __in HANDLE ProcessId, __in PVOID ServiceTag ); +PHLIBAPI NTSTATUS PhGetThreadServiceTag( __in HANDLE ThreadHandle, __in_opt HANDLE ProcessHandle, @@ -1723,21 +1913,25 @@ FORCEINLINE RECT PhMapRect( return rect; } +PHLIBAPI VOID PhAdjustRectangleToBounds( __inout PPH_RECTANGLE Rectangle, __in PPH_RECTANGLE Bounds ); +PHLIBAPI VOID PhCenterRectangle( __inout PPH_RECTANGLE Rectangle, __in PPH_RECTANGLE Bounds ); +PHLIBAPI VOID PhAdjustRectangleToWorkingArea( __in HWND hWnd, __inout PPH_RECTANGLE Rectangle ); +PHLIBAPI VOID PhCenterWindow( __in HWND WindowHandle, __in_opt HWND ParentWindowHandle @@ -1791,16 +1985,19 @@ FORCEINLINE FILETIME PhSubtractFileTime( return result; } +PHLIBAPI VOID PhReferenceObjects( __in PPVOID Objects, __in ULONG NumberOfObjects ); +PHLIBAPI VOID PhDereferenceObjects( __in PPVOID Objects, __in ULONG NumberOfObjects ); +PHLIBAPI PPH_STRING PhGetMessage( __in PVOID DllHandle, __in ULONG MessageTableId, @@ -1808,16 +2005,19 @@ PPH_STRING PhGetMessage( __in ULONG MessageId ); +PHLIBAPI PPH_STRING PhGetNtMessage( __in NTSTATUS Status ); +PHLIBAPI PPH_STRING PhGetWin32Message( __in ULONG Result ); #define PH_MAX_MESSAGE_SIZE 800 +PHLIBAPI INT PhShowMessage( __in HWND hWnd, __in ULONG Type, @@ -1825,6 +2025,7 @@ INT PhShowMessage( ... ); +PHLIBAPI INT PhShowMessage_V( __in HWND hWnd, __in ULONG Type, @@ -1836,6 +2037,7 @@ INT PhShowMessage_V( #define PhShowWarning(hWnd, Format, ...) PhShowMessage(hWnd, MB_OK | MB_ICONWARNING, Format, __VA_ARGS__) #define PhShowInformation(hWnd, Format, ...) PhShowMessage(hWnd, MB_OK | MB_ICONINFORMATION, Format, __VA_ARGS__) +PHLIBAPI VOID PhShowStatus( __in HWND hWnd, __in_opt PWSTR Message, @@ -1843,6 +2045,7 @@ VOID PhShowStatus( __in_opt ULONG Win32Result ); +PHLIBAPI BOOLEAN PhShowContinueStatus( __in HWND hWnd, __in_opt PWSTR Message, @@ -1850,6 +2053,7 @@ BOOLEAN PhShowContinueStatus( __in_opt ULONG Win32Result ); +PHLIBAPI BOOLEAN PhShowConfirmMessage( __in HWND hWnd, __in PWSTR Verb, @@ -1858,6 +2062,7 @@ BOOLEAN PhShowConfirmMessage( __in BOOLEAN Warning ); +PHLIBAPI BOOLEAN PhFindIntegerSiKeyValuePairs( __in PPH_KEY_VALUE_PAIR KeyValuePairs, __in ULONG SizeOfKeyValuePairs, @@ -1865,6 +2070,7 @@ BOOLEAN PhFindIntegerSiKeyValuePairs( __out PULONG Integer ); +PHLIBAPI BOOLEAN PhFindStringSiKeyValuePairs( __in PPH_KEY_VALUE_PAIR KeyValuePairs, __in ULONG SizeOfKeyValuePairs, @@ -1872,30 +2078,36 @@ BOOLEAN PhFindStringSiKeyValuePairs( __out PWSTR *String ); +PHLIBAPI VOID PhGenerateGuid( __out PGUID Guid ); +PHLIBAPI VOID PhGenerateRandomAlphaString( __out_ecount_z(Count) PWSTR Buffer, __in ULONG Count ); +PHLIBAPI PPH_STRING PhEllipsisString( __in PPH_STRING String, __in ULONG DesiredCount ); +PHLIBAPI PPH_STRING PhEllipsisStringPath( __in PPH_STRING String, __in ULONG DesiredCount ); +PHLIBAPI PPH_STRING PhFormatDate( __in_opt PSYSTEMTIME Date, __in_opt PWSTR Format ); +PHLIBAPI PPH_STRING PhFormatTime( __in_opt PSYSTEMTIME Time, __in_opt PWSTR Format @@ -1927,6 +2139,7 @@ FORCEINLINE PPH_STRING PhaFormatDateTime( return PHA_DEREFERENCE(PhFormatDateTime(DateTime)); } +PHLIBAPI PPH_STRING PhFormatUInt64( __in ULONG64 Value, __in BOOLEAN GroupDigits @@ -1935,6 +2148,7 @@ PPH_STRING PhFormatUInt64( #define PhaFormatUInt64(Value, GroupDigits) \ ((PPH_STRING)PHA_DEREFERENCE(PhFormatUInt64((Value), (GroupDigits)))) +PHLIBAPI PPH_STRING PhFormatDecimal( __in PWSTR Value, __in ULONG FractionalDigits, @@ -1944,6 +2158,7 @@ PPH_STRING PhFormatDecimal( #define PhaFormatDecimal(Value, FractionalDigits, GroupDigits) \ ((PPH_STRING)PHA_DEREFERENCE(PhFormatDecimal((Value), (FractionalDigits), (GroupDigits)))) +PHLIBAPI PPH_STRING PhFormatSize( __in ULONG64 Size, __in ULONG MaxSizeUnit @@ -1952,23 +2167,28 @@ PPH_STRING PhFormatSize( #define PhaFormatSize(Size, MaxSizeUnit) \ ((PPH_STRING)PHA_DEREFERENCE(PhFormatSize((Size), (MaxSizeUnit)))) +PHLIBAPI PPH_STRING PhFormatGuid( __in PGUID Guid ); +PHLIBAPI PVOID PhGetFileVersionInfo( __in PWSTR FileName ); +PHLIBAPI ULONG PhGetFileVersionInfoLangCodePage( __in PVOID VersionInfo ); +PHLIBAPI PPH_STRING PhGetFileVersionInfoString( __in PVOID VersionInfo, __in PWSTR SubBlock ); +PHLIBAPI PPH_STRING PhGetFileVersionInfoString2( __in PVOID VersionInfo, __in ULONG LangCodePage, @@ -1983,15 +2203,18 @@ typedef struct _PH_IMAGE_VERSION_INFO PPH_STRING ProductName; } PH_IMAGE_VERSION_INFO, *PPH_IMAGE_VERSION_INFO; +PHLIBAPI BOOLEAN PhInitializeImageVersionInfo( __out PPH_IMAGE_VERSION_INFO ImageVersionInfo, __in PWSTR FileName ); +PHLIBAPI VOID PhDeleteImageVersionInfo( __inout PPH_IMAGE_VERSION_INFO ImageVersionInfo ); +PHLIBAPI PPH_STRING PhFormatImageVersionInfo( __in_opt PPH_STRING FileName, __in PPH_IMAGE_VERSION_INFO ImageVersionInfo, @@ -1999,36 +2222,46 @@ PPH_STRING PhFormatImageVersionInfo( __in_opt ULONG LineLimit ); +PHLIBAPI PPH_STRING PhGetFullPath( __in PWSTR FileName, __out_opt PULONG IndexOfFileName ); +PHLIBAPI PPH_STRING PhExpandEnvironmentStrings( __in PWSTR String ); +PHLIBAPI PPH_STRING PhGetBaseName( __in PPH_STRING FileName ); +PHLIBAPI PPH_STRING PhGetSystemDirectory(); +PHLIBAPI PPH_STRING PhGetSystemRoot(); +PHLIBAPI PLDR_DATA_TABLE_ENTRY PhFindLoaderEntry( __in PVOID DllHandle ); +PHLIBAPI PPH_STRING PhGetDllFileName( __in PVOID DllHandle, __out_opt PULONG IndexOfFileName ); +PHLIBAPI PPH_STRING PhGetApplicationFileName(); +PHLIBAPI PPH_STRING PhGetApplicationDirectory(); +PHLIBAPI PPH_STRING PhGetKnownLocation( __in ULONG Folder, __in_opt PWSTR AppendPath @@ -2041,6 +2274,7 @@ FORCEINLINE BOOLEAN PhFileExists( return GetFileAttributes(FileName) != INVALID_FILE_ATTRIBUTES; } +PHLIBAPI NTSTATUS PhWaitForMultipleObjectsAndPump( __in_opt HWND hWnd, __in ULONG NumberOfHandles, @@ -2054,6 +2288,7 @@ NTSTATUS PhWaitForMultipleObjectsAndPump( #define PH_CREATE_PROCESS_BREAKAWAY_FROM_JOB 0x8 #define PH_CREATE_PROCESS_NEW_CONSOLE 0x10 +PHLIBAPI NTSTATUS PhCreateProcessWin32( __in_opt PWSTR FileName, __in_opt PWSTR CommandLine, @@ -2065,6 +2300,7 @@ NTSTATUS PhCreateProcessWin32( __out_opt PHANDLE ThreadHandle ); +PHLIBAPI NTSTATUS PhCreateProcessWin32Ex( __in_opt PWSTR FileName, __in_opt PWSTR CommandLine, @@ -2078,6 +2314,7 @@ NTSTATUS PhCreateProcessWin32Ex( __out_opt PHANDLE ThreadHandle ); +PHLIBAPI VOID PhShellExecute( __in HWND hWnd, __in PWSTR FileName, @@ -2087,6 +2324,7 @@ VOID PhShellExecute( #define PH_SHELL_EXECUTE_ADMIN 0x1 #define PH_SHELL_EXECUTE_PUMP_MESSAGES 0x2 +PHLIBAPI BOOLEAN PhShellExecuteEx( __in HWND hWnd, __in PWSTR FileName, @@ -2097,21 +2335,25 @@ BOOLEAN PhShellExecuteEx( __out_opt PHANDLE ProcessHandle ); +PHLIBAPI VOID PhShellExploreFile( __in HWND hWnd, __in PWSTR FileName ); +PHLIBAPI VOID PhShellProperties( __in HWND hWnd, __in PWSTR FileName ); +PHLIBAPI VOID PhShellOpenKey( __in HWND hWnd, __in PPH_STRING KeyName ); +PHLIBAPI PPH_STRING PhQueryRegistryString( __in HKEY KeyHandle, __in_opt PWSTR ValueName @@ -2123,6 +2365,7 @@ typedef struct _PH_FLAG_MAPPING ULONG Flag2; } PH_FLAG_MAPPING, *PPH_FLAG_MAPPING; +PHLIBAPI VOID PhMapFlags1( __inout PULONG Value2, __in ULONG Value1, @@ -2130,6 +2373,7 @@ VOID PhMapFlags1( __in ULONG NumberOfMappings ); +PHLIBAPI VOID PhMapFlags2( __inout PULONG Value1, __in ULONG Value2, @@ -2137,14 +2381,18 @@ VOID PhMapFlags2( __in ULONG NumberOfMappings ); +PHLIBAPI PVOID PhCreateOpenFileDialog(); +PHLIBAPI PVOID PhCreateSaveFileDialog(); +PHLIBAPI VOID PhFreeFileDialog( __in PVOID FileDialog ); +PHLIBAPI BOOLEAN PhShowFileDialog( __in HWND hWnd, __in PVOID FileDialog @@ -2158,10 +2406,12 @@ BOOLEAN PhShowFileDialog( #define PH_FILEDIALOG_OVERWRITEPROMPT 0x20 // default save #define PH_FILEDIALOG_DEFAULTEXPANDED 0x40 +PHLIBAPI ULONG PhGetFileDialogOptions( __in PVOID FileDialog ); +PHLIBAPI VOID PhSetFileDialogOptions( __in PVOID FileDialog, __in ULONG Options @@ -2173,21 +2423,25 @@ typedef struct _PH_FILETYPE_FILTER PWSTR Filter; } PH_FILETYPE_FILTER, *PPH_FILETYPE_FILTER; +PHLIBAPI VOID PhSetFileDialogFilter( __in PVOID FileDialog, __in PPH_FILETYPE_FILTER Filters, __in ULONG NumberOfFilters ); +PHLIBAPI PPH_STRING PhGetFileDialogFileName( __in PVOID FileDialog ); +PHLIBAPI VOID PhSetFileDialogFileName( __in PVOID FileDialog, __in PWSTR FileName ); +PHLIBAPI NTSTATUS PhIsExecutablePacked( __in PWSTR FileName, __out PBOOLEAN IsPacked, @@ -2195,6 +2449,7 @@ NTSTATUS PhIsExecutablePacked( __out_opt PULONG NumberOfFunctions ); +PHLIBAPI NTSTATUS PhMd5File( __in PWSTR FileName, __out_bcount(16) PUCHAR Digest @@ -2224,11 +2479,13 @@ typedef BOOLEAN (NTAPI *PPH_COMMAND_LINE_CALLBACK)( #define PH_COMMAND_LINE_IGNORE_FIRST_PART 0x2 #define PH_COMMAND_LINE_CALLBACK_ALL_MAIN 0x4 +PHLIBAPI PPH_STRING PhParseCommandLinePart( __in PPH_STRINGREF CommandLine, __inout PULONG Index ); +PHLIBAPI BOOLEAN PhParseCommandLine( __in PPH_STRINGREF CommandLine, __in PPH_COMMAND_LINE_OPTION Options, diff --git a/2.x/trunk/phlib/include/phbase.h b/2.x/trunk/phlib/include/phbase.h index 168393d7d..1fd5946ff 100644 --- a/2.x/trunk/phlib/include/phbase.h +++ b/2.x/trunk/phlib/include/phbase.h @@ -19,6 +19,14 @@ #define UNICODE #endif +#if defined(PHLIB_EXPORT) +#define PHLIBAPI __declspec(dllexport) +#elif defined(PHLIB_IMPORT) +#define PHLIBAPI __declspec(dllimport) +#else +#define PHLIBAPI +#endif + #include #include #include @@ -160,7 +168,10 @@ extern LIST_ENTRY PhDbgThreadListHead; extern PH_QUEUED_LOCK PhDbgThreadListLock; #endif -HANDLE PhCreateThread( +PHLIBAPI +HANDLE +NTAPI +PhCreateThread( __in_opt SIZE_T StackSize, __in PUSER_THREAD_START_ROUTINE StartAddress, __in PVOID Parameter @@ -168,27 +179,43 @@ HANDLE PhCreateThread( // misc. system -VOID PhQuerySystemTime( +PHLIBAPI +VOID +NTAPI +PhQuerySystemTime( __out PLARGE_INTEGER SystemTime ); -VOID PhQueryTimeZoneBias( +PHLIBAPI +VOID +NTAPI +PhQueryTimeZoneBias( __out PLARGE_INTEGER TimeZoneBias ); -VOID PhSystemTimeToLocalTime( +PHLIBAPI +VOID +NTAPI +PhSystemTimeToLocalTime( __in PLARGE_INTEGER SystemTime, __out PLARGE_INTEGER LocalTime ); -VOID PhLocalTimeToSystemTime( +PHLIBAPI +VOID +NTAPI +PhLocalTimeToSystemTime( __in PLARGE_INTEGER LocalTime, __out PLARGE_INTEGER SystemTime ); // heap -__mayRaise PVOID PhAllocate( +__mayRaise +PHLIBAPI +PVOID +NTAPI +PhAllocate( __in SIZE_T Size ); @@ -201,11 +228,18 @@ PVOID PhAllocateExSafe( __in ULONG Flags ); -VOID PhFree( +PHLIBAPI +VOID +NTAPI +PhFree( __in __post_invalid PVOID Memory ); -__mayRaise PVOID PhReAllocate( +__mayRaise +PHLIBAPI +PVOID +NTAPI +PhReAllocate( __in PVOID Memory, __in SIZE_T Size ); @@ -215,12 +249,18 @@ PVOID PhReAllocateSafe( __in SIZE_T Size ); -PVOID PhAllocatePage( +PHLIBAPI +PVOID +NTAPI +PhAllocatePage( __in SIZE_T Size, __out_opt PSIZE_T NewSize ); -VOID PhFreePage( +PHLIBAPI +VOID +NTAPI +PhFreePage( __in PVOID Memory ); @@ -355,23 +395,35 @@ typedef struct _PH_EVENT #define PH_EVENT_INIT { PH_EVENT_REFCOUNT_INC, NULL } -VOID FASTCALL PhfInitializeEvent( +PHLIBAPI +VOID +FASTCALL +PhfInitializeEvent( __out PPH_EVENT Event ); #define PhSetEvent PhfSetEvent -VOID FASTCALL PhfSetEvent( +PHLIBAPI +VOID +FASTCALL +PhfSetEvent( __inout PPH_EVENT Event ); #define PhWaitForEvent PhfWaitForEvent -BOOLEAN FASTCALL PhfWaitForEvent( +PHLIBAPI +BOOLEAN +FASTCALL +PhfWaitForEvent( __inout PPH_EVENT Event, __in_opt PLARGE_INTEGER Timeout ); #define PhResetEvent PhfResetEvent -VOID FASTCALL PhfResetEvent( +PHLIBAPI +VOID +FASTCALL +PhfResetEvent( __inout PPH_EVENT Event ); @@ -417,19 +469,31 @@ typedef struct _PH_RUNDOWN_WAIT_BLOCK PH_EVENT WakeEvent; } PH_RUNDOWN_WAIT_BLOCK, *PPH_RUNDOWN_WAIT_BLOCK; -VOID FASTCALL PhfInitializeRundownProtection( +PHLIBAPI +VOID +FASTCALL +PhfInitializeRundownProtection( __out PPH_RUNDOWN_PROTECT Protection ); -BOOLEAN FASTCALL PhfAcquireRundownProtection( +PHLIBAPI +BOOLEAN +FASTCALL +PhfAcquireRundownProtection( __inout PPH_RUNDOWN_PROTECT Protection ); -VOID FASTCALL PhfReleaseRundownProtection( +PHLIBAPI +VOID +FASTCALL +PhfReleaseRundownProtection( __inout PPH_RUNDOWN_PROTECT Protection ); -VOID FASTCALL PhfWaitForRundownProtection( +PHLIBAPI +VOID +FASTCALL +PhfWaitForRundownProtection( __inout PPH_RUNDOWN_PROTECT Protection ); @@ -511,16 +575,25 @@ typedef struct _PH_INITONCE #define PH_INITONCE_INIT { PH_INITONCE_UNINITIALIZED, PH_EVENT_INIT } #define PhInitializeInitOnce PhfInitializeInitOnce -VOID FASTCALL PhfInitializeInitOnce( +PHLIBAPI +VOID +FASTCALL +PhfInitializeInitOnce( __out PPH_INITONCE InitOnce ); -BOOLEAN FASTCALL PhfBeginInitOnce( +PHLIBAPI +BOOLEAN +FASTCALL +PhfBeginInitOnce( __inout PPH_INITONCE InitOnce ); #define PhEndInitOnce PhfEndInitOnce -VOID FASTCALL PhfEndInitOnce( +PHLIBAPI +VOID +FASTCALL +PhfEndInitOnce( __inout PPH_INITONCE InitOnce ); @@ -540,15 +613,24 @@ FORCEINLINE BOOLEAN PhBeginInitOnce( extern PPH_OBJECT_TYPE PhStringType; #endif -PSTR PhDuplicateAnsiStringZ( +PHLIBAPI +PSTR +NTAPI +PhDuplicateAnsiStringZ( __in PSTR String ); -PSTR PhDuplicateAnsiStringZSafe( +PHLIBAPI +PSTR +NTAPI +PhDuplicateAnsiStringZSafe( __in PSTR String ); -BOOLEAN PhCopyAnsiStringZ( +PHLIBAPI +BOOLEAN +NTAPI +PhCopyAnsiStringZ( __in PSTR InputBuffer, __in ULONG InputCount, __out_ecount_z_opt(OutputCount) PSTR OutputBuffer, @@ -556,7 +638,10 @@ BOOLEAN PhCopyAnsiStringZ( __out_opt PULONG ReturnCount ); -BOOLEAN PhCopyUnicodeStringZ( +PHLIBAPI +BOOLEAN +NTAPI +PhCopyUnicodeStringZ( __in PWSTR InputBuffer, __in ULONG InputCount, __out_ecount_z_opt(OutputCount) PWSTR OutputBuffer, @@ -564,7 +649,10 @@ BOOLEAN PhCopyUnicodeStringZ( __out_opt PULONG ReturnCount ); -BOOLEAN PhCopyUnicodeStringZFromAnsi( +PHLIBAPI +BOOLEAN +NTAPI +PhCopyUnicodeStringZFromAnsi( __in PSTR InputBuffer, __in ULONG InputCount, __out_ecount_z_opt(OutputCount) PWSTR OutputBuffer, @@ -725,47 +813,74 @@ typedef struct _PH_STRING WCHAR Buffer[1]; } PH_STRING, *PPH_STRING; -PPH_STRING PhCreateString( +PHLIBAPI +PPH_STRING +NTAPI +PhCreateString( __in PWSTR Buffer ); -PPH_STRING PhCreateStringEx( +PHLIBAPI +PPH_STRING +NTAPI +PhCreateStringEx( __in_opt PWSTR Buffer, __in SIZE_T Length ); -PPH_STRING PhCreateStringFromAnsi( +PHLIBAPI +PPH_STRING +NTAPI +PhCreateStringFromAnsi( __in PSTR Buffer ); -PPH_STRING PhCreateStringFromAnsiEx( +PHLIBAPI +PPH_STRING +NTAPI +PhCreateStringFromAnsiEx( __in PSTR Buffer, __in SIZE_T Length ); -PPH_STRING PhConcatStrings( +PHLIBAPI +PPH_STRING +NTAPI +PhConcatStrings( __in ULONG Count, ... ); #define PH_CONCAT_STRINGS_LENGTH_CACHE_SIZE 16 -PPH_STRING PhConcatStrings_V( +PHLIBAPI +PPH_STRING +NTAPI +PhConcatStrings_V( __in ULONG Count, __in va_list ArgPtr ); -PPH_STRING PhConcatStrings2( +PHLIBAPI +PPH_STRING +NTAPI +PhConcatStrings2( __in PWSTR String1, __in PWSTR String2 ); -PPH_STRING PhFormatString( +PHLIBAPI +PPH_STRING +NTAPI +PhFormatString( __in __format_string PWSTR Format, ... ); -PPH_STRING PhFormatString_V( +PHLIBAPI +PPH_STRING +NTAPI +PhFormatString_V( __in __format_string PWSTR Format, __in va_list ArgPtr ); @@ -1280,20 +1395,32 @@ typedef struct _PH_ANSI_STRING CHAR Buffer[1]; } PH_ANSI_STRING, *PPH_ANSI_STRING; -PPH_ANSI_STRING PhCreateAnsiString( +PHLIBAPI +PPH_ANSI_STRING +NTAPI +PhCreateAnsiString( __in PSTR Buffer ); -PPH_ANSI_STRING PhCreateAnsiStringEx( +PHLIBAPI +PPH_ANSI_STRING +NTAPI +PhCreateAnsiStringEx( __in_opt PSTR Buffer, __in SIZE_T Length ); -PPH_ANSI_STRING PhCreateAnsiStringFromUnicode( +PHLIBAPI +PPH_ANSI_STRING +NTAPI +PhCreateAnsiStringFromUnicode( __in PWSTR Buffer ); -PPH_ANSI_STRING PhCreateAnsiStringFromUnicodeEx( +PHLIBAPI +PPH_ANSI_STRING +NTAPI +PhCreateAnsiStringFromUnicodeEx( __in PWSTR Buffer, __in SIZE_T Length ); @@ -1395,66 +1522,102 @@ typedef struct _PH_STRING_BUILDER PPH_STRING String; } PH_STRING_BUILDER, *PPH_STRING_BUILDER; -VOID PhInitializeStringBuilder( +PHLIBAPI +VOID +NTAPI +PhInitializeStringBuilder( __out PPH_STRING_BUILDER StringBuilder, __in ULONG InitialCapacity ); -VOID PhDeleteStringBuilder( +PHLIBAPI +VOID +NTAPI +PhDeleteStringBuilder( __inout PPH_STRING_BUILDER StringBuilder ); -PPH_STRING PhReferenceStringBuilderString( +PHLIBAPI +PPH_STRING +NTAPI +PhReferenceStringBuilderString( __in PPH_STRING_BUILDER StringBuilder ); -VOID PhStringBuilderAppend( +PHLIBAPI +VOID +NTAPI +PhStringBuilderAppend( __inout PPH_STRING_BUILDER StringBuilder, __in PPH_STRING String ); -VOID PhStringBuilderAppend2( +PHLIBAPI +VOID +NTAPI +PhStringBuilderAppend2( __inout PPH_STRING_BUILDER StringBuilder, __in PWSTR String ); -VOID PhStringBuilderAppendEx( +PHLIBAPI +VOID +NTAPI +PhStringBuilderAppendEx( __inout PPH_STRING_BUILDER StringBuilder, __in PWSTR String, __in ULONG Length ); -VOID PhStringBuilderAppendChar( +PHLIBAPI +VOID +NTAPI +PhStringBuilderAppendChar( __inout PPH_STRING_BUILDER StringBuilder, __in WCHAR Character ); -VOID PhStringBuilderAppendFormat( +PHLIBAPI +VOID +NTAPI +PhStringBuilderAppendFormat( __inout PPH_STRING_BUILDER StringBuilder, __in __format_string PWSTR Format, ... ); -VOID PhStringBuilderInsert( +PHLIBAPI +VOID +NTAPI +PhStringBuilderInsert( __inout PPH_STRING_BUILDER StringBuilder, __in ULONG Index, __in PPH_STRING String ); -VOID PhStringBuilderInsert2( +PHLIBAPI +VOID +NTAPI +PhStringBuilderInsert2( __inout PPH_STRING_BUILDER StringBuilder, __in ULONG Index, __in PWSTR String ); -VOID PhStringBuilderInsertEx( +PHLIBAPI +VOID +NTAPI +PhStringBuilderInsertEx( __inout PPH_STRING_BUILDER StringBuilder, __in ULONG Index, __in PWSTR String, __in ULONG Length ); -VOID PhStringBuilderRemove( +PHLIBAPI +VOID +NTAPI +PhStringBuilderRemove( __inout PPH_STRING_BUILDER StringBuilder, __in ULONG StartIndex, __in ULONG Count @@ -1481,50 +1644,77 @@ typedef struct _PH_LIST PPVOID Items; } PH_LIST, *PPH_LIST; -PPH_LIST PhCreateList( +PHLIBAPI +PPH_LIST +NTAPI +PhCreateList( __in ULONG InitialCapacity ); -VOID PhAddListItem( +PHLIBAPI +VOID +NTAPI +PhAddListItem( __inout PPH_LIST List, __in PVOID Item ); -VOID PhAddListItems( +PHLIBAPI +VOID +NTAPI +PhAddListItems( __inout PPH_LIST List, __in PPVOID Items, __in ULONG Count ); -VOID PhClearList( +PHLIBAPI +VOID +NTAPI +PhClearList( __inout PPH_LIST List ); __success(return != -1) -ULONG PhIndexOfListItem( +PHLIBAPI +ULONG +NTAPI +PhIndexOfListItem( __in PPH_LIST List, __in PVOID Item ); -VOID PhInsertListItem( +PHLIBAPI +VOID +NTAPI +PhInsertListItem( __inout PPH_LIST List, __in ULONG Index, __in PVOID Item ); -VOID PhInsertListItems( +PHLIBAPI +VOID +NTAPI +PhInsertListItems( __inout PPH_LIST List, __in ULONG Index, __in PPVOID Items, __in ULONG Count ); -VOID PhRemoveListItem( +PHLIBAPI +VOID +NTAPI +PhRemoveListItem( __inout PPH_LIST List, __in ULONG Index ); -VOID PhRemoveListItems( +PHLIBAPI +VOID +NTAPI +PhRemoveListItems( __inout PPH_LIST List, __in ULONG StartIndex, __in ULONG Count @@ -1548,7 +1738,10 @@ typedef INT (NTAPI *PPH_COMPARE_FUNCTION)( __in PVOID Context ); -VOID PhSortList( +PHLIBAPI +VOID +NTAPI +PhSortList( __in PPH_LIST List, __in PPH_COMPARE_FUNCTION CompareFunction, __in PVOID Context @@ -1899,21 +2092,33 @@ C_ASSERT(FIELD_OFFSET(PH_FREE_LIST_ENTRY, ListEntry) == 0x0); C_ASSERT(FIELD_OFFSET(PH_FREE_LIST_ENTRY, Body) == 0x10); #endif -VOID PhInitializeFreeList( +PHLIBAPI +VOID +NTAPI +PhInitializeFreeList( __out PPH_FREE_LIST FreeList, __in SIZE_T Size, __in ULONG MaximumCount ); -VOID PhDeleteFreeList( +PHLIBAPI +VOID +NTAPI +PhDeleteFreeList( __inout PPH_FREE_LIST FreeList ); -PVOID PhAllocateFromFreeList( +PHLIBAPI +PVOID +NTAPI +PhAllocateFromFreeList( __inout PPH_FREE_LIST FreeList ); -VOID PhFreeToFreeList( +PHLIBAPI +VOID +NTAPI +PhFreeToFreeList( __inout PPH_FREE_LIST FreeList, __in PVOID Memory ); @@ -1973,22 +2178,34 @@ typedef struct _PH_CALLBACK PH_QUEUED_LOCK BusyCondition; } PH_CALLBACK, *PPH_CALLBACK; -VOID PhInitializeCallback( +PHLIBAPI +VOID +NTAPI +PhInitializeCallback( __out PPH_CALLBACK Callback ); -VOID PhDeleteCallback( +PHLIBAPI +VOID +NTAPI +PhDeleteCallback( __inout PPH_CALLBACK Callback ); -VOID PhRegisterCallback( +PHLIBAPI +VOID +NTAPI +PhRegisterCallback( __inout PPH_CALLBACK Callback, __in PPH_CALLBACK_FUNCTION Function, __in PVOID Context, __out PPH_CALLBACK_REGISTRATION Registration ); -VOID PhRegisterCallbackEx( +PHLIBAPI +VOID +NTAPI +PhRegisterCallbackEx( __inout PPH_CALLBACK Callback, __in PPH_CALLBACK_FUNCTION Function, __in PVOID Context, @@ -1996,12 +2213,18 @@ VOID PhRegisterCallbackEx( __out PPH_CALLBACK_REGISTRATION Registration ); -VOID PhUnregisterCallback( +PHLIBAPI +VOID +NTAPI +PhUnregisterCallback( __inout PPH_CALLBACK Callback, __inout PPH_CALLBACK_REGISTRATION Registration ); -VOID PhInvokeCallback( +PHLIBAPI +VOID +NTAPI +PhInvokeCallback( __in PPH_CALLBACK Callback, __in PVOID Parameter ); @@ -2046,45 +2269,72 @@ FORCEINLINE VOID PhIncrementMultipleCallbackSync( // general -ULONG PhGetPrimeNumber( +PHLIBAPI +ULONG +NTAPI +PhGetPrimeNumber( __in ULONG Minimum ); -ULONG PhRoundUpToPowerOfTwo( +PHLIBAPI +ULONG +NTAPI +PhRoundUpToPowerOfTwo( __in ULONG Number ); -ULONG PhExponentiate( +PHLIBAPI +ULONG +NTAPI +PhExponentiate( __in ULONG Base, __in ULONG Exponent ); -ULONG64 PhExponentiate64( +PHLIBAPI +ULONG64 +NTAPI +PhExponentiate64( __in ULONG64 Base, __in ULONG Exponent ); -ULONG PhLog2( +PHLIBAPI +ULONG +NTAPI +PhLog2( __in ULONG Exponent ); -BOOLEAN PhHexStringToBuffer( +PHLIBAPI +BOOLEAN +NTAPI +PhHexStringToBuffer( __in PPH_STRING String, __out_bcount(String->Length / sizeof(WCHAR) / 2) PUCHAR Buffer ); -PPH_STRING PhBufferToHexString( +PHLIBAPI +PPH_STRING +NTAPI +PhBufferToHexString( __in PUCHAR Buffer, __in ULONG Length ); -BOOLEAN PhStringToInteger64( +PHLIBAPI +BOOLEAN +NTAPI +PhStringToInteger64( __in PPH_STRINGREF String, __in_opt ULONG Base, __out PLONG64 Integer ); -PPH_STRING PhIntegerToString64( +PHLIBAPI +PPH_STRING +NTAPI +PhIntegerToString64( __in LONG64 Integer, __in_opt ULONG Base, __in BOOLEAN Signed @@ -2097,7 +2347,10 @@ PPH_STRING PhIntegerToString64( #define PH_TIMESPAN_HMSM 1 #define PH_TIMESPAN_DHMS 2 -VOID PhPrintTimeSpan( +PHLIBAPI +VOID +NTAPI +PhPrintTimeSpan( __out_ecount(PH_TIMESPAN_STR_LEN_1) PWSTR Destination, __in ULONG64 Ticks, __in_opt ULONG Mode @@ -2149,25 +2402,37 @@ PPH_STRING PhaSubstring( // basesupx -VOID FASTCALL PhxfAddInt32( +PHLIBAPI +VOID +FASTCALL +PhxfAddInt32( __inout __needsAlign(16) PLONG A, __in __needsAlign(16) PLONG B, __in ULONG Count ); -VOID FASTCALL PhxfAddInt32U( +PHLIBAPI +VOID +FASTCALL +PhxfAddInt32U( __inout PLONG A, __in PLONG B, __in ULONG Count ); -VOID FASTCALL PhxfDivideSingleU( +PHLIBAPI +VOID +FASTCALL +PhxfDivideSingleU( __inout PFLOAT A, __in PFLOAT B, __in ULONG Count ); -VOID FASTCALL PhxfDivideSingle2U( +PHLIBAPI +VOID +FASTCALL +PhxfDivideSingle2U( __inout PFLOAT A, __in FLOAT B, __in ULONG Count @@ -2175,11 +2440,17 @@ VOID FASTCALL PhxfDivideSingle2U( // error -NTSTATUS PhDosErrorToNtStatus( +PHLIBAPI +NTSTATUS +NTAPI +PhDosErrorToNtStatus( __in ULONG DosError ); -BOOLEAN PhNtStatusFileNotFound( +PHLIBAPI +BOOLEAN +NTAPI +PhNtStatusFileNotFound( __in NTSTATUS Status ); @@ -2209,22 +2480,34 @@ typedef struct _PH_BINARY_TREE #define PH_BINARY_TREE_INIT(CompareFunction) { { NULL, NULL, NULL }, 0, CompareFunction } -VOID PhInitializeBinaryTree( +PHLIBAPI +VOID +NTAPI +PhInitializeBinaryTree( __out PPH_BINARY_TREE Tree, __in PPH_BINARY_TREE_COMPARE_FUNCTION CompareFunction ); -PPH_BINARY_LINKS PhBinaryTreeAdd( +PHLIBAPI +PPH_BINARY_LINKS +NTAPI +PhBinaryTreeAdd( __inout PPH_BINARY_TREE Tree, __out PPH_BINARY_LINKS Subject ); -VOID PhBinaryTreeRemove( +PHLIBAPI +VOID +NTAPI +PhBinaryTreeRemove( __inout PPH_BINARY_TREE Tree, __inout PPH_BINARY_LINKS Subject ); -PPH_BINARY_LINKS PhBinaryTreeSearch( +PHLIBAPI +PPH_BINARY_LINKS +NTAPI +PhBinaryTreeSearch( __in PPH_BINARY_TREE Tree, __in PPH_BINARY_LINKS Subject ); @@ -2254,22 +2537,34 @@ typedef struct _PH_AVL_TREE #define PH_AVL_TREE_INIT(CompareFunction) { { NULL, NULL, NULL, 0 }, 0, CompareFunction } -VOID PhInitializeAvlTree( +PHLIBAPI +VOID +NTAPI +PhInitializeAvlTree( __out PPH_AVL_TREE Tree, __in PPH_AVL_TREE_COMPARE_FUNCTION CompareFunction ); -PPH_AVL_LINKS PhAvlTreeAdd( +PHLIBAPI +PPH_AVL_LINKS +NTAPI +PhAvlTreeAdd( __inout PPH_AVL_TREE Tree, __out PPH_AVL_LINKS Subject ); -VOID PhAvlTreeRemove( +PHLIBAPI +VOID +NTAPI +PhAvlTreeRemove( __inout PPH_AVL_TREE Tree, __inout PPH_AVL_LINKS Subject ); -PPH_AVL_LINKS PhAvlTreeSearch( +PHLIBAPI +PPH_AVL_LINKS +NTAPI +PhAvlTreeSearch( __in PPH_AVL_TREE Tree, __in PPH_AVL_LINKS Subject ); @@ -2436,24 +2731,36 @@ typedef struct _PH_WORK_QUEUE_ITEM VOID PhWorkQueueInitialization(); -VOID PhInitializeWorkQueue( +PHLIBAPI +VOID +NTAPI +PhInitializeWorkQueue( __out PPH_WORK_QUEUE WorkQueue, __in ULONG MinimumThreads, __in ULONG MaximumThreads, __in ULONG NoWorkTimeout ); -VOID PhDeleteWorkQueue( +PHLIBAPI +VOID +NTAPI +PhDeleteWorkQueue( __inout PPH_WORK_QUEUE WorkQueue ); -VOID PhQueueWorkQueueItem( +PHLIBAPI +VOID +NTAPI +PhQueueWorkQueueItem( __inout PPH_WORK_QUEUE WorkQueue, __in PTHREAD_START_ROUTINE Function, __in PVOID Context ); -VOID PhQueueGlobalWorkQueueItem( +PHLIBAPI +VOID +NTAPI +PhQueueGlobalWorkQueueItem( __in PTHREAD_START_ROUTINE Function, __in PVOID Context ); diff --git a/2.x/trunk/phlib/include/phgui.h b/2.x/trunk/phlib/include/phgui.h index b79e5de52..24af2174c 100644 --- a/2.x/trunk/phlib/include/phgui.h +++ b/2.x/trunk/phlib/include/phgui.h @@ -207,6 +207,7 @@ FORCEINLINE LRESULT PhReflectMessage( return 0; } +PHLIBAPI HWND PhCreateListViewControl( __in HWND ParentHandle, __in INT_PTR Id @@ -234,6 +235,7 @@ FORCEINLINE VOID PhSetListViewStyle( ); } +PHLIBAPI INT PhAddListViewColumn( __in HWND ListViewHandle, __in INT Index, @@ -244,6 +246,7 @@ INT PhAddListViewColumn( __in PWSTR Text ); +PHLIBAPI INT PhAddListViewItem( __in HWND ListViewHandle, __in INT Index, @@ -251,47 +254,55 @@ INT PhAddListViewItem( __in PVOID Param ); +PHLIBAPI INT PhFindListViewItemByFlags( __in HWND ListViewHandle, __in INT StartIndex, __in ULONG Flags ); +PHLIBAPI INT PhFindListViewItemByParam( __in HWND ListViewHandle, __in INT StartIndex, __in PVOID Param ); +PHLIBAPI LOGICAL PhGetListViewItemImageIndex( __in HWND ListViewHandle, __in INT Index, __out PINT ImageIndex ); +PHLIBAPI LOGICAL PhGetListViewItemParam( __in HWND ListViewHandle, __in INT Index, __out PPVOID Param ); +PHLIBAPI VOID PhRemoveListViewItem( __in HWND ListViewHandle, __in INT Index ); +PHLIBAPI VOID PhSetListViewItemImageIndex( __in HWND ListViewHandle, __in INT Index, __in INT ImageIndex ); +PHLIBAPI VOID PhSetListViewItemStateImage( __in HWND ListViewHandle, __in INT Index, __in INT StateImage ); +PHLIBAPI VOID PhSetListViewSubItem( __in HWND ListViewHandle, __in INT Index, @@ -299,19 +310,23 @@ VOID PhSetListViewSubItem( __in PWSTR Text ); +PHLIBAPI BOOLEAN PhLoadListViewColumnSettings( __in HWND ListViewHandle, __in PPH_STRING Settings ); +PHLIBAPI PPH_STRING PhSaveListViewColumnSettings( __in HWND ListViewHandle ); +PHLIBAPI HWND PhCreateTabControl( __in HWND ParentHandle ); +PHLIBAPI INT PhAddTabControlTab( __in HWND TabControlHandle, __in INT Index, @@ -321,26 +336,31 @@ INT PhAddTabControlTab( #define PHA_GET_DLGITEM_TEXT(hwndDlg, id) \ ((PPH_STRING)PHA_DEREFERENCE(PhGetWindowText(GetDlgItem(hwndDlg, id)))) +PHLIBAPI PPH_STRING PhGetWindowText( __in HWND hwnd ); +PHLIBAPI VOID PhAddComboBoxStrings( __in HWND hWnd, __in PWSTR *Strings, __in ULONG NumberOfStrings ); +PHLIBAPI PPH_STRING PhGetComboBoxString( __in HWND hwnd, __in INT Index ); +PHLIBAPI PPH_STRING PhGetListBoxString( __in HWND hwnd, __in INT Index ); +PHLIBAPI VOID PhShowContextMenu( __in HWND hwnd, __in HWND subHwnd, @@ -348,6 +368,7 @@ VOID PhShowContextMenu( __in POINT point ); +PHLIBAPI UINT PhShowContextMenu2( __in HWND hwnd, __in HWND subHwnd, @@ -355,6 +376,7 @@ UINT PhShowContextMenu2( __in POINT point ); +PHLIBAPI VOID PhSetMenuItemBitmap( __in HMENU Menu, __in ULONG Item, @@ -362,39 +384,46 @@ VOID PhSetMenuItemBitmap( __in HBITMAP Bitmap ); +PHLIBAPI VOID PhSetRadioCheckMenuItem( __in HMENU Menu, __in ULONG Id, __in BOOLEAN RadioCheck ); +PHLIBAPI VOID PhEnableMenuItem( __in HMENU Menu, __in ULONG Id, __in BOOLEAN Enable ); +PHLIBAPI VOID PhEnableAllMenuItems( __in HMENU Menu, __in BOOLEAN Enable ); +PHLIBAPI VOID PhSetStateAllListViewItems( __in HWND hWnd, __in ULONG State, __in ULONG Mask ); +PHLIBAPI PVOID PhGetSelectedListViewItemParam( __in HWND hWnd ); +PHLIBAPI VOID PhGetSelectedListViewItemParams( __in HWND hWnd, __out PVOID **Items, __out PULONG NumberOfItems ); +PHLIBAPI VOID PhSetImageListBitmap( __in HIMAGELIST ImageList, __in INT Index, @@ -429,11 +458,13 @@ VOID PhImageListWrapperRemove( __in INT Index ); +PHLIBAPI VOID PhSetClipboardString( __in HWND hWnd, __in PPH_STRINGREF String ); +PHLIBAPI VOID PhSetClipboardStringEx( __in HWND hWnd, __in PWSTR Buffer, @@ -475,15 +506,18 @@ typedef struct _PH_LAYOUT_MANAGER ULONG LayoutNumber; } PH_LAYOUT_MANAGER, *PPH_LAYOUT_MANAGER; +PHLIBAPI VOID PhInitializeLayoutManager( __out PPH_LAYOUT_MANAGER Manager, __in HWND RootWindowHandle ); +PHLIBAPI VOID PhDeleteLayoutManager( __inout PPH_LAYOUT_MANAGER Manager ); +PHLIBAPI PPH_LAYOUT_ITEM PhAddLayoutItem( __inout PPH_LAYOUT_MANAGER Manager, __in HWND Handle, @@ -491,6 +525,7 @@ PPH_LAYOUT_ITEM PhAddLayoutItem( __in ULONG Anchor ); +PHLIBAPI PPH_LAYOUT_ITEM PhAddLayoutItemEx( __inout PPH_LAYOUT_MANAGER Manager, __in HWND Handle, @@ -499,6 +534,7 @@ PPH_LAYOUT_ITEM PhAddLayoutItemEx( __in RECT Margin ); +PHLIBAPI VOID PhLayoutManagerLayout( __inout PPH_LAYOUT_MANAGER Manager ); @@ -549,6 +585,7 @@ FORCEINLINE VOID PhCopyControlRectangle( // icotobmp +PHLIBAPI HBITMAP PhIconToBitmap( __in HICON Icon, __in ULONG Width, @@ -617,10 +654,12 @@ typedef HFONT (NTAPI *PPH_EXTLV_GET_ITEM_FONT)( __in PVOID Context ); +PHLIBAPI VOID PhSetExtendedListView( __in HWND hWnd ); +PHLIBAPI VOID PhSetHeaderSortIcon( __in HWND hwnd, __in INT Index, @@ -787,6 +826,7 @@ typedef struct _PH_ACCESS_ENTRY VOID PhSecurityEditorInitialization(); +PHLIBAPI HPROPSHEETPAGE PhCreateSecurityPage( __in PWSTR ObjectName, __in PPH_GET_OBJECT_SECURITY GetObjectSecurity, @@ -796,6 +836,7 @@ HPROPSHEETPAGE PhCreateSecurityPage( __in ULONG NumberOfAccessEntries ); +PHLIBAPI VOID PhEditSecurity( __in HWND hWnd, __in PWSTR ObjectName, @@ -869,18 +910,21 @@ FORCEINLINE ACCESS_MASK PhGetAccessForSetSecurity( return access; } +PHLIBAPI __callback NTSTATUS PhStdGetObjectSecurity( __out PSECURITY_DESCRIPTOR *SecurityDescriptor, __in SECURITY_INFORMATION SecurityInformation, __in PVOID Context ); +PHLIBAPI __callback NTSTATUS PhStdSetObjectSecurity( __in PSECURITY_DESCRIPTOR SecurityDescriptor, __in SECURITY_INFORMATION SecurityInformation, __in PVOID Context ); +PHLIBAPI NTSTATUS PhGetSeObjectSecurity( __in HANDLE Handle, __in SE_OBJECT_TYPE ObjectType, @@ -888,6 +932,7 @@ NTSTATUS PhGetSeObjectSecurity( __out PSECURITY_DESCRIPTOR *SecurityDescriptor ); +PHLIBAPI NTSTATUS PhSetSeObjectSecurity( __in HANDLE Handle, __in SE_OBJECT_TYPE ObjectType, @@ -897,12 +942,14 @@ NTSTATUS PhSetSeObjectSecurity( // secdata +PHLIBAPI BOOLEAN PhGetAccessEntries( __in PWSTR Type, __out PPH_ACCESS_ENTRY *AccessEntries, __out PULONG NumberOfAccessEntries ); +PHLIBAPI PPH_STRING PhGetAccessString( __in ACCESS_MASK Access, __in PPH_ACCESS_ENTRY AccessEntries, diff --git a/2.x/trunk/phlib/include/queuedlock.h b/2.x/trunk/phlib/include/queuedlock.h index 2f4e6244c..a7b2bda51 100644 --- a/2.x/trunk/phlib/include/queuedlock.h +++ b/2.x/trunk/phlib/include/queuedlock.h @@ -61,55 +61,88 @@ FORCEINLINE VOID PhInitializeQueuedLock( QueuedLock->Value = 0; } -VOID FASTCALL PhfAcquireQueuedLockExclusive( +PHLIBAPI +VOID +FASTCALL +PhfAcquireQueuedLockExclusive( __inout PPH_QUEUED_LOCK QueuedLock ); -VOID FASTCALL PhfAcquireQueuedLockShared( +PHLIBAPI +VOID +FASTCALL +PhfAcquireQueuedLockShared( __inout PPH_QUEUED_LOCK QueuedLock ); -VOID FASTCALL PhfReleaseQueuedLockExclusive( +PHLIBAPI +VOID +FASTCALL +PhfReleaseQueuedLockExclusive( __inout PPH_QUEUED_LOCK QueuedLock ); -VOID FASTCALL PhfReleaseQueuedLockShared( +PHLIBAPI +VOID +FASTCALL +PhfReleaseQueuedLockShared( __inout PPH_QUEUED_LOCK QueuedLock ); -VOID FASTCALL PhfTryWakeQueuedLock( +PHLIBAPI +VOID +FASTCALL +PhfTryWakeQueuedLock( __inout PPH_QUEUED_LOCK QueuedLock ); #define PhPulseCondition PhfPulseCondition -VOID FASTCALL PhfPulseCondition( +PHLIBAPI +VOID +FASTCALL +PhfPulseCondition( __inout PPH_QUEUED_LOCK Condition ); #define PhPulseAllCondition PhfPulseAllCondition -VOID FASTCALL PhfPulseAllCondition( +PHLIBAPI +VOID +FASTCALL +PhfPulseAllCondition( __inout PPH_QUEUED_LOCK Condition ); #define PhWaitForCondition PhfWaitForCondition -VOID FASTCALL PhfWaitForCondition( +PHLIBAPI +VOID +FASTCALL +PhfWaitForCondition( __inout PPH_QUEUED_LOCK Condition, __inout_opt PPH_QUEUED_LOCK Lock, __in_opt PLARGE_INTEGER Timeout ); #define PhQueueWakeEvent PhfQueueWakeEvent -VOID FASTCALL PhfQueueWakeEvent( +PHLIBAPI +VOID +FASTCALL +PhfQueueWakeEvent( __inout PPH_QUEUED_LOCK WakeEvent, __out PPH_QUEUED_WAIT_BLOCK WaitBlock ); -VOID FASTCALL PhfSetWakeEvent( +PHLIBAPI +VOID +FASTCALL +PhfSetWakeEvent( __inout PPH_QUEUED_LOCK WakeEvent ); #define PhWaitForWakeEvent PhfWaitForWakeEvent -NTSTATUS FASTCALL PhfWaitForWakeEvent( +PHLIBAPI +NTSTATUS +FASTCALL +PhfWaitForWakeEvent( __inout PPH_QUEUED_LOCK WakeEvent, __inout PPH_QUEUED_WAIT_BLOCK WaitBlock, __in_opt PLARGE_INTEGER Timeout diff --git a/2.x/trunk/phlib/include/ref.h b/2.x/trunk/phlib/include/ref.h index 7eb9c3e5d..4dbcf508d 100644 --- a/2.x/trunk/phlib/include/ref.h +++ b/2.x/trunk/phlib/include/ref.h @@ -120,39 +120,65 @@ NTSTATUS PhCreateObjectTypeEx( __in_opt PPH_OBJECT_TYPE_PARAMETERS Parameters ); -VOID PhDereferenceObject( +PHLIBAPI +VOID +NTAPI +PhDereferenceObject( __in PVOID Object ); -BOOLEAN PhDereferenceObjectDeferDelete( +PHLIBAPI +BOOLEAN +NTAPI +PhDereferenceObjectDeferDelete( __in PVOID Object ); -__mayRaise LONG PhDereferenceObjectEx( +__mayRaise +PHLIBAPI +LONG +NTAPI +PhDereferenceObjectEx( __in PVOID Object, __in LONG RefCount, __in BOOLEAN DeferDelete ); -PPH_OBJECT_TYPE PhGetObjectType( +PHLIBAPI +PPH_OBJECT_TYPE +NTAPI +PhGetObjectType( __in PVOID Object ); -VOID PhGetObjectTypeInformation( +PHLIBAPI +VOID +NTAPI +PhGetObjectTypeInformation( __in PPH_OBJECT_TYPE ObjectType, __out PPH_OBJECT_TYPE_INFORMATION Information ); -VOID PhReferenceObject( +PHLIBAPI +VOID +NTAPI +PhReferenceObject( __in PVOID Object ); -__mayRaise LONG PhReferenceObjectEx( +__mayRaise +PHLIBAPI +LONG +NTAPI +PhReferenceObjectEx( __in PVOID Object, __in LONG RefCount ); -BOOLEAN PhReferenceObjectSafe( +PHLIBAPI +BOOLEAN +NTAPI +PhReferenceObjectSafe( __in PVOID Object ); @@ -198,7 +224,10 @@ FORCEINLINE VOID PhSwapReference2( if (oldObject) PhDereferenceObject(oldObject); } -NTSTATUS PhCreateAlloc( +PHLIBAPI +NTSTATUS +NTAPI +PhCreateAlloc( __out PVOID *Alloc, __in SIZE_T Size ); @@ -230,19 +259,33 @@ typedef struct _PH_AUTO_POOL struct _PH_AUTO_POOL *NextPool; } PH_AUTO_POOL, *PPH_AUTO_POOL; -VOID PhInitializeAutoPool( +PHLIBAPI +VOID +NTAPI +PhInitializeAutoPool( __out PPH_AUTO_POOL AutoPool ); -__mayRaise VOID PhDeleteAutoPool( +__mayRaise +PHLIBAPI +VOID +NTAPI +PhDeleteAutoPool( __inout PPH_AUTO_POOL AutoPool ); -__mayRaise VOID PhaDereferenceObject( +__mayRaise +PHLIBAPI +VOID +NTAPI +PhaDereferenceObject( __in PVOID Object ); -VOID PhDrainAutoPool( +PHLIBAPI +VOID +NTAPI +PhDrainAutoPool( __in PPH_AUTO_POOL AutoPool );