Ok what im basicly tried to do is trying to render stuff from an injected c# dll on the unmanaged c++ Direct3DDevice9. (EndScene is already hooked so no i wont ask about how to do that)
What i first tried is creating an c# Device Version out of the c++ Pointer wich actually worked, I could use Clear to fill my screen with a color. But i failed on drawing on it.
(Code Copied from Quick DirectX tutorial in c# from Apoc as i dont have my code anymore.. but it was basicly the same):
Code:
CustomVertex.TransformedColored[] vertices = new CustomVertex.TransformedColored[3];
vertices[0].Position = new Vector4(150f, 100f, 0f, 1f);
vertices[0].Color = Color.Red.ToArgb();
vertices[1].Position = new Vector4(this.Width / 2 + 100f, 100f, 0f, 1f);
vertices[1].Color = Color.Green.ToArgb();
vertices[2].Position = new Vector4(250f, 300f, 0f, 1f);
vertices[2].Color = Color.Yellow.ToArgb();
device.VertexFormat = CustomVertex.TransformedColored.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices);
it didnt do an exception but nor displayed the Triangle on the screen.
I think the problem is that the new Triangle is stored in managed memory and not unmanaged memory from the c++ device?
My 2nd Idea is to get all Function pointers of the c++ device and try it that way but before im putting hours of work in this i wanted to ask if there is an easier way to do so. maybe i was on the right way and just missed something.
i would be thankful for any help 
edit:
another idea i just had while thinking about it again:
could it be possible that the drawing worked BUT the triangle is somewhere i cant see it cause of the world camara settings?