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おり、お客様が希望する場合もありますReferencedDomainNamenullptr合格nullptrするのpSidは簡単です。渡すだけIntPtr.Zeroです。しかし、1つは何を渡す必要がありStringBuilderますか?

StringBuilderこの呼び出しがで失敗したくないので、空を渡したくありませんERROR_INSUFFICIENT_BUFFER

4

1 に答える 1

8

nullこのパラメータを渡すだけです。nullポインタとしてマーシャリングされます。

于 2013-03-05T23:50:48.070 に答える