Windows对象管理:修订间差异

删除的内容 添加的内容
Low power留言 | 贡献
→‎体系结构:​ 目录类型
Low power留言 | 贡献
→‎体系结构:​ 从表格中移除实际类型重复的项,增加可用于获取句柄 Windows NT 系统调用
第13行:
{| class="wikitable" align="center"
|-
!类别 !!描述 !!创建 / 获取句柄[[系统调用]] !!创建 / 获取句柄函数 !!释放句柄函数 !! 未通知状态 !! 通知状态 !! 等待成功的副作用
|-
!目录
| 用来存放内核对象。多级嵌套的目录将所有内核对象组织成一个树形结构
|NtCreateDirectoryObject<br />NtOpenDirectoryObject
|
|
第25行 ⟶ 第26行:
![[进程]]
| 线程的集合,拥有共同的虚拟内存空间与控制信息
|NtCreateProcess<br />NtOpenProcess
|CreateProcess<br>OpenProcess<br>GetCurrentProcess
|CloseHandle<br>TerminateProcess
第33行 ⟶ 第35行:
![[线程]]
| 进程内部,执行程序的实体。
|NtCreateThread<br />NtOpenThread
|CreateThread<br>CreateThreadEx<br>OpenThread<br>GetCurrentThread
|CloseHandle<br>TerminateThread
第41行 ⟶ 第44行:
![[作業 (電腦)|作业]]
| 进程的集合
|NtCreateJobObject<br />NtOpenJobObject
|CreateJobObject
|CloseHandle
第49行 ⟶ 第53行:
![[電腦檔案|文件]]
| 一个打开的计算机文件或 I/O 设备。
|NtCreateFile<br />NtOpenFile
|CreateFile
|CloseHandle<br>DeleteFile
第57行 ⟶ 第62行:
![[文件映射对象]]
| 一块内存区域,映射到一个文件。
|CreateFileMapping
|CloseHandle
第65行 ⟶ 第71行:
! [[访问令牌]]
| 一个对象的访问权。
|CreateRestrictedToken<br>DuplicateToken<br>DuplicateTokenEx<br>OpenProcessToken<br>OpenThreadToken
|CloseHandle
第73行 ⟶ 第80行:
![[事件 (同步原语)|事件]]
| 封装了某些信息的一个对象,用于通知某些进程。
|CreateEvent<br>CreateEventEx<br>OpenEvent
|CloseHandle
第81行 ⟶ 第89行:
![[信号量]]
| 用于串行化访问某些资源的对象。
|CreateSemaphore<br>CreateSemaphoreEx<br>OpenSemaphore
|CloseHandle
第89行 ⟶ 第98行:
![[互斥锁]]
| 用于串行化访问某些资源的对象。
|CreateMutex<br>CreateMutexEx<br>OpenMutex
|CloseHandle
第97行 ⟶ 第107行:
![[临界区域]]
| 使得指定的代码段被串行执行
|InitializeCriticalSection<br>InitializeCriticalSectionAndSpinCount
|DeleteCriticalSection
第105行 ⟶ 第116行:
![[定时器]]
| 按照固定时间间隔通知某些进程的对象。
|CreateWaitableTimer<br>CreateWaitableTimerEx
|CloseHandle
第113行 ⟶ 第125行:
![[Timer queue]]
|
|-
|
|
第121行 ⟶ 第134行:
![[Timer-queue timer]]
|
|-
|
|
第129行 ⟶ 第143行:
![[注册表|注册表键值]]
| Windows 注册表条目的键值,数据类型不是 HANDLE 而是 HKEY
|无
|RegCreateKeyEx<br>RegOpenKeyEx
|RegCloseKey
第137行 ⟶ 第152行:
![[桌面]]
| 包含 [[GUI]] 元素的一个逻辑显示面,数据类型是 HDESK
|无
|CreateDesktop<br>OpenDesktop<br>GetThreadDesktop
|CloseDesktop
第145行 ⟶ 第161行:
!WindowStation
| 包含一些桌面对象、一块剪贴板对象、以及其他对象的对象,数据类型是 HWINSTA
|无
|CreateWindowStation<br>OpenWindowStation<br>GetProcessWindowStation
|CloseWindowStation
第153行 ⟶ 第170行:
![[剪贴板]]
| 用于其它对象的临时存储空间。
|无
|OpenClipboard
|CloseClipboard
第161行 ⟶ 第179行:
![[符号链接]]
| 对其他对象的引用
|NtCreateSymbolicLinkObject<br />NtOpenSymbolicLinkObject
|
|
第169行 ⟶ 第188行:
![[事件日志]]
|
|无
|OpenEventLog<br>RegisterEventSource<br>OpenBackupEventLog
|CloseEventLog
第177行 ⟶ 第197行:
!目录下更改通知
|若指定的目录下发生了文件名、属性等更改,则唤起本事件
|-
|FindFirstChangeNotification
|FindCloseChangeNotification
第183行 ⟶ 第204行:
|重置事件状态;若需要监视下一次更改,使用循环搭配 FindNextChangeNotification
|-
![[堆|堆内存]]
!通信设备
|
|CreateFile("COM1") 等
|CloseHandle
|
|-
![[控制台]]输入[[缓冲区]]
|GetStdHandle(STD_INPUT_HANDLE)
|CloseHandle
|不存在任何输入时
|存在输入时
|无
|-
!控制台输出(屏幕)缓冲区
|
|GetStdHandle(STD_OUTPUT_HANDLE)<br>GetStdHandle(STD_ERROR_HANDLE)
|CloseHandle
|-
|-
![[堆|堆内存]]
|HeapCreate<br>GetProcessHeap<br>GetProcessHeaps
|HeapDestroy<br>不应释放进程的缺省堆
第218行 ⟶ 第215行:
![[IOCP|I/O 完成端口]]
|
|NtCreateIoCompletion<br />NtOpenIoCompletion
|CreateIoCompletionPort
|CloseHandle
第226行 ⟶ 第224行:
![[Mailslot]]
|
|NtCreateMailslotFile<br />
|CreateMailslot
|CloseHandle
第234行 ⟶ 第233行:
!内存资源通知
|
|-
|CreateMemoryResourceNotification
|CloseHandle
第242行:
![[Portable Executable|模块]]
|只有自己 LoadLibrary 加载的 DLL 才需要释放;数据类型为 HMODULE;WinMain 函数的 hInstance 参数是指向 EXE 主程序的 HMODULE(数据类型为 HINSTANCE)
|无
|LoadLibrary<br>LoadLibraryEx<br>GetModuleHandle<br>GetModuleHandleEx<br>WinMain 函数的 hInstance 参数
|FreeLibrary
第250行 ⟶ 第251行:
![[管道]]
|不同于 Unix 管道,Windows 连匿名管道也可以是双工(双向传输)的;创建管道的一方称为服务端,连接到已存在或将要存在的管道的一方称为客户端
|NtCreateNamedPipeFile
|CreateNamedPipe<br>CreatePipe<br>CreateFile
|CloseHandle<br>DisconnectNamedPipe
第258行 ⟶ 第260行:
![[套接字]]
|Unix 下的套接字只是普通 [[文件描述符|fd]],而 Windows 下的套接字一般而言和普通([[文件系统]])文件不一样,推荐使用专门的套接字 API 操作;数据类型是 SOCKET(UINT_PTR)
|无
|WSASocket<br>WSAAccept
|closesocket
第266行 ⟶ 第269行:
!资源更新
|使用 UpdateResource 更新某个 PE 模块中的资源(Resource,包括字符串、图标等)
|无
|BeginUpdateResource
|EndUpdateResource