类别 |
描述 |
创建 / 获取句柄系统调用 |
创建 / 获取句柄函数 |
释放句柄函数 |
未通知状态 |
通知状态 |
等待成功的副作用
|
目录
|
用来存放内核对象。多级嵌套的目录将所有内核对象组织成一个树形结构
|
NtCreateDirectoryObject NtOpenDirectoryObject
|
|
|
|
|
无
|
进程
|
线程的集合,拥有共同的虚拟内存空间与控制信息
|
NtCreateProcess NtOpenProcess
|
CreateProcess OpenProcess GetCurrentProcess
|
CloseHandle TerminateProcess
|
进程仍然活动时
|
进程终止运行时 (TerminateProcess ExitProcess)
|
无
|
线程
|
进程内部,执行程序的实体。
|
NtCreateThread NtOpenThread
|
CreateThread CreateThreadEx OpenThread GetCurrentThread
|
CloseHandle TerminateThread
|
线程仍然活动时
|
线程终止运行时 (TerminateThread ExitThread)
|
无
|
作业
|
进程的集合
|
NtCreateJobObject NtOpenJobObject
|
CreateJobObject
|
CloseHandle
|
当作业的时间尚未结束时
|
当作业的时间已经结束时
|
无
|
文件
|
一个打开的计算机文件或 I/O 设备。
|
NtCreateFile NtOpenFile
|
CreateFile
|
CloseHandle DeleteFile
|
当 I/O 请求正在处理时
|
当 I/O 请求处理完毕时
|
无
|
文件映射对象
|
一块内存区域,映射到一个文件。
|
NtCreateSection NtOpenSection
|
CreateFileMapping
|
CloseHandle
|
|
|
|
访问令牌
|
一个对象的访问权。
|
NtCreateToken NtDuplicateToken NtOpenProcessToken NtOpenThreadToken
|
CreateRestrictedToken DuplicateToken DuplicateTokenEx OpenProcessToken OpenThreadToken
|
CloseHandle
|
|
|
|
事件
|
封装了某些信息的一个对象,用于通知某些进程。
|
NtCreateEvent NtOpenEvent
|
CreateEvent CreateEventEx OpenEvent
|
CloseHandle
|
ResetEvent,或 PulseEvent,或自动重置事件等待成功
|
当调用 SetEvent,或 PulseEvent
|
自动重置事件等待成功后将自动重置
|
信号量
|
用于串行化访问某些资源的对象。
|
NtCreateSemaphore NtOpenSemaphore
|
CreateSemaphore CreateSemaphoreEx OpenSemaphore
|
CloseHandle
|
当数量 <=0 时
|
当数量 >0 时(ReleaseSemaphore)
|
数量减 1
|
互斥锁
|
用于串行化访问某些资源的对象。
|
无
|
CreateMutex CreateMutexEx OpenMutex
|
CloseHandle
|
被其他线程拥有时
|
未被其他线程拥有时
|
等待成功的线程获得 CPU 所有权
|
临界区域
|
使得指定的代码段被串行执行
|
无
|
InitializeCriticalSection InitializeCriticalSectionAndSpinCount
|
DeleteCriticalSection
|
被其他线程拥有时(试图 EnterCriticalSection)
|
未被其他线程拥有时(LeaveCriticalSection)
|
等待成功的线程获得 CPU 所有权
|
定时器
|
按照固定时间间隔通知某些进程的对象。
|
NtCreateTimer NtOpenTimer
|
CreateWaitableTimer CreateWaitableTimerEx
|
CloseHandle
|
CancelWaitableTimer 或自动重置定时器等待成功
|
当时间到时(SetWaitableTimer)
|
自动重置定时器等待成功将 reset
|
Timer queue
|
|
无
|
|
|
|
|
|
Timer-queue timer
|
|
无
|
|
|
|
|
|
注册表键值
|
Windows 注册表条目的键值,数据类型不是 HANDLE 而是 HKEY
|
|
RegCreateKeyEx RegOpenKeyEx
|
RegCloseKey
|
|
|
|
桌面
|
包含 GUI 元素的一个逻辑显示面,数据类型是 HDESK
|
无
|
CreateDesktop OpenDesktop GetThreadDesktop
|
CloseDesktop
|
|
|
|
WindowStation
|
包含一些桌面对象、一块剪贴板对象、以及其他对象的对象,数据类型是 HWINSTA
|
无
|
CreateWindowStation OpenWindowStation GetProcessWindowStation
|
CloseWindowStation
|
|
|
|
剪贴板
|
用于其它对象的临时存储空间。
|
无
|
OpenClipboard
|
CloseClipboard
|
|
|
|
符号链接
|
对其他对象的引用
|
NtCreateSymbolicLinkObject NtOpenSymbolicLinkObject
|
|
|
|
|
|
事件日志
|
|
无
|
OpenEventLog RegisterEventSource OpenBackupEventLog
|
CloseEventLog
|
|
|
|
目录下更改通知
|
若指定的目录下发生了文件名、属性等更改,则唤起本事件
|
|
FindFirstChangeNotification
|
FindCloseChangeNotification
|
没有发生指定监视类型的修改
|
发生了指定监视类型的修改
|
重置事件状态;若需要监视下一次更改,使用循环搭配 FindNextChangeNotification
|
堆内存
|
|
无
|
HeapCreate GetProcessHeap GetProcessHeaps
|
HeapDestroy 不应释放进程的缺省堆
|
|
|
|
I/O 完成端口
|
|
NtCreateIoCompletion NtOpenIoCompletion
|
CreateIoCompletionPort
|
CloseHandle
|
|
|
|
Mailslot
|
|
NtCreateMailslotFile
|
CreateMailslot
|
CloseHandle
|
|
|
|
内存资源通知
|
|
|
CreateMemoryResourceNotification
|
CloseHandle
|
|
|
|
模块
|
只有自己 LoadLibrary 加载的 DLL 才需要释放;数据类型为 HMODULE;WinMain 函数的 hInstance 参数是指向 EXE 主程序的 HMODULE(数据类型为 HINSTANCE)
|
无
|
LoadLibrary LoadLibraryEx GetModuleHandle GetModuleHandleEx WinMain 函数的 hInstance 参数
|
FreeLibrary
|
|
|
|
管道
|
管道可以是双工(双向传输)的;创建管道的一方称为服务端,连接到已存在或将要存在的管道的一方称为客户端
|
NtCreateNamedPipeFile
|
CreateNamedPipe CreatePipe CreateFile
|
CloseHandle DisconnectNamedPipe
|
|
|
|
套接字
|
Unix 下的套接字只是普通 fd,而 Windows 下的套接字一般而言和普通(文件系统)文件不一样,推荐使用专门的套接字 API 操作;数据类型是 SOCKET(UINT_PTR)
|
无
|
WSASocket WSAAccept
|
closesocket
|
|
|
与文件类似
|
资源更新
|
使用 UpdateResource 更新某个 PE 模块中的资源(Resource,包括字符串、图标等)
|
无
|
BeginUpdateResource
|
EndUpdateResource
|
|
|
|