Marshal.ReadInt16 Methode

Definitie

Leest een 16-bits geheel getal dat is ondertekend uit niet-beheerd geheugen. Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.

Overloads

Name Description
ReadInt16(IntPtr)

Leest een 16-bits geheel getal dat is ondertekend uit niet-beheerd geheugen.

ReadInt16(IntPtr, Int32)

Leest een 16-bits geheel getal dat is ondertekend op een bepaalde verschuiving van onbeheerd geheugen.

ReadInt16(Object, Int32)
Verouderd.

Leest een 16-bits geheel getal dat is ondertekend op een bepaalde verschuiving van onbeheerd geheugen.

ReadInt16(IntPtr)

Leest een 16-bits geheel getal dat is ondertekend uit niet-beheerd geheugen.

public:
 static short ReadInt16(IntPtr ptr);
[System.Security.SecurityCritical]
public static short ReadInt16(IntPtr ptr);
public static short ReadInt16(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadInt16 : nativeint -> int16
static member ReadInt16 : nativeint -> int16
Public Shared Function ReadInt16 (ptr As IntPtr) As Short

Parameters

ptr
IntPtr

nativeint

Het adres in onbeheerd geheugen waaruit moet worden gelezen.

Retouren

Het 16-bits ondertekende gehele getal dat wordt gelezen uit onbeheerd geheugen.

Kenmerken

Uitzonderingen

ptr is geen herkende indeling.

– of –

ptr is null.

– of –

ptr is ongeldig.

Voorbeelden

In het volgende voorbeeld ziet u hoe u met behulp van de ReadInt16 en WriteInt16 methoden kunt lezen en schrijven naar een onbeheerde matrix.

static void ReadWriteInt16()
{
    // Allocate unmanaged memory. 
    int elementSize = 2;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt16(unmanagedArray, i * elementSize, ((Int16)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt16()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 2
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt16(unmanagedArray, i * elementSize, CType(i + 1, Int16))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

In het volgende voorbeeld ziet u hoe u de ReadInt16 methode gebruikt om de waarde van een niet-beheerde short variabele te lezen.


using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged short.
    short myShort = 42;

    // Read the short as a managed Int16.
        Int16 ^ myManagedVal = Marshal::ReadInt16((IntPtr) &myShort);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Opmerkingen

ReadInt16 heeft een impliciete offset van 0. Deze methode maakt directe interactie mogelijk met een niet-beheerde C-stijlmatrix Int16 , waardoor de kosten van het kopiëren van een hele onbeheerde matrix (met behulp) Marshal.Copynaar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.

Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.

Zie ook

Van toepassing op

ReadInt16(IntPtr, Int32)

Leest een 16-bits geheel getal dat is ondertekend op een bepaalde verschuiving van onbeheerd geheugen.

public:
 static short ReadInt16(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static short ReadInt16(IntPtr ptr, int ofs);
public static short ReadInt16(IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadInt16 : nativeint * int -> int16
static member ReadInt16 : nativeint * int -> int16
Public Shared Function ReadInt16 (ptr As IntPtr, ofs As Integer) As Short

Parameters

ptr
IntPtr

nativeint

Het basisadres in niet-beheerd geheugen waaruit moet worden gelezen.

ofs
Int32

Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat deze wordt gelezen.

Retouren

Het 16-bits ondertekende gehele getal dat is gelezen uit onbeheerd geheugen op de opgegeven offset.

Kenmerken

Uitzonderingen

Basisadres (ptr) plus offset byte (ofs) produceert een null- of ongeldig adres.

Voorbeelden

In het volgende voorbeeld ziet u hoe u met behulp van de ReadInt16 en WriteInt16 methoden kunt lezen en schrijven naar een onbeheerde matrix.

static void ReadWriteInt16()
{
    // Allocate unmanaged memory. 
    int elementSize = 2;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt16(unmanagedArray, i * elementSize, ((Int16)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt16()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 2
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteInt16(unmanagedArray, i * elementSize, CType(i + 1, Int16))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadInt16(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

In het volgende voorbeeld ziet u hoe u de ReadInt16 methode gebruikt om de waarde van een niet-beheerde short variabele te lezen.


using namespace System;
using namespace System::Runtime::InteropServices;

void main()
{
    // Create an unmanaged short pointer.
    short * myShort;
    short tmp = 42;
    // Initialize it to another value.
    myShort = &tmp;

    // Read value as a managed Int16.
    Int16 ^ myManagedVal = Marshal::ReadInt16((IntPtr) myShort, 0);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Opmerkingen

ReadInt16 maakt directe interactie mogelijk met een niet-beheerde 16-bits ondertekende matrix, waardoor de kosten van het kopiëren van een hele onbeheerde matrix (met behulp) Marshal.Copynaar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.

Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.

Zie ook

Van toepassing op

ReadInt16(Object, Int32)

Let op

ReadInt16(Object, Int32) may be unavailable in future releases.

Leest een 16-bits geheel getal dat is ondertekend op een bepaalde verschuiving van onbeheerd geheugen.

public:
 static short ReadInt16(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static short ReadInt16(object ptr, int ofs);
public static short ReadInt16(object ptr, int ofs);
[System.Security.SecurityCritical]
public static short ReadInt16(object ptr, int ofs);
[System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")]
public static short ReadInt16(object ptr, int ofs);
[<System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadInt16 : obj * int -> int16
static member ReadInt16 : obj * int -> int16
[<System.Security.SecurityCritical>]
static member ReadInt16 : obj * int -> int16
[<System.Obsolete("ReadInt16(Object, Int32) may be unavailable in future releases.")>]
static member ReadInt16 : obj * int -> int16
Public Shared Function ReadInt16 (ptr As Object, ofs As Integer) As Short

Parameters

ptr
Object

Het basisadres in het niet-beheerde geheugen van het bronobject.

ofs
Int32

Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat deze wordt gelezen.

Retouren

Het 16-bits ondertekende gehele getal dat is gelezen uit onbeheerd geheugen op de opgegeven offset.

Kenmerken

Uitzonderingen

Basisadres (ptr) plus offset byte (ofs) produceert een null- of ongeldig adres.

ptr is een ArrayWithOffset object. Deze methode accepteert ArrayWithOffset geen parameters.

Opmerkingen

ReadInt16 maakt directe interactie mogelijk met een niet-beheerde 16-bits ondertekende matrix, waardoor de kosten van het kopiëren van een hele onbeheerde matrix (met behulp) Marshal.Copynaar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.

Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.

Zie ook

Van toepassing op