Marshal.ZeroFreeGlobalAllocAnsi メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Marshal.ZeroFreeGlobalAllocAnsi メソッドの意味・解説 

Marshal.ZeroFreeGlobalAllocAnsi メソッド

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

SecureStringToGlobalAllocAnsi メソッド使用して割り当てられたアンマネージ文字列ポインタ解放します。

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

Public Shared Sub ZeroFreeGlobalAllocAnsi
 ( _
    s As IntPtr _
)
Dim s As IntPtr

Marshal.ZeroFreeGlobalAllocAnsi(s)
public static void ZeroFreeGlobalAllocAnsi
 (
    IntPtr s
)
public:
static void ZeroFreeGlobalAllocAnsi (
    IntPtr s
)
public static void ZeroFreeGlobalAllocAnsi
 (
    IntPtr s
)
public static function ZeroFreeGlobalAllocAnsi
 (
    s : IntPtr
)

パラメータ

s

解放するアンマネージ文字列アドレス

解説解説

ZeroFreeGlobalAllocAnsi メソッドは、SecureStringToGlobalAllocAnsi メソッド使用して割り当てられたアンマネージ メモリ消去してから解放します。

メモメモ

このメソッドは SecurityAction.LinkDemand を使用して信頼関係のないコードからの呼び出し防ぎます。SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前呼び出し元にのみ要求されます。信頼性一部しか確認されていないコードから呼び出すことができるコード場合ユーザー入力検証せずに Marshal クラスに渡すことは避けてくださいLinkDemand メンバ使用に関する重要な制約事項については、「Demand と LinkDemand」を参照してください

使用例使用例

SecureStringToGlobalAllocAnsi メソッド使用して、SecureString オブジェクト内容をアンマネージ メモリ ブロックマーシャリングし、復号化するコード例次に示します。このコード例では、次に ZeroFreeGlobalAllocAnsi メソッド使用して、アンマネージ ブロック消去し破棄します。

Imports System
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Security
Imports System.Security.Principal
Imports System.Text




Module MarshalExample



    Sub Main(ByVal args() As
 String)

        Dim unmanagedRef As IntPtr

        Try
            ' Ask the user for a password.
            Console.Write("Please enter your password:")

            Dim passWord As SecureString =
 GetPassword()

            Console.WriteLine("Copying and decrypting the string
 to unmanaged memory...")

            ' Copy the Secure string to unmanaged memory (and decrypt
 it).
            unmanagedRef = Marshal.SecureStringToGlobalAllocAnsi(passWord)


        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally
            If unmanagedRef <> IntPtr.Zero Then

                Console.WriteLine("Zeroing out unmanaged memory...")

                Marshal.ZeroFreeGlobalAllocAnsi(unmanagedRef)

            End If

        End Try

        Console.WriteLine("Done.")

        Console.ReadLine()

    End Sub



    Function GetPassword() As SecureString
        Dim password As New
 SecureString()

        ' get the first character of the password
        Dim nextKey As ConsoleKeyInfo = Console.ReadKey(True)

        While nextKey.Key <> ConsoleKey.Enter
            If nextKey.Key = ConsoleKey.BackSpace Then
                If password.Length > 0 Then
                    password.RemoveAt(password.Length - 1)

                    ' erase the last * as well
                    Console.Write(nextKey.KeyChar)
                    Console.Write(" ")
                    Console.Write(nextKey.KeyChar)
                End If
            Else
                password.AppendChar(nextKey.KeyChar)
                Console.Write("*")
            End If

            nextKey = Console.ReadKey(True)
        End While

        Console.WriteLine()

        ' lock the password down
        password.MakeReadOnly()
        Return password

    End Function
End Module
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Principal;
using System.Text;

namespace SecureStringExample
{

    class MarshalExample
    {


        static void Main(string[]
 args)
        {
            IntPtr unmanagedRef = IntPtr.Zero;

            try
            {
                // Ask the user for a password.
                Console.Write("Please enter your password:");

                SecureString passWord = GetPassword();

                Console.WriteLine("Copying and decrypting the string
 to unmanaged memory...");

                // Copy the Secure string to unmanaged memory (and decrypt
 it).
                unmanagedRef = Marshal.SecureStringToGlobalAllocAnsi(passWord);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                if (unmanagedRef != IntPtr.Zero)
                {
                    Console.WriteLine("Zeroing out unmanaged memory...");

                    Marshal.ZeroFreeGlobalAllocAnsi(unmanagedRef);
                }
            }

            Console.WriteLine("Done.");

            Console.ReadLine();


        }

        public static SecureString GetPassword()
        {
            SecureString password = new SecureString();

            // get the first character of the password
            ConsoleKeyInfo nextKey = Console.ReadKey(true);

            while (nextKey.Key != ConsoleKey.Enter)
            {
                if (nextKey.Key == ConsoleKey.Backspace)
                {
                    if (password.Length > 0)
                    {
                        password.RemoveAt(password.Length - 1);

                        // erase the last * as well
                        Console.Write(nextKey.KeyChar);
                        Console.Write(" ");
                        Console.Write(nextKey.KeyChar);
                    }
                }
                else
                {
                    password.AppendChar(nextKey.KeyChar);
                    Console.Write("*");
                }

                nextKey = Console.ReadKey(true);
            }

            Console.WriteLine();

            // lock the password down
            password.MakeReadOnly();
            return password;
        }
    }
}
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



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

辞書ショートカット

すべての辞書の索引

「Marshal.ZeroFreeGlobalAllocAnsi メソッド」の関連用語

Marshal.ZeroFreeGlobalAllocAnsi メソッドのお隣キーワード
検索ランキング

   

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



Marshal.ZeroFreeGlobalAllocAnsi メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS