首页
社区
课程
招聘
[转帖]使用native API替代SLEEP函数
发表于: 2008-1-31 21:35 5920

[转帖]使用native API替代SLEEP函数

2008-1-31 21:35
5920
use NT native API (all from NTDLL.dll) to replace Sleep function.

-------VC++ code------

NTSTATUS
NTAPI
NtCreateEvent(
  OUT PHANDLE             EventHandle,
  IN ACCESS_MASK          DesiredAccess,
  IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
  IN EVENT_TYPE           EventType,
  IN BOOLEAN              InitialState );

NTSTATUS
NTAPI
NtWaitForSingleObject(
  IN HANDLE               ObjectHandle,
  IN BOOLEAN              Alertable,
  IN PLARGE_INTEGER       TimeOut );
  
NTSTATUS
NTAPI
NtClose(
  IN HANDLE               ObjectHandle );

    LARGE_INTEGER lTime;
    HANDLE hE;

NtCreateEvent(&hE, EVENT_ALL_ACCESS, NULL, 0, 0);
lTime.QuadPart = -5*10000000;  // delay 5 secs
// delay 1 sec : lTime.QuadPart = -1*10000000;  
NtWaitForSingleObject(hE, 0, &lTime);
NtClose(hE);

使用Native API来取代Sleep函数的方法:

------Delphi code------
var
  lTime: LARGE_INTEGER;
  hE: THANDLE;
  i: Cardinal;
begin
  NtCreateEvent(@hE, EVENT_ALL_ACCESS, nil, NotificationEvent, False);
  lTime.QuadPart := -5*10000000; // 延时5秒
  i := NtWaitForSingleObject(hE, False, @lTime);
  ShowMessage(IntToHex(i, 8));
  NtClose(hE);
end;

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 82
活跃值: (291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
安全性问题考虑过没有,我遍历你的进程,打开这个event句柄,然后SetEvent,你的程序逻辑会不会出问题?
2008-2-1 10:31
0
雪    币: 134
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
对系统版本依赖太大,不建议使用。
2008-2-1 11:33
0
游客
登录 | 注册 方可回帖
返回
//