SafeBuffer.AcquirePointer(Byte*) Yöntem

Tanım

Önemli

Bu API, CLS uyumlu değildir.

Bir bellek bloğu için nesneden SafeBuffer bir 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 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ılmıyor.

Açıklamalar

döndürdüğünde AcquirePointer parametresinin pointer olduğunu nulldoğ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.

AcquirePointerSafeHandle.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 (bayt işaretçisidir) işaretçi hizalama sorunlarınız olabilir.

Bu işaretçiyle tüm sınırları denetleme sorumluluğunu üstlenmeniz gerekir.

Şunlara uygulanır