在编写完端口进程关联程序后的完善问题。(句柄数猛增)
用NTQuerySystemInformation(DWORD,PDWORD,DWORD,PDWORD)
必须给第二个参数赋予足够的空间,否则会出错,在NT下,必须将句柄转化为自身的才能有权限看到句柄信息,用BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
LPHANDLE lpTargetHandle,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);
函数,可以作到,但是如果要做实时刷新的程序,每次刷新后就会因为复制句柄导致系统句柄数目增加,导致句柄数超过分配空间,NTQuerySystemInformation()函数返回错误。
我建立了PID链表,可是有些句柄是SOCKET句柄但是没有占用端口,判断上极为复杂,而且因为系统中的句柄少则6k-7k,多则上万,建立链表会导致程序运行效率,和对链表的操作变复杂。
有没有一种方法不用建立链表而不会导致句柄数目只在出现新端口时增加,和端口关闭时减少。