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