public static void Can_call_lpstr_extern_function() { var buffer = Pointer.Create <LPSTR>(Marshal.AllocCoTaskMem(1 * MAX_PATH)); try { var length = GetSystemDirectoryA(buffer, MAX_PATH); if (length == 0) { throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error()); } var path = AnsiStringPointer.MarshalToString(buffer, length); Assert.NotNull(path); } finally { Marshal.FreeCoTaskMem(buffer.Pointer); } }
public static void Can_call_lpstr_extern_function(COMPUTER_NAME_FORMAT nameType) { int length = 255; var buffer = Pointer.Create <LPSTR>(Marshal.AllocCoTaskMem(1 * length)); try { bool successful = GetComputerNameExA(nameType, buffer, ref length); if (!successful) { throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error()); } var path = AnsiStringPointer.MarshalToString(buffer, length); Assert.NotNull(path); } finally { Marshal.FreeCoTaskMem(buffer.Pointer); } }