Did you lock the surface before you tried to get the info on the pixel. Sorry but I have NO idea on how the syntax looks in VB. But if it helps. Here is a sample on how to read to pixels in C++.


Code:
IDirect3DTexture8 *Texture=NULL;
D3DLOCKED_RECT LR;
Graphics.D3DDevice->CreateTexture(128,128,0,D3DUSAGE_RENDERTARGET,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&Texture);	
Texture->LockRect(0,&LR,NULL,D3DLOCK_NOSYSLOCK );
	for (int y=0;y<128;y++)	{
		for (int x=0;x<128;x++)		{
			((unsigned long*)LR.pBits)[x + ((y*LR.Pitch)>>2)]=D3DCOLOR_RGBA(255,0,0,255);
		}
	}