Yes, you definitely need to call GetBuffer(). Do not access m_surface.pSurface directly.
The reason is that pSurface always points to buffer memory pointer (and is renamed to pBuffer in GD 1.1), and not pixel origo. On stationary PCs these two addresses are the same, on most Pocket PCs they are not. Also, you do not know the pixel format of the surface unless you call GetBuffer() - it can be 555 or 565.
Use GetBuffer() and you will always receive the correct buffer pointer.