This is how i do it in Shade-C EVO

Code:
//Return position in view space
//inTex: texcoords in screenspace
//inDepth: linear depth * clip_far
float3 CalculatePosVSQuad(float2 inTex, float inDepth)
{
	float4 viewRay;
	viewRay.x = inTex.x*2-1;
	viewRay.y = (1-inTex.y)*2-1;
	viewRay.z = 1;
	viewRay.w = 1;
		
	viewRay.xyz = mul(viewRay, matProjInv).xyz;
	return (viewRay.xyz * inDepth);
}



Shade-C EVO Lite-C Shader Framework