GetStdHandle()如何知道我的进程是什么?

时间:2015-02-17 01:00:45

标签: c++ winapi

当我拨打GetStdHandle()(或其他一些与我的流程有关的功能)时,例如:

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

GetStdHandle()将返回我的进程的STDOUT句柄,但是这个函数如何知道我的进程是什么,我的意思是我没有将进程id作为参数给它。

1 个答案:

答案 0 :(得分:0)

好吧,让我们假装您需要传递进程ID。你会怎么做呢?

DWORD my_id = GetCurrentProcessId();
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE, my_id);

显然,如果我们不止一次打电话给我们,我们可以通过将它放入辅助函数来节省一些重复工作:

HANDLE MyGetStdHandle(DWORD nStdHandle)
{
  DWORD my_id = GetCurrentProcessId();
  return GetStdHandle(STD_OUTPUT_HANDLE, my_id);
}

但是,很多人都需要这个功能。也许我们应该把它放到一个库......或者一个API ......实际上,让我们把它添加到Windows API并称之为GetStdHandle()。

他们做了什么。

(好吧,它并没有真正起作用,但我认为它说明了这一点.Windows API 已经知道你从哪个进程调用它,或者它不会&# 39;能够做任何事情。)