Marshal.StructureToPtr Yöntem

Tanım

Aşırı Yüklemeler

Name Description
StructureToPtr(Object, IntPtr, Boolean)
Geçersiz.

Yönetilen bir nesneden verileri yönetilmeyen bir bellek bloğuna sıralar.

StructureToPtr<T>(T, IntPtr, Boolean)

Belirtilen türde yönetilen bir nesneden yönetilmeyen bir bellek bloğuna verileri sıralar.

StructureToPtr(Object, IntPtr, Boolean)

Kaynak:
Marshal.CoreCLR.cs
Kaynak:
Marshal.CoreCLR.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.CoreCLR.cs

Dikkat

StructureToPtr(Object, IntPtr, Boolean) may be unavailable in future releases. Instead, use StructureToPtr<T>(T, IntPtr, Boolean). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296516

Yönetilen bir nesneden verileri yönetilmeyen bir bellek bloğuna sıralar.

public:
 static void StructureToPtr(System::Object ^ structure, IntPtr ptr, bool fDeleteOld);
[System.Obsolete("StructureToPtr(Object, IntPtr, Boolean) may be unavailable in future releases. Instead, use StructureToPtr<T>(T, IntPtr, Boolean). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296516")]
[System.Security.SecurityCritical]
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the StructureToPtr<T> overload instead.")]
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
[System.Security.SecurityCritical]
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
[System.Runtime.InteropServices.ComVisible(true)]
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(true)]
public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
[<System.Obsolete("StructureToPtr(Object, IntPtr, Boolean) may be unavailable in future releases. Instead, use StructureToPtr<T>(T, IntPtr, Boolean). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296516")>]
[<System.Security.SecurityCritical>]
static member StructureToPtr : obj * nativeint * bool -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the StructureToPtr<T> overload instead.")>]
static member StructureToPtr : obj * nativeint * bool -> unit
static member StructureToPtr : obj * nativeint * bool -> unit
[<System.Security.SecurityCritical>]
static member StructureToPtr : obj * nativeint * bool -> unit
[<System.Runtime.InteropServices.ComVisible(true)>]
static member StructureToPtr : obj * nativeint * bool -> unit
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(true)>]
static member StructureToPtr : obj * nativeint * bool -> unit
Public Shared Sub StructureToPtr (structure As Object, ptr As IntPtr, fDeleteOld As Boolean)

Parametreler

structure
Object

Sıralanacak verileri tutan yönetilen nesne. Bu nesne, biçimlendirilmiş bir sınıfın yapısı veya örneği olmalıdır.

ptr
IntPtr

nativeint

Bu yöntem çağrılmadan önce ayrılması gereken yönetilmeyen bellek bloğuna yönelik bir işaretçi.

fDeleteOld
Boolean

truebu yöntem verileri kopyalamadan önce parametresinde DestroyStructure(IntPtr, Type) yöntemini çağırmak ptr için. Blok geçerli veriler içermelidir. Bellek bloğu zaten veri içerdiğinde geçişin false bellek sızıntısına yol açabileceğini unutmayın.

Öznitelikler

Özel durumlar

structure , biçimlendirilmiş bir sınıf olmayan bir başvuru türüdür.

-veya-

structure genel bir türün örneğidir (yalnızca .NET Framework 4.5 ve önceki sürümlerde).

Açıklamalar

Bir değer türüyse structure kutulanabilir veya kutulanmamış olabilir. Kutulanmışsa, kopyalamadan önce kutulanmamıştır.

Biçimlendirilmiş sınıf, düzeni özniteliği tarafından StructLayoutAttribute veya LayoutKind.Explicitolarak LayoutKind.Sequential belirtilen bir başvuru türüdür.

StructureToPtr öğesinin içeriğini structure , parametresinin işaret olduğu önceden ayrılmış bellek bloğuna ptr kopyalar. structure COM arabirim işaretçilerine (arabirimler, düzen içermeyen sınıflar ve System.Object) sıralayan başvuru türleri içeriyorsa, yönetilen nesneler başvuru sayılarıyla canlı tutulur. Diğer tüm başvuru türleri (örneğin, dizeler ve diziler) kopya olarak sıralanır. Bu yönetilen veya yönetilmeyen nesneleri serbest bırakmak için bellek bloğunu Marshal.DestroyStructure boşaltmadan önce yöntemini çağırmanız gerekir.

Daha sonra bellek bloğuna farklı bir örneği kopyalamak için yöntemini kullanırsanızStructureToPtr, önceki örnekteki başvuru türleri için başvuru sayılarının kaldırılması için öğesini belirtintrue.fDeleteOld Aksi takdirde, yönetilen başvuru türleri ve yönetilmeyen kopyalar etkili bir şekilde sızdırılır.

