Windows内核对象、用户对象、GDI对象
内核对象
介绍
内核对象是系统地址空间中的一个内存块,由系统创建并维护。内核对象为内核所拥有,而不为进程所拥有,所以不同进程可以访问同一个内核对象。
内核对象的创建函数汇总必须有安全描述符(PSECURITY_ATTRIBUTES),安全描述符描述了谁创建该内核对象,谁能够访问,谁无权访问等信息。
结构
对象头,对象体(OBJECT_HEADER+OBJECT)。所有类型的对象头结构都是相同的,而结构体部分却各不相同的。
指向对象的指针指向对象体OBJECT部分,若要访问OBJECT_HEADER,需要减去0X18、
OBJECT_HEADER的结构如下:
typedef struct _OBJECT_HEADER
{
DWORD PointerCount; // 指针引用的数目
DWORD HandleCount; // 打开句柄的数目
POBJECT_TYPE ObjectType; //指向类型对象的指针
BYTE NameOffset; //对象名的偏移
BYTE HandleDBOffset; // HANDLE DB的偏移
BYTE QuotaChargesOffset; //QUOTA CHARGES的偏移
BYTE ObjectFlags; // 对象标志
union
{ // 对象标志中OB_FLAG_CREATE_INFO ? ObjectCreateInfo : QuotaBlock
PQUOTA_BLOCK QuotaBlock;
POBJECT_CREATE_INFO ObjectCreateInfo;
};
PSECURITY_DESCRIPTOR SecurityDescriptor;
}OBJECT_HEADER, *POBJECT_HEADER;
核心对象
产生方法
事件对象
HANDLE CreateEvent();
文件对象
HANDLE CreateFile();
文件映射对象
HANDLE CreateFileMapping();
I/O完成对象
HANDLE CreateloCompletionPort();
作业对象
HANDLE CreateJobObject();
信箱对象
HANDLE CreateMailslot();
互斥对象
HANDLE CreateMutex();
管道对象
BOOL CreatePipe();
进程对象
BOOL CreateProcess();
信号量对象
HANDLE Create Semaphore();
线程对象
HANDLE CreateThread();
等待及时将其对象
HANDLE CreateWaitableTimer();
用户对象
用户创建的对象,用户具有使用权。
用户对象
产生方法
销毁方法
快捷键(HACCEL)
CreateAcceleratorTable
DestroyAcceleratorTable
插入标记(Caret)
CreateCaret
DestoryCaret
光标(HCURSOR)
CreateCursor,LoadCursor,LoadImage
DestroyCursor
钩子(HHOOK)
SetWindowsHookEx
UnhookWIndowsHookEx
图标(HICON)
CreateIconIndirect,LoadIcon,LoadImage
DestroyIcon
菜单(HMENU)
CreateMenu,CreatePopupMenu,
LoadMenu,LoadMenuIndirect
DeleteMenu
窗体(HWND)
CreateWindow,CreateWindowEx,
CreateDialogParam,CreateMDIWindow
DestroyWindow
延期窗口位置结构句柄(HDWP)
BeginDeferWindowPos
EndDeferWindowPos
GDI对象
图形对象,用户创建,用户具有使用权。
GDI对象
产生方法
销毁方法
位图(HBITMAP)
CreateBitmap,CreateBitmapIndirect,
CreateCompatibleBitmap,CreateDIBitmap,
CreateDIBSection,CreateDiscardableBitmap
DeleteObject
画刷(HBRUSH)
CreateBrushIndirect,CreateDIBPatternBrush,
CreateDIBPatternBrushPt,CreateHatchBrush,
CreatePatternBrush,CreateSolidBrush
DeleteObject
设备上下文(HDC)
CreateDC
DeleteDC,ReleaseDC
字体(HFONT)
CreateFont,CreateFontIndirect
DeleteObject
内存DC(HDC)
CreateCompatibleDC
DeleteDC
调色板(HPALETTE)
CreatePalette
DeleteObject
画笔(HPEN)
CreatePen,CreatePenIndirect
DeleteObject
区域(HRGN)
CombineRgn,CreateEllipticRgn,
CreateEllipticRgnIndirect,CreatePolygonRgn,
CreatePolyPolygonRgn,CreateRectRgn,
CreateRectRgnIndirect,CreateRoundRectRgn
DeleteObject