|
分類:[C#]
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("000214E6-0000-0000-C000-000000000046")]
private interface IShellFolder
{
[PreserveSig]
int ParseDisplayName(IntPtr hwnd, IntPtr pbc, [In, MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName,
out uint pchEaten, out ItemIDList ppidl, ref uint pdwAttributes);
-----------------
pchEatenとpdwAttributesを使う場合はこれでいいのですが、NULLを指定したい場合はどうすればいいのでしょうか?
outやref引数にnullは渡せませんよね?
普通のエクスポート関数ならオーバーロードすればいいのですが、インターフェースのメソッドの場合は駄目なようです。
Nullable型も試してみたのですが、ジェネリック型をマーシャリングすることはできませんと例外が出ました。
今は以下のようにして、pchEatenやpdwAttributesを使う場合はunsafeでポインタをとって…
とやってるのですが、unsafeを使わない方法はないですかね…
[PreserveSig]
int ParseDisplayName(IntPtr hwnd, IntPtr pbc, [In, MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName,
IntPtr pchEaten, out ItemIDList ppidl, IntPtr pdwAttributes);
|