この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Marshal.StringToHGlobalAnsi メソッド (String)

 

公開日: 2016年10月

マネージの内容をコピー String アンマネージ メモリにコピーされる際に、ANSI 形式に変換します。

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

[SecurityCriticalAttribute]
public static IntPtr StringToHGlobalAnsi(
	string s
)

パラメーター

s
Type: System.String

コピーされるマネージ文字列。

戻り値

Type: System.IntPtr

位置へのアンマネージ メモリ内のアドレス s がコピー、または 0 の場合 snullです。

Exception Condition
OutOfMemoryException

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

ArgumentOutOfRangeException

s パラメーターは、オペレーティング システムで許可された最大の長さを超えています。

StringToHGlobalAnsi カスタム マーシャ リングするため、またはマネージ コードとアンマネージ コードを混在している場合に便利です。 呼び出して、メモリ解放常にこのメソッドは、文字列に必要なアンマネージ メモリを割り当てられる、ため FreeHGlobalです。 StringToHGlobalAnsi 反対側の機能を提供 Marshal.PtrToStringAnsiします。

このメソッドは埋め込まれた null 文字をコピーし、終端の null 文字が含まれています。

次の例では、マネージの内容を変換 String クラスのアンマネージ メモリにし、完了時に、アンマネージ メモリの破棄します。

using System;
using System.Runtime.InteropServices;

class MainFunction
{
    static void Main()
    {
    Console.WriteLine("\nStringToGlobalAnsi\n");

    // Create a managed string.
    String  managedString = "I am a managed String";
    Console.WriteLine("1) managedString = " + managedString );

    // Marshal the managed string to unmanaged memory.
    IntPtr stringPointer = (IntPtr)Marshal.StringToHGlobalAnsi(managedString);
    Console.WriteLine("2) stringPointer = {0}", stringPointer );

    // Get the string back from unmanaged memory
    String RetrievedString = Marshal.PtrToStringAnsi( stringPointer);
    Console.WriteLine("3) Retrieved from unmanaged memory = " + RetrievedString );

    // Always free the unmanaged string.
    Marshal.FreeHGlobal(stringPointer);

    // IntPtr handle value is still the same:
    Console.WriteLine("4) stringPointer = " + stringPointer );

    // However, it contains no data after being freed:
    String RetrievedString2 = Marshal.PtrToStringAnsi( stringPointer);
    Console.WriteLine("5) RetrievedString2 = " + RetrievedString2 );
    }
}

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: