Marshal.StructureToPtr Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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:
Bir bellek bloğu ayrıldıktan sonra yöntemine StructureToPtr yapılan ilk çağrıda,
fDeleteOldtemizlenecek içerik olmadığından olmalıdırfalse.Important
trueYalnızca bloğun geçerli veriler içerdiğini belirtinfDeleteOld.Bellek bloğuna farklı bir örnek kopyalarsanız ve nesne başvuru türleri içeriyorsa,
fDeleteOldtrueeski içeriklerdeki başvuru türlerini serbest bırakın.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:
Bir bellek bloğu ayrıldıktan sonra yöntemine StructureToPtr yapılan ilk çağrıda,
fDeleteOldtemizlenecek içerik olmadığından olmalıdırfalse.Important
trueYalnızca bloğun geçerli veriler içerdiğini belirtinfDeleteOld.Bellek bloğuna farklı bir örnek kopyalarsanız ve nesne başvuru türleri içeriyorsa,
fDeleteOldtrueeski içeriklerdeki başvuru türlerini serbest bırakın.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.