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

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

Marshal.SecureStringToCoTaskMemUnicode メソッド

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

アンマネージ COM タスク アロケータから割り当てられメモリ ブロックに、マネージ SecureString オブジェクト内容コピーします

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

Public Shared Function SecureStringToCoTaskMemUnicode
 ( _
    s As SecureString _
) As IntPtr
Dim s As SecureString
Dim returnValue As IntPtr

returnValue = Marshal.SecureStringToCoTaskMemUnicode(s)
public static IntPtr SecureStringToCoTaskMemUnicode
 (
    SecureString s
)
public:
static IntPtr SecureStringToCoTaskMemUnicode (
    SecureString^ s
)
public static IntPtr SecureStringToCoTaskMemUnicode
 (
    SecureString s
)
public static function SecureStringToCoTaskMemUnicode
 (
    s : SecureString
) : IntPtr

パラメータ

s

コピーするマネージ SecureString オブジェクト

戻り値
s パラメータコピーとなったアンマネージ メモリ内のアドレスnull SecureString オブジェクト提供され場合は 0。

例外例外
例外種類条件

ArgumentNullException

s パラメータnull 参照 (Visual Basic では Nothing) です。

NotSupportedException

現在のコンピュータは、Microsoft Windows 2000 Service Pack 3 以降実行していません。

OutOfMemoryException

使用できるメモリ不足してます。

解説解説
使用例使用例

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

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.SecureStringToCoTaskMemUnicode(passWord)


        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            If unmanagedRef <> IntPtr.Size Then

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

                Marshal.ZeroFreeCoTaskMemUnicode(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.SecureStringToCoTaskMemUnicode(passWord);


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

                    Marshal.ZeroFreeCoTaskMemUnicode(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.SecureStringToCoTaskMemUnicode メソッドのお隣キーワード
検索ランキング

   

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



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

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

©2024 GRAS Group, Inc.RSS