【降低while死循环的线程CPU占用】DLL开发小结.字符串拷贝 strcpy和创建线程_beginthread

本文介绍了一个在DLL开发中遇到的问题:循环监控内存导致CPU占用率过高。通过在循环中加入Sleep(1)指令,有效降低了CPU占用率。文章提供了具体的代码实现示例。

DLL里面的开发,需要循环监控一个内存,但是CPU50% 以上了,用了Sleep(1); 马上见效!

while(1)
{
Sleep(1);
//这里开始写自己的代码,注意这个 Sleep(1); 必须在上面!
}


void WINAPIV Init2(LPVOID pParam)//Init这里是写自己的函数功能
{
    DWORD hMod=0;
	  DWORD hMod2=0;

    DWORD base;
    short x;
    short y;
    DWORD addrX;
    char str[250]="";

    while(1)
	{      
		
				Sleep(1); **//这个必须放这里 放下面都无效 CPU可能还是50% 以上**
       hMod= (DWORD)GetModuleHandle("cld.dll");//获
  

	 if  ( hProcess != NULL  && hMod >1    )
	   {
            addrX = hMod + 0xC7F00;
            ReadProcessMemory(hProcess, (LPVOID)addrX, (LPVOID)&base, 4, NULL);//&取内存地址
            ReadProcessMemory(hProcess,LPVOID(base+0x12C),(LPVOID)&x,2,NULL);
            ReadProcessMemory(hProcess,LPVOID(base+0x12E),(LPVOID)&y,2,NULL);
            sprintf(str,"(X:%i,Y:%i)",x,y);
		     strcpy((char*)(0x00020000 ), str );  // 0x00020000 这个内存是自己申请的  00 00 02 00
           // memcpy((char*)(0x0018C000), str,30);
	 }
	 
	  
	}
	return; 
} 

  _beginthread(Init2,NULL,NULL); //  HOOK  

www.zai996.com 技术站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

侠客软件开发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值