have you tried this:
[pascal]ZeroMemory( @eff, sizeof(eff) );
eff.dwSize := sizeof(DIEFFECT);
eff.dwFlags := DIEFF_CARTESIAN or DIEFF_OBJECTOFFSETS;
eff.dwDuration := INFINITE;
eff.dwSamplePeriod := 0;
eff.dwGain := DI_FFNOMINALMAX;
eff.dwTriggerButton := DIEB_NOTRIGGER;
eff.dwTriggerRepeatInterval := 0;
eff.cAxes := g_dwNumForceFeedbackAxis;
eff.rgdwAxes := rgdwAxes; // <- !!!
eff.rglDirection := rglDirection; // <- !!!
eff.lpEnvelope := 0;
eff.cbTypeSpecificParams := sizeof(DICONSTANTFORCE);
eff.lpvTypeSpecificParams := @cf;
eff.dwStartDelay := 0; // <- !!!
[/pascal]