Я пытаюсь вызвать эту функцию в .net compact framework из неуправляемой dll, которую дал мне manufacter устройства:
Bool GetModelInfo(LPTSTR pszInfo, DWORD dwInfoType);
infoType является одним из следующих перечислений:
enum ModemInfoType{
Model_name,
Model_revision,
Model_IMEI,
Model_IMSI
};
Мой фактический вызов pinvoke следующий:
[System.Runtime.InteropServices.DllImportAttribute(gsmaAdapterDLLName, EntryPoint = "#36", CallingConvention = CallingConvention.Winapi)]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
internal static extern bool GetModelInfo([System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStr)] out string pszInfo, uint dwInfoType);
Я знаю, что они должны были собрать строку, просто не знаю, должен ли я передавать stringBuilder вместо строки. Проблема в том, что я получаю NotSupportedException при попытке выполнить вызов функции.
/// <summary>
/// Gets the modem info.
/// </summary>
/// <param name="modemInfo">The modem info.</param>
/// <param name="infoRequested">The info requested.</param>
/// <returns></returns>
public bool GetModemInfo(out string modemInfo, NativeHelper.ModemInfoType infoRequested)
{
String _mymodemInfo;
if (NativeImports.GetModelInfo(out _mymodemInfo, (uint)infoRequested) == true)
{
modemInfo = _mymodemInfo;
return true;
}
else
{
modemInfo = "";
return false;
}
}
Это моя функция-обертка, которая вызывает собственный метод