Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku. Další informace |
Překlad
Originál
|
Marshal.StringToHGlobalAnsi – metoda
Zkopíruje obsah spravovaných String do nespravovaného paměťového převod do formátu ANSI. kopie
Sestavení: mscorlib (v mscorlib.dll)
Parametry
- s
- Typ: System.String
Spravované řetězec zkopírovat.
Vrácená hodnota
Typ: System.IntPtrAdresu v paměti nespravované, kam s byla kopírované nebo 0 v případě s je null.
| Výjimka | Podmínka |
|---|---|
| OutOfMemoryException |
Není k dispozici dostatek paměti. |
| ArgumentOutOfRangeException |
s Parametr přesahuje maximální délku povolenou operačního systému. |
StringToHGlobalAnsije užitečné pro vlastní zařazování nebo míchání spravovaného a nespravovaného kódu. Protože tato metoda přidělí nespravované paměť pro řetězec, vždy uvolnit paměť volání FreeHGlobal. StringToHGlobalAnsiposkytuje funkce opačné Marshal.PtrToStringAnsi.
Následující příklad ukazuje, jak převést obsah spravovaných String třídy nespravovaného paměťového a potom nakládat nespravovaného paměťového posláno.
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
vyžaduje úplný vztah důvěryhodnosti okamžitému volajícímu. Tento člen nelze použít kód částečně důvěryhodných nebo průhledný.
Windows 7, Windows Vista SP1 nebo novější, Windows XP SP3, 64bitová verze systému Windows XP SP2, Windows Server 2008 (není podpora v roli Server Core), Windows Server 2008 R2 (podpora v roli Server Core s aktualizací SP1 nebo novější), Windows Server 2003 SP2
.NET Framework nepodporuje některé verze platforem. Seznam podporovaných verzí naleznete v tématu Požadavky na systém rozhraní .NET framework.