Kullanmak StructureToPtr için genel desen aşağıdaki gibidir:

  1. Bir bellek bloğu ayrıldıktan sonra yöntemine StructureToPtr yapılan ilk çağrıda, fDeleteOld temizlenecek içerik olmadığından olmalıdır false.

    Important

    true Yalnızca bloğun geçerli veriler içerdiğini belirtinfDeleteOld.

  2. Bellek bloğuna farklı bir örnek kopyalarsanız ve nesne başvuru türleri içeriyorsa, fDeleteOldtrue eski içeriklerdeki başvuru türlerini serbest bırakın.

  3. Nesne başvuru türleri içeriyorsa, bellek bloğunu DestroyStructure boşaltmadan önce yöntemini çağırmanız gerekir.

Note

Var olan bir yapıyı kopyalamak yerine sabitlemek için türünü kullanarak System.Runtime.InteropServices.GCHandle yapı için sabitlenmiş bir tanıtıcı oluşturun. Sabitleme hakkında ayrıntılı bilgi için bkz. Kopyalama ve Sabitleme.

Ayrıca bkz.

Şunlara uygulanır

StructureToPtr<T>(T, IntPtr, Boolean)

Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs
Kaynak:
Marshal.cs

Belirtilen türde yönetilen bir nesneden yönetilmeyen bir bellek bloğuna verileri sıralar.

public:
generic <typename T>
 static void StructureToPtr(T structure, IntPtr ptr, bool fDeleteOld);
[System.Security.SecurityCritical]
public static void StructureToPtr<T>(T structure, IntPtr ptr, bool fDeleteOld);
public static void StructureToPtr<T>(T structure, IntPtr ptr, bool fDeleteOld);
[<System.Security.SecurityCritical>]
static member StructureToPtr : 'T * nativeint * bool -> unit
static member StructureToPtr : 'T * nativeint * bool -> unit
Public Shared Sub StructureToPtr(Of T) (structure As T, ptr As IntPtr, fDeleteOld As Boolean)

Tür Parametreleri

T

Yönetilen nesnenin türü.

Parametreler

structure
T

Sıralanacak verileri tutan yönetilen nesne. Nesne, biçimlendirilmiş bir sınıfın yapısı veya örneği olmalıdır.

ptr
IntPtr

nativeint

Bu yöntem çağrılmadan önce ayrılması gereken yönetilmeyen bellek bloğuna yönelik bir işaretçi.

fDeleteOld
Boolean

truebu yöntem verileri kopyalamadan önce parametresinde DestroyStructure<T>(IntPtr) yöntemini çağırmak ptr için. Blok geçerli veriler içermelidir. Bellek bloğu zaten veri içerdiğinde geçişin false bellek sızıntısına yol açabileceğini unutmayın.

Öznitelikler

Özel durumlar

structure , biçimlendirilmiş bir sınıf olmayan bir başvuru türüdür.

Açıklamalar

Biçimlendirilmiş sınıf, düzeni özniteliği tarafından StructLayoutAttribute veya LayoutKind.Explicitolarak LayoutKind.Sequential belirtilen bir başvuru türüdür.

StructureToPtr<T>(T, IntPtr, Boolean) öğesinin içeriğini structure , parametresinin işaret olduğu önceden ayrılmış bellek bloğuna ptr kopyalar. structure COM arabirim işaretçilerine (arabirimler, düzen içermeyen sınıflar ve System.Object) sıralayan başvuru türleri içeriyorsa, yönetilen nesneler başvuru sayılarıyla canlı tutulur. Diğer tüm başvuru türleri (örneğin, dizeler ve diziler) kopya olarak sıralanır. Bu yönetilen veya yönetilmeyen nesneleri serbest bırakmak için bellek bloğunu DestroyStructure<T>(IntPtr) boşaltmadan önce yöntemini çağırmanız gerekir.

Daha sonra bellek bloğuna farklı bir örneği kopyalamak için yöntemini kullanırsanızStructureToPtr<T>(T, IntPtr, Boolean), önceki örnekteki başvuru türleri için başvuru sayılarının kaldırılması için öğesini belirtintrue.fDeleteOld Aksi takdirde, yönetilen başvuru türleri ve yönetilmeyen kopyalar etkili bir şekilde sızdırılır.

Kullanmak StructureToPtr<T>(T, IntPtr, Boolean) için genel desen aşağıdaki gibidir:

  1. Bir bellek bloğu ayrıldıktan sonra yöntemine StructureToPtr yapılan ilk çağrıda, fDeleteOld temizlenecek içerik olmadığından olmalıdır false.

    Important

    true Yalnızca bloğun geçerli veriler içerdiğini belirtinfDeleteOld.

  2. Bellek bloğuna farklı bir örnek kopyalarsanız ve nesne başvuru türleri içeriyorsa, fDeleteOldtrue eski içeriklerdeki başvuru türlerini serbest bırakın.

  3. Nesne başvuru türleri içeriyorsa, bellek bloğunu DestroyStructure boşaltmadan önce yöntemini çağırmanız gerekir.

Note

Var olan bir yapıyı kopyalamak yerine sabitlemek için türünü kullanarak System.Runtime.InteropServices.GCHandle yapı için sabitlenmiş bir tanıtıcı oluşturun. Sabitleme hakkında ayrıntılı bilgi için bkz. Kopyalama ve Sabitleme.

Ayrıca bkz.

Şunlara uygulanır