Это код, который я получил, чтобы получить последнюю ошибку в буфер, но я понятия не имею, как преобразовать IntPtr во что-то, что я мог прочитать ... Я просто получил длинное число.
/// Return Type: void
///pErrorCode: ABS_DWORD*
///ppErrorMessage: ABS_CHAR**
[System.Runtime.InteropServices.DllImportAttribute("bsapi.dll", EntryPoint = "ABSGetLastErrorInfo", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static extern void ABSGetLastErrorInfo(ref uint pErrorCode, ref System.IntPtr ppErrorMessage);
Это из руководства:
void ABSGetLastErrorInfo(
OUT ABS_DWORD *pErrorCode
OUT const ABS_CHAR **ppErrorMessage
)
Описание Извлекает дополнительную информацию о последней ошибке BSAPI, произошедшей в текущем потоке.
ppErrorMessage На выходе это установлено, чтобы указать на буфер, содержащий завершенные нулями
строка с текстовым сообщением.
Если сообщение не предоставлено, оно указывает на пустую строку, так что вызывающая сторона делает
не нужно проверять его на NULL.
Буфер управляется BSAPI; не используйте ABSFree, чтобы выпустить его.
Обратите внимание, что буфер действителен только до тех пор, пока не будет выполнен другой вызов BSAPI
в той же теме. После следующего вызова буфер может быть освобожден или
повторно используется BSAPI. Если вам нужно запомнить сообщение, вы должны
скопируйте его в свой собственный буфер.