本文整理汇总了C#中Microsoft.Win32.SafeHandles.SafeProcessHandle.DangerousGetHandle方法的典型用法代码示例。如果您正苦于以下问题:C# SafeProcessHandle.DangerousGetHandle方法的具体用法?C# SafeProcessHandle.DangerousGetHandle怎么用?C# SafeProcessHandle.DangerousGetHandle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Win32.SafeHandles.SafeProcessHandle
的用法示例。
在下文中一共展示了SafeProcessHandle.DangerousGetHandle方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Protect
public Protect(SafeProcessHandle handle, VirtualQueryInfo info, int protect)
{
this.handle = handle;
this.info = info;
this.protect = protect;
if (protect == info.Protect)
return;
int oldProtect;
if (!Win32.VirtualProtectEx(handle.DangerousGetHandle(), (IntPtr)info.StartAddress, (IntPtr)info.RegionSize, protect, out oldProtect))
throw new Win32Exception();
}
示例2: ProcessWaitHandle
internal ProcessWaitHandle(SafeProcessHandle processHandle)
{
// Get the process ID from the process handle. The handle is just a facade that wraps
// the process ID, and closing the handle won't affect the process or its ID at all.
// So we can grab it, and it's not "dangerous".
int processId = (int)processHandle.DangerousGetHandle();
// Create a wait state holder for this process ID. This gives us access to the shared
// wait state associated with this process.
_waitStateHolder = new ProcessWaitState.Holder(processId);
// Get the wait state's event, and use that event's safe wait handle
// in place of ours. This will let code register for completion notifications
// on this ProcessWaitHandle and be notified when the wait state's handle completes.
ManualResetEvent mre = _waitStateHolder._state.EnsureExitedEvent();
this.SetSafeWaitHandle(mre.GetSafeWaitHandle());
}
示例3: ProcessName_internal
static string ProcessName_internal(SafeProcessHandle handle)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return ProcessName_internal (handle.DangerousGetHandle ());
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例4: GetModules_internal
ProcessModule[] GetModules_internal (SafeProcessHandle handle)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return GetModules_internal (handle.DangerousGetHandle ());
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例5: TerminateProcess
public static bool TerminateProcess (SafeProcessHandle processHandle, int exitCode)
{
bool release = false;
try {
processHandle.DangerousAddRef (ref release);
return TerminateProcess (processHandle.DangerousGetHandle (), exitCode);
} finally {
if (release)
processHandle.DangerousRelease ();
}
}
示例6: SetPriorityClass
public static bool SetPriorityClass(SafeProcessHandle handle, int priorityClass)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return SetPriorityClass (handle.DangerousGetHandle (), priorityClass);
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例7: GetProcessTimes
public static bool GetProcessTimes (SafeProcessHandle handle, out long creation, out long exit, out long kernel, out long user)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return GetProcessTimes (handle.DangerousGetHandle (), out creation, out exit, out kernel, out user);
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例8: SetProcessWorkingSetSize
public static bool SetProcessWorkingSetSize (SafeProcessHandle handle, IntPtr min, IntPtr max)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return SetProcessWorkingSetSize (handle.DangerousGetHandle (), min, max);
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例9: WaitForInputIdle
public static int WaitForInputIdle (SafeProcessHandle handle, int milliseconds)
{
bool release = false;
try {
handle.DangerousAddRef (ref release);
return WaitForInputIdle (handle.DangerousGetHandle (), milliseconds);
} finally {
if (release)
handle.DangerousRelease ();
}
}
示例10: GetProcessIdFromHandle
/// <summary>Gets the ID of a process from a handle to the process.</summary>
/// <param name="processHandle">The handle.</param>
/// <returns>The process ID.</returns>
public static int GetProcessIdFromHandle(SafeProcessHandle processHandle)
{
return (int)processHandle.DangerousGetHandle(); // not actually dangerous; just wraps a process ID
}
示例11: GetLogicalName
static unsafe string GetLogicalName(SafeProcessHandle handle)
{
var data = new byte[2048];
int size = data.Length;
var result = NtQueryObject(handle.DangerousGetHandle(), OBJECT_INFORMATION_CLASS.ObjectNameInformation, data, size, ref size);
if (result < NtStatus.Success)
throw new Win32Exception();
string name;
fixed (byte* dataPtr = data)
name = ((UNICODE_STRING*)dataPtr)->ToString();
foreach (var pair in TranslateMap)
if (name.StartsWith(pair.Key))
name = pair.Value + name.Substring(pair.Key.Length);
return name;
}