Aracılığıyla paylaş


SafeBuffer.AcquirePointer(Byte*) Yöntem

Tanım

Ö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 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.

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.

Şunlara uygulanır