HidD_GetInputReport failed problem

Hi,

I tried to write an user mode application for my USB Mouse. The USB Mouse
have 2 interface,1 is a normal mouse,the other one is a keyboard that
could be defined key value by customer. Now I want to SET/GET REPORT to
this USB Mouse Device like this:

19.0 CTL 21 09 00 02 00 00 04 00 SET REPORT
19.0 DO 03 00 00 00
19.0 CTL a1 01 00 01 00 00 02 00 GET REPORT
19.0 DI 00 00

And I used HidD_GetInputReport to GET REPORT,but HidD_GetInputReport
returned false. I tried GetLastError and It returned
0x01(ERROR_INVALID_FUNCTION). And SET REPORT(HidD_SetOutputReport) is the
same error.
I tried these code on another compliant USB Mouse(not the same type
mouse),it is ok.

char OutputReport[256] = {0};
OutputReport[0] = 0x00;
ret = HidD_GetInputReport(
hDeviceHandle,
OutputReport,
hidPCaps.InputReportByteLength);
if( ret == FALSE )
{
err = GetLastError(); // err ==0x01
CloseHandle(hDeviceHandle);
return FALSE;
}

what should I pay attention to for calling
HidD_GetInputReport/HidD_SetOutputReport?

thanks~!~
gundomcz,
070309