I think you want to use a combination of Windows Imaging Component(WIC) and Direct2D. You can initialize a WIC bitmap from various sources (memory buffer, HBITMAP, image file) and access its pixels with bitmap->CopyPixels(). Direct2D is a hardware-accelerated 2D rendering API and it's much MUCH better and faster than GDI.
Yes, it is made to interoperate with GDI. It is essentially the modern replacement for GDI. Just a bit more difficult to learn but there are plenty of examples and documentation on MSDN.
Actually, scratch that. I don't believe Direct2D gives access to bitmap pixel data, but WIC bitmaps do. Direct2D allows you to create D2D bitmaps from WIC bitmaps for rendering.