当我拨打GetStdHandle()
(或其他一些与我的流程有关的功能)时,例如:
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetStdHandle()
将返回我的进程的STDOUT
句柄,但是这个函数如何知道我的进程是什么,我的意思是我没有将进程id作为参数给它。
答案 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;能够做任何事情。)