Does anyone have any clue why I am failing to lock this surface?

Code:
DDSURFACEDESC2 ddsd;

// this should lock the entire region...
if(FAILED(_lpPrimarySurface->Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL)))
{
	DisplayError("Failed to Lock Surface.");
}