pub unsafe fn D3D10CompileShader<P0, P1, P2, P3>(
    psrcdata: &[u8],
    pfilename: P0,
    pdefines: Option<*const D3D_SHADER_MACRO>,
    pinclude: P1,
    pfunctionname: P2,
    pprofile: P3,
    flags: u32,
    ppshader: *mut Option<ID3DBlob>,
    pperrormsgs: Option<*mut Option<ID3DBlob>>
) -> Result<()>
where P0: IntoParam<PCSTR>, P1: IntoParam<ID3DInclude>, P2: IntoParam<PCSTR>, P3: IntoParam<PCSTR>,