есть функция
NTSTATUS WINAPI Bla-Bla-Bla(
__inout PVOID SystemInformation,
__in ULONG SystemInformationLength,
__out_opt PULONG ReturnLength );
первый параметр — буфер для получения информации переменной длины, второй — длина буфера в байтах.
В буфер попадает массив из структур.
необходимо ее использовать в C#, потому привел ее к надлежащему виду (поправьте если не так):
[DllImport("Bla.dll", EntryPoint="Bla-Bla-Bla")]
static extern long Super(
ref IntPtr SystemInformation,
ulong SystemInformationLength,
out long ReturnLength);
Пример вызова:
IntPtr ptr = Marshal.AllocHGlobal(elementCount * Marshal.SizeOf(typeof(SystemInfoStructure)));
long formal;
Super(ref ptr, (ulong)(elementCount * Marshal.SizeOf(typeof(SystemInfoStructure))), out formal);
Каким образом можно привести полученные в ptr данные к массиву структур?