SafeBuffer.AcquirePointer(Byte*) 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.
Önemli
Bu API, CLS uyumlu değildir.
Bir bellek bloğu için nesneden SafeBuffer işaretçi alır.
public:
void AcquirePointer(System::Byte* % pointer);
[System.CLSCompliant(false)]
public void AcquirePointer (ref byte* pointer);
[<System.CLSCompliant(false)>]
member this.AcquirePointer : Byte* -> unit
Parametreler
- pointer
- Byte*
İşaretçiyi nesnenin içinden almak için başvuruya göre geçirilen bir bayt işaretçisi SafeBuffer . Bu yöntemi çağırmadan önce bu işaretçiyi null
olarak ayarlamanız gerekir.
- Öznitelikler
Özel durumlar
Initialize yöntemi çağrılmadı.
Açıklamalar
döndürdüğünde AcquirePointer parametresinin pointer
olduğunu null
doğrulayarak sınır denetimi gerçekleştirmeniz gerekir. değilse null
, yöntemini kısıtlanmış yürütme bölgesinde (CER) çağırmanız SafeBuffer.ReleasePointer gerekir.
AcquirePointer SafeHandle.DangerousAddRef yöntemini çağırır ve işaretçiyi kullanıma sunar.
Aşağıdaki örnekte yönteminin nasıl kullanılacağı gösterilmektedir AcquirePointer :
byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
MySafeBuffer.AcquirePointer(ref pointer);
// Use pointer here, with your own bounds checking.
}
finally {
if (pointer != null)
MySafeBuffer.ReleasePointer();
}
pointer
Farklı bir türe (T*) işaretçi olarak atarsanız (bir bayt işaretçisidir) işaretçi hizalama sorunlarınız olabilir.
Bu işaretçiyle tüm sınırların denetlenebilmesi için sorumluluk almanız gerekir.