考虑一个典型的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);
MSDN documentation for LookupAccountName表示如果客户愿意,pSid
和ReferencedDomainName
可能是nullptr
。为nullptr
传递pSid
很容易;只需通过IntPtr.Zero
。但是应该为StringBuilder
传递什么?
我不想传递空StringBuilder
,因为我不希望此调用因ERROR_INSUFFICIENT_BUFFER
而失败。
答案 0 :(得分:7)
您可以为此参数传递null
;它将被编组为空指针。