Export (0) Print
Expand All

Marshal.ReadByte Method (IntPtr)

Reads a single byte from unmanaged memory.

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

public static byte ReadByte(
	IntPtr ptr
)

Parameters

ptr
Type: System.IntPtr

The address in unmanaged memory from which to read.

Return Value

Type: System.Byte
The byte read from unmanaged memory.

ExceptionCondition
AccessViolationException

ptr is not a recognized format.

-or-

ptr is null.

-or-

ptr is invalid.

ReadByte has an implied offset of 0. This method enables direct interaction with an unmanaged C-style byte array, eliminating the expense of copying an entire unmanaged array (using Marshal.Copy) to a separate managed array before reading its element values.

Reading from unaligned memory locations is supported.

The following example creates a block of unmanaged memory, writes a byte to the unmanaged memory, reads the byte back from unmanaged memory, and then disposes the unmanaged memory.

using System;
using System.Runtime.InteropServices;


namespace SecureStringExample
{

    class MarshalExample
    {


        static void Main(string[] args)
        {

            try
            {
                // Allocate 1 byte of unmanaged memory.
                IntPtr hGlobal = Marshal.AllocHGlobal(1);

                // Create a new byte. 
                byte b = 1;

                Console.WriteLine("Byte written to unmanaged memory: " + b);

                // Write the byte to unmanaged memory.
                Marshal.WriteByte(hGlobal, b);

                // Read byte from unmanaged memory. 
                byte c = Marshal.ReadByte(hGlobal);

                Console.WriteLine("Byte read from unmanaged memory: " + c);

                // Free the unmanaged memory.
                Marshal.FreeHGlobal(hGlobal);

                Console.Write("Unmanaged memory was disposed.");


            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.Read();

        }
    }
}

The following example demonstrates how to use the ReadByte method to read the value of an unmanaged character.


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



void main()
{
	// Create an unmanaged byte. 
	const char * myString = "b";

	// Read the c string as a managed byte.
        Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString);

	// Display the byte to the console.
	Console::WriteLine(myManagedByte);
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8

  • SecurityCriticalAttribute 

    requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Show:
© 2015 Microsoft