3. 读取内核对象BITMAPOBJ
typedef struct _SURFOBJ
{
DHSURF dhsurf;
HSURF hsurf;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
}SURFOBJ;
typedef struct _BITMAPOBJ
{
BASEOBJECT BaseObject;
SURFOBJ SurfObj;
FLONG flHooks;
FLONG flFlags;
SIZE dimension; /* For SetBitmapDimension(), do NOT use to get width/height of bitmap, use
bitmap.bmWidth/bitmap.bmHeight for that */
struct _FAST_MUTEX *BitsLock; /* You need to hold this lock before you touch the actual bits in the bitmap */
/* For device-independent bitmaps: */
DIBSECTION *dib;
HPALETTE hDIBPalette;
HDC hDC; // Doc in "Undocumented Windows", page 546, seems to be supported with XP.
}BITMAPOBJ, *PBITMAPOBJ;
NNtKrn::BITMAPOBJ m_bmKrnObj
ywkc.ReadKrnMem(m_pKrnObj, &m_bmKrnObj, sizeof(m_bmKrnObj));