Desktop Functions: Smart Device Functions:
|
Search Results for "ProcessInfo" in [All]wtsapi32
ref IntPtr ppProcessInfo, // pointer to array of WTS_PROCESS_INFO
ByRef ppProcessInfo As IntPtr, _
IntPtr pProcessInfo = IntPtr.Zero;
if (!WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref pProcessInfo, ref processCount))
IntPtr pMemory = pProcessInfo;
WTS_PROCESS_INFO[] processInfos = new WTS_PROCESS_INFO[processCount];
processInfos[i] = (ProcessInfo)Marshal.PtrToStructure(pProcessInfo, typeof(WTS_PROCESS_INFO));
pProcessInfo = (IntPtr)((int)pProcessInfo + Marshal.SizeOf(processInfos[i]));
return processInfos;
Dim strucProcessInfo As WTS_PROCESS_INFO
Dim ptrProcessInfo As IntPtr
intReturn = WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, ptrProcessInfo, intProcessCount)
lngPtrPos = ptrProcessInfo.ToInt32()
strucProcessInfo = Marshal.PtrToStructure(New IntPtr(lngPtrPos), strucProcessInfo.GetType)
strProcessName = Marshal.PtrToStringAnsi(New IntPtr(strucProcessInfo.ProcessName))
Console.WriteLine ("Process ID: " & strucProcessInfo.ProcessID)
Console.WriteLine ("Session ID: " & strucProcessInfo.SessionID)
lngPtrPos = lngPtrPos + Len(strucProcessInfo)
Call WTSFreeMemory(ptrProcessInfo) Structures
public static extern bool CreateProcessWithTokenW(IntPtr hToken, LogonFlags dwLogonFlags, string lpApplicationName, string lpCommandLine, CreationFlags dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);
Public Shared Function CreateProcessWithTokenW(hToken As IntPtr, dwLogonFlags As Integer, lpApplicationName As String, lpCommandLine As String, dwCreationFlags As Integer, lpEnvironment As IntPtr, lpCurrentDirectory As IntPtr, ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Boolean 3: DEBUG_EVENT
public CREATE_PROCESS_DEBUG_INFO CreateProcessInfo coredll
out ProcessInfo lpProcessInformation
public struct ProcessInfo You will need the above ProcessInfo class and may also want to use GetLastError and WaitForSingleObject. ProcessInfo pi; // no new required since ProcessInfo is a value type (struct)
ProcessInfo pi = new ProcessInfo(); private static bool CreateProcessWait( String ExeName, String CmdLine, ProcessInfo pi, out uint retCode ){
pi = new ProcessInfo(); 6: ProcessInfo
Both of the below examples assume that pi is an instnace of a ProcessInfo class. Examples of the ProcessInfo class can be found on the CreateProcess page. kernel32
out PROCESS_INFORMATION lpProcessInformation);
<[Out]> ByRef lpProcessInformation As PROCESS_INFORMATION) As Boolean advapi32
out PROCESS_INFORMATION lpProcessInformation);
ByRef lpProcessInformation As PROCESS_INFORMATION) As Boolean
<Out()> ByRef lpProcessInformation As PROCESS_INFORMATION) As <MarshalAs(UnmanagedType.Bool)> Boolean
out ProcessInformation processInformation);
Public Function CreateProcessWithLogonW(ByVal userName As String, ByVal domain As String, ByVal password As String, ByVal logonFlags As UInt32, ByVal applicationName As String, ByVal commandLine As String, ByVal creationFlags As UInt32, ByVal environment As UInt32, ByVal currentDirectory As String, ByRef startupInfo As StartupInfo, ByRef processInformation As ProcessInformation) As Boolean
Friend Structure ProcessInformation
End Structure 'ProcessInformation
Public Function CreateProcessWithLogonW(ByVal userName As String, ByVal domain As String, ByVal password As String, ByVal logonFlags As UInt32, ByVal applicationName As String, ByVal commandLine As String, ByVal creationFlags As UInt32, ByVal environment As UInt32, ByVal currentDirectory As String, ByRef startupInfo As StartupInfo, ByRef processInformation As ProcessInformation) As Boolean
Dim processInfo As New ProcessInformation
currentDirectory, startupInfo, processInfo)
WaitForSingleObject(processInfo.process, Infinite)
GetExitCodeProcess(processInfo.process, exitCode)
CloseHandle(processInfo.process)
CloseHandle(processInfo.thread)
internal struct ProcessInformation
out ProcessInformation processInformation);
ProcessInformation processInfo = new ProcessInformation();
out processInfo);
WaitForSingleObject(processInfo.process, Infinite);
GetExitCodeProcess(processInfo.process, ref exitCode);
CloseHandle(processInfo.process);
CloseHandle(processInfo.thread); ntdll
int processInformationClass, IntPtr processInformation, uint processInformationLength,
static extern int NtQueryInformationProcess(IntPtr hProcess, PROCESSINFOCLASS pic,
processHandle As IntPtr, processInformationClass As Integer, _
processInformation As IntPtr, processInformationLength As Integer, _ See also PROCESS_BASIC_INFORMATION, PROCESSINFOCLASS, OpenProcess, CloseHandle.
int queryStatus = NtQueryInformationProcess(hProc, (PROCESSINFOCLASS)0, ref pbi, pbi.Size, out sizeInfoReturned); 12: PROCESSINFOCLASS
private enum PROCESSINFOCLASS: int
MaxProcessInfoClass
Declare Function PROCESSINFOCLASS Lib "ntdll.dll" (TODO) As TODO
SystemProcessInformation = 0x0005,
SystemSessionProcessInformation = 0x0035,
SystemExtendedProcessInformation = 0x0039,
SystemFullProcessInformation = 0x0094, |