Share via


Marshal.StringToHGlobalUni メソッド

マネージ String の内容をアンマネージ メモリにコピーします。

Public Shared Function StringToHGlobalUni( _
   ByVal s As String _) As IntPtr
[C#]
public static IntPtr StringToHGlobalUni(strings);
[C++]
public: static IntPtr StringToHGlobalUni(String* s);
[JScript]
public static function StringToHGlobalUni(
   s : String) : IntPtr;

パラメータ

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

戻り値

s のコピー先となった、アンマネージ メモリ内のアドレス。 null 参照 (Visual Basic では Nothing) 文字列が提供された場合は 0。

例外

例外の種類 条件
OutOfMemoryException メソッドが十分なネイティブ ヒープ メモリを割り当てることができませんでした。

解説

StringToHGlobalUni は、カスタム マーシャリングを実行するとき、またはマネージ コードとアンマネージ コードを混在させるときに使用します。このメソッドは文字列で必要とされるアンマネージ メモリを割り当てるため、必ず FreeHGlobal を呼び出すことによってメモリを解放してください。このメソッドは、 Marshal.PtrToStringUni と反対の機能を提供します。

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

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

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

Marshal クラス | Marshal メンバ | System.Runtime.InteropServices 名前空間 | PtrToStringUni