LsaOpenPolicy構造体を取るを呼び出したいと思いLSA_OBJECT_ATTRIBUTESます。pinvoke.net の構造体定義を使用しています。この構造体にはフィールドがありますpublic LSA_UNICODE_STRING ObjectName;。
LSA_OBJECT_ATTRIBUTESMSDNの記事には次のように書かれています。
を呼び出すときは、関数が情報を使用しないため、
LsaOpenPolicyこの構造体のメンバーをNULLまたはゼロに初期化します。
具体的には:
オブジェクト名
NULL にする必要があります。
LSA_OBJECT_ATTRIBUTES構造体の他のフィールドを(または値の型に対してIntPtr.Zero単純に)割り当てることはできますが、 . 具体的には、0ObjectName
タイプ 'System.IntPtr' を 'LSA_UNICODE_STRING' に暗黙的に変換することはできません
この場合、どうすればよいですか?LSA_UNICODE_STRING長さゼロ (長さ 0、最大長 0、空/ヌル バッファ) を初期化する必要がありますか? LSA_OBJECT_ATTRIBUTESフィールドが になるように定義を変更する必要がありIntPtrますか? null 可能にnullしてそのフィールドに割り当てる必要がありますか?
私はメモリ管理の経験がほとんどないため、メモリ リークを引き起こす可能性のあるものには警戒しています。