SafeHandle.SetHandleとは? わかりやすく解説

SafeHandle.SetHandle メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

ハンドル指定した既存ハンドル設定します

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Protected Sub SetHandle ( _
    handle As IntPtr _
)
Dim handle As IntPtr

Me.SetHandle(handle)
protected void SetHandle (
    IntPtr handle
)
protected:
void SetHandle (
    IntPtr handle
)
protected void SetHandle (
    IntPtr handle
)
protected function SetHandle (
    handle : IntPtr
)

パラメータ

handle

使用する既存ハンドル

解説解説
使用例使用例

SetHandle メソッド実装する方法の例を次に示しますハンドル指定した既存ハンドル確実に設定するには、ネイティブ ハンドル割り当てと SafeHandle オブジェクト内でのそのハンドル以降記録を必ず分離不可能な状態にすることが必要です。これらの操作間でエラー発生すると (スレッド中止メモリ不足例外によるエラーなど)、ネイティブ ハンドルリークされることになります。このコード例では、制約され実行領域使用して信頼性実現する方法示してます。

<StructLayout(LayoutKind.Sequential)> _
Structure MyStruct
    Public m_outputHandle As IntPtr
End Structure 'MyStruct


NotInheritable Class MySafeHandle
    Inherits SafeHandle

    ' Called by P/Invoke when returning SafeHandles
    Public Sub New()
        MyBase.New(IntPtr.Zero, True)

    End Sub


    Public Function AllocateHandle() As
 MySafeHandle
        ' Allocate SafeHandle first to avoid failure later.
        Dim sh As New MySafeHandle()

        RuntimeHelpers.PrepareConstrainedRegions()
        Try
        Finally
            Dim myStruct As New
 MyStruct()
            NativeAllocateHandle(myStruct)
            sh.SetHandle(myStruct.m_outputHandle)
        End Try

        Return sh

    End Function


[StructLayout(LayoutKind.Sequential)]
struct MyStruct
{
    public IntPtr m_outputHandle;
}

sealed class MySafeHandle : SafeHandle
{
    // Called by P/Invoke when returning SafeHandles
    public MySafeHandle()
        : base(IntPtr.Zero, true)
    {
    }

    public MySafeHandle AllocateHandle()
    {
        // Allocate SafeHandle first to avoid failure later.
        MySafeHandle sh = new MySafeHandle();

        RuntimeHelpers.PrepareConstrainedRegions();
        try { }
        finally
        {
            MyStruct myStruct = new MyStruct();
            NativeAllocateHandle(ref myStruct);
            sh.SetHandle(myStruct.m_outputHandle);
        }

        return sh;
    }

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
SafeHandle クラス
SafeHandle メンバ
System.Runtime.InteropServices 名前空間

SafeHandle.SetHandle メソッド




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

SafeHandle.SetHandleのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SafeHandle.SetHandleのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS