2

考虑一个典型的 P/Invoke 声明,如下所示:

[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool LookupAccountName(
string SystemName,
string accountName,
IntPtr pSid,
ref uint cbSid,
[MarshalAs(UnmanagedType.LPWStr)] StringBuilder ReferencedDomainName,
ref uint ReferencedDomainNameCount,
out SID_NAME_USE SIDUse);

LookupAccountName 的 MSDN 文档说明了这一点pSid,如果客户愿意,ReferencedDomainName也可能如此。nullptr过关nullptrpSid容易;只是通过IntPtr.Zero。但是一个人应该通过什么来获得 a StringBuilder

我不想传递一个空的StringBuilder,因为我不希望这个调用失败ERROR_INSUFFICIENT_BUFFER

4

1 回答 1

8

你可以只传递null这个参数;它将被编组为空指针。

于 2013-03-05T23:50:48.070 回答