public List <string> ListDevices(int count = Libnfc.MaxUserDefinedDevices + 6) { IntPtr connectionStringsPointer = Marshal.AllocHGlobal(Libnfc.ConnectStringBufferSize * count); var devicesCount = Libnfc.ListDevices(contextPointer, connectionStringsPointer, (uint)count); var devices = new List <string>((int)devicesCount); for (int i = 0; i < devicesCount; i++) { devices.Add(Marshal.PtrToStringAnsi(connectionStringsPointer + i * count)); } Marshal.FreeHGlobal(connectionStringsPointer); return(devices); }