Учитывая префикс "P", похоже, что реальное объявление
hid_get_info(int n, DEV_INFO **pdi)
где DEV_INFO - это структура. Вам нужно найти объявление этой структуры и добавить его в свой код C # с атрибутом [StructLayout]. Затем вы должны объявить функцию в коде C # следующим образом:
[DllImport("blah.dll")]
private static extern something hid_get_info(int n, out IntPtr pdi);
и используйте Marshal.PtrToStructure () для получения значения структуры. Надеюсь, вам не нужно освобождать конструкцию, вас облажают.
Вторая интерпретация заключается в том, что «pid» возвращает массив указателей на структуры DEV_INFO. Вероятно, с учетом аргумента «n», который вполне может означать количество элементов в массиве, который вы передаете для заполнения функцией. В этом случае передайте IntPtr [] и задайте для n значение Length.