There are two mistake I made for this issue.
1. USB hid descriptor misses report id for output report.
I have two report id (1 & 2) for input report, but lack of report id for output, so I add report id (3) for output.
When I call HidD_SetOutputReport, the first byte of buffer is 0x03.
2. Buffer size (65) for output exceeds maximum packet size (64).
I defines the maximum packet size to 64, and output size to 64, but we need one more byte for report id (That means the buffer size is 64 + 1).
After fixing these two problem, my program can use HidD_SetOutputReport successfully.
Thanks for your help.
Sam