I am trying to access pixel information in an offscreen surface. I have loaded the surface from a bitmap, created the surface and hardware blitted it to the backbuffer. For doing a perfect pixel routine I need to access the pixel information in different surfaces, after the fact. I found a cool routine in VB, and was surprised to find the key method, GetLockedArray, was missing from C++. So I tried to lock the surface in my Collision routine, and access the pixels thru ddsd.lpsurface, but now the Lock method seems to freeze my program every time I try it (tho it did lock and load it initally in the game init routine). Any help along this line would be appreciated.