When calling HidD_GetFeature you set the first byte in the buffer to the Report ID of the feature report you want to get (if the top-level collection doesn't specify a Report ID, you set that bit to zero). Then you can parse the rest of the buffer according to the Report ID. Since you know the Report ID you should know how the data is laid out in the buffer.
As far as I know, if you don't know the layout of the data or even the Report IDs, you can use the
HIDClass Support Routines[
^] (HidD_GetPreparsedData, HidP_GetValueCaps, HidP_GetButtonCaps...) to discover the preparsed data of the top-level collection you're interested in and deal with the report. Preparsed data represents a top-level collection's part of the report descriptor.