problem printing DirectX's Canvas

I wrote a routine to print an Image.Canvas(thanks Mike Shkolnik), but when I
try to use it with a DirectX's Canvas it hangs up.

How can I access to the CopyRect property of a TDXDraw?
Should I use the Primary's Canvas or the Surface's Canvas to print from?

Here is my code:
.
.
.
ICentral :TImage;
XCentral :TDXDraw;
UsingDX :boolean;
ARect, BRect :TRect;
.
.
.
     if UsingDX then
     begin
        ARect:= XCentral.Primary.Canvas.ClipRect;                 //it hangs
up the computer here!
        BRect:= ARect;
        Printer.CopyRect(BRect,XCentral.Primary.Canvas,ARect);
     end
     else
     begin
       ARect:= ICentral.Canvas.ClipRect;
       BRect:= ARect;
       Printer.Canvas.CopyRect(BRect, ICentral.Canvas, ARect);
//IT WORKS!
     end;