如何修改windows中单一应用程序的最大句柄数量

编者:李国帅

qq:9611153 微信lgs9611153

时间:2012/9/26 8:58:48

背景原因:

经常有个疑问:一个应用程序可以占用多少句柄?

制作播放器的时候,需要留意句柄数量,因为随着分屏的数量增加和界面的切换,句柄在不停变化。播放器占用的句柄不少,一个播放器开始播放就占用100多个句柄。不过播放16个视频暂时看来是够用的。

 

如何修改注册表:

         找到如下注册表分支:

           HKEY_LOCAL_MACHINE

           – SOFTWARE

           – – Microsoft

           – – – Windows NT

           – – – – CurrentVersion

           – – – – – Windows

           在右侧窗格中可以看到名为“GDIProcessHandleQuota”与“USERProcessHandleQuota”的注册表项;

说明:

默认一个应用程序最多只有10000个句柄和GDI对象

 

GDIProcessHandleQuota项设置GDI句柄数量,默认值为2710(16进制)/10000(10进制),该值的允许范围为 256 ~ 16384 ,将其调整为大于默认的10000的值。

如果您的系统配置了2G或更多内容,不妨将其设置为允许的最大值 16384(10进制);

 

USERProcessHandleQuota项设置用户句柄数量,默认值同样为2710(16进制)/10000(10进制),该值的允许范围为 200 ~ 18000 ,将其调整为更多的数值。同样地,对于具有2GB或更多物理内存的系统,不妨将用户句柄数直接设置为上限 18000(10进制);

 

需要强调的是,修改“GDIProcessHandleQuota”与“USERProcessHandleQuota”值时,不要超过其接受的上限,不然,将导致Windows 无法工作或运行不稳定。

另一方面,即使您的调整其超过其允许的上限,如果发现修改后Windows出现不稳定的症状,便需要将相应的数值调低些,或者恢复默认值。

 

可查看任务管理器的中的句柄数量,进行程序检测。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows 下使用 C++ 获取可执行程序的进程句柄,可以使用 Windows API 函数 CreateProcess。 首先,需要包含 Windows.h 头文件,然后可以使用以下代码创建进程并获取进程句柄: ```c++ #include <Windows.h> PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); BOOL bResult = CreateProcess( NULL, // 可执行程序的路径 NULL, // 命令行参数 NULL, // 进程句柄不可被继承 NULL, // 进程句柄不可被继承 FALSE, // 进程不继承父进程句柄 CREATE_NEW_CONSOLE, // 新建控制台窗口 NULL, // 环境变量指针 NULL, // 工作目录指针 &si, // STARTUPINFO 结构体指针 &pi // PROCESS_INFORMATION 结构体指针 ); if (bResult) { HANDLE processHandle = pi.hProcess; // 获取进程句柄 // ... } CloseHandle(pi.hProcess); // 关闭进程句柄 CloseHandle(pi.hThread); // 关闭线程句柄 ``` 其,第一个参数是可执行程序的路径,可以是绝对路径或者相对路径;第二个参数是命令行参数,可以为 NULL;第三个参数和第四个参数分别指定进程句柄和线程句柄是否可被继承,可以为 NULL;第五个参数指定进程是否继承父进程句柄,一般设置为 FALSE;第六个参数指定新进程的标志,例如是否新建控制台窗口等;第七个参数是环境变量指针,一般为 NULL;第八个参数是工作目录指针,可以为 NULL;第九个参数是 STARTUPINFO 结构体指针,用于指定新进程的标准输入、标准输出和标准错误输出等信息;第十个参数是 PROCESS_INFORMATION 结构体指针,用于接收新进程进程句柄和主线程句柄等信息。 获取到进程句柄后,就可以使用 Windows API 函数操作进程,例如读取或写入进程内存等。需要注意的是,使用完进程句柄后需要关闭句柄,以避免资源泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值