Freigeben über


SafeBuffer.AcquirePointer-Methode: (Byte*)

 

Veröffentlicht: Oktober 2016

Erhält einen Zeiger aus einem SafeBuffer -Objekt für einen Speicherblock.

Diese API ist nicht CLS-kompatibel.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

[CLSCompliantAttribute(false)]
public unsafe void AcquirePointer(
    ref byte* pointer
)
public:
[CLSCompliantAttribute(false)]
void AcquirePointer(
    unsigned char*% pointer
)
[<CLSCompliantAttribute(false)>]
member AcquirePointer : 
        pointer:nativeptr<byte> byref -> unit
Visual Basic unterstützt keine APIs, die unsichere Typen verwenden oder zurückgeben.

Parameter

  • pointer
    Type: System.Byte*

    Ein Byte-Zeiger als Verweis übergeben wird, erhalten Sie den Zeiger innerhalb der SafeBuffer Objekt. Legen Sie diesen Zeiger auf null bevor Sie diese Methode aufrufen.

Ausnahmen

Exception Condition
InvalidOperationException

Die SafeBuffer.Initialize -Methode nicht aufgerufen wurde.

Hinweise

Wenn AcquirePointer zurückgibt, sollten Sie überprüfen, die Überprüfung von Grenzen Ausführen der pointer -Parameter ist null. Ist dies nicht null, müssen Sie aufrufen, die SafeBuffer.ReleasePointer -Methode in einem eingeschränkten Ausführungsbereich (CER).

AcquirePointer Ruft die SafeHandle.DangerousAddRef Methode und macht den Zeiger verfügbar. Im Gegensatz zu der Read<T> -Methode ändert nicht die aktuelle Position des Zeigers.

Die folgenden Exampledemonstrates wie die AcquirePointer Methode:

byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
    MySafeBuffer.AcquirePointer(ref pointer);
    // Use pointer here, with your own bounds checking.
    }
finally {
    if (pointer != null)
        MySafeBuffer.ReleasePointer();
    }

Wenn Sie die Umwandlung pointer (Dies ist ein Zeiger auf ein Byte) als ein Zeiger auf einen anderen Typ (T *), haben Sie möglicherweise Zeigerausrichtungsprobleme.

Sie müssen alle Grenzen diesen Zeiger überprüfen übernehmen.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone
Verfügbar seit 8.1

Siehe auch

SafeBuffer-Klasse
System.Runtime.InteropServices-Namespace

Zurück zum Anfang