SafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > SafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティの意味・解説 

SafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティ

メモ : このプロパティは、.NET Framework version 2.0新しく追加されたものです。

ハンドル無効かどうかを示す値を取得します

名前空間: Microsoft.Win32.SafeHandles
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Dim instance As SafeHandleZeroOrMinusOneIsInvalid
Dim value As Boolean

value = instance.IsInvalid
public override bool IsInvalid { get;
 }
/** @property */
public boolean get_IsInvalid ()

プロパティ
ハンドル無効な場合trueそれ以外場合false

解説解説
使用例使用例

SafeHandleZeroOrMinusOneIsInvalid クラスから派生したクラス作成する方法コード例次に示します。この例では、アンマネージ メモリへのポインタラップするクラス作成します

Imports System
Imports System.Security.Permissions
Imports System.Runtime.InteropServices
Imports Microsoft.Win32.SafeHandles



Module Example

    Sub Main()

        Dim ptr As IntPtr = Marshal.AllocHGlobal(10)

        Console.WriteLine("Ten bytes of unmanaged memory allocated.")

        Dim memHabdle As New
 SafeUnmanagedMemoryHandle(ptr, True)

        If memHabdle.IsInvalid Then
            Console.WriteLine("SafeUnmanagedMemoryHandle is invalid!.")
        Else
            Console.WriteLine("SafeUnmanagedMemoryHandle class
 initialized to unmanaged memory.")
        End If

        Console.ReadLine()

    End Sub
End Module




' Demand unmanaged code permission to use this class.
<SecurityPermission(SecurityAction.Demand, UnmanagedCode:=True)> _
NotInheritable Class SafeUnmanagedMemoryHandle
    Inherits SafeHandleZeroOrMinusOneIsInvalid


    ' Set ownsHandle to true for the default constructor.
    Friend Sub New()
        MyBase.New(True)

    End Sub 'New

    ' Set the handle and set ownsHandle to true.
    Friend Sub New(ByVal
 preexistingHandle As IntPtr, ByVal ownsHandle
 As Boolean)
        MyBase.New(ownsHandle)
        SetHandle(preexistingHandle)

    End Sub 'New


    ' Perform any specific actions to release the 
    ' handle in the ReleaseHandle method.
    ' Often, you need to use Pinvoke to make
    ' a call into the Win32 API to release the 
    ' handle. In this case, however, we can use
    ' the Marshal class to release the unmanaged
    ' memory.
    Protected Overrides Function
 ReleaseHandle() As Boolean
        ' "handle" is the internal
        ' value for the IntPtr handle.
        ' If the handle was set,
        ' free it. Return success.
        If handle <> IntPtr.Zero Then

            ' Free the handle.
            Marshal.FreeHGlobal(handle)

            ' Set the handle to zero.
            handle = IntPtr.Zero

            ' Return success.
            Return True
        End If

        ' Return false. 
        Return False

    End Function
End Class

using System;
using System.Security.Permissions;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;

namespace SafeHandleExamples
{
    class Example
    {
        public static void
 Main()
        {

            IntPtr ptr = Marshal.AllocHGlobal(10);

            Console.WriteLine("Ten bytes of unmanaged memory allocated.");

            SafeUnmanagedMemoryHandle memHabdle = new SafeUnmanagedMemoryHandle(ptr,
 true);

            if (memHabdle.IsInvalid)
            {
                Console.WriteLine("SafeUnmanagedMemoryHandle is invalid!.");
            }
            else
            {
                Console.WriteLine("SafeUnmanagedMemoryHandle class
 initialized to unmanaged memory.");
            }

            Console.ReadLine();
        }
    }




    // Demand unmanaged code permission to use this class.
    [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
    sealed class SafeUnmanagedMemoryHandle : SafeHandleZeroOrMinusOneIsInvalid
    {

        // Set ownsHandle to true for the default constructor.
        internal SafeUnmanagedMemoryHandle() : base(true)
 { }

        // Set the handle and set ownsHandle to true.
        internal SafeUnmanagedMemoryHandle(IntPtr preexistingHandle, bool
 ownsHandle)
            : base(ownsHandle)
        {
            SetHandle(preexistingHandle);
        }

        // Perform any specific actions to release the 
        // handle in the ReleaseHandle method.
        // Often, you need to use Pinvoke to make
        // a call into the Win32 API to release the 
        // handle. In this case, however, we can use
        // the Marshal class to release the unmanaged
        // memory.
        override protected bool ReleaseHandle()
        {
            // "handle" is the internal
            // value for the IntPtr handle.

            // If the handle was set,
            // free it. Return success.
            if (handle != IntPtr.Zero)
            {

                // Free the handle.
                Marshal.FreeHGlobal(handle);

                // Set the handle to zero.
                handle = IntPtr.Zero;

                // Return success.
                return true;

            }

            // Return false. 
            return false;

        }
    }
}

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


このページでは「.NET Framework クラス ライブラリ リファレンス」からSafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティを検索した結果を表示しています。
Weblioに収録されているすべての辞書からSafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からSafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティ を検索

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

辞書ショートカット

すべての辞書の索引

SafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティのお隣キーワード
検索ランキング

   

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



SafeHandleZeroOrMinusOneIsInvalid.IsInvalid プロパティのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS