我有一个由非托管代码调用的接口。它传递 BSTR 类型,但数据是 ascii 字符串。当它被写入文件时,我看到了意外的字符。我对数据如何传输的思考 Unmanaged[BSTR[ASCII]] --> Managed[String[ASCII]] --> File[Unicode[ASCII]] 所以输入的字符应该与输出的字符相同。它是否正确?非托管代码调用的接口函数如下。
//C# interface called by unmanged code
public void WriteOutFile([In] [MarshalAs(UnmanagedType.BStr)] String asciiData)
{
File.WriteAllText(fileName, asciiData);
}