Search code examples
c#pointersunsafeunsafe-pointers

How to read string from pointer to buffer in C#


How can I read the error string in C# from this C++ dll call?

//
//  PARAMETERS:
//      objptr
//          Pointer to class instance.
//
//      pBuffer
//          Pointer to buffer receiving NULL terminated error message string.   
//          If this value is zero, the function returns the required buffer size, in bytes,
//          and makes no use of the pBuffer. 
//
//      nSize
//          Size of receiving buffer.
//          If this value is zero, the function returns the required buffer size, in bytes,
//          and makes no use of the pBuffer. 
//
//  RETURN VALUES:
//      If pBuffer or nSize is zero, the function returns the required buffer size, in bytes.
//      If the function succeeds, the return value is number of bytes copied into pBuffer.
//      If function fails return value is 0.
//
extern unsafe int GetError(uint objptr, byte* pBuffer, int nSize);

thanks!


Solution

  • byte[] buffer = new byte[1000];
    int size;
    unsafe
    {
      fixed ( byte* p = buffer )
      {
        size = GetError( ???, p, buffer.Length ); 
      }
    }
    string result = System.Text.Encoding.Default.GetString( buffer, 0, size );