---
title: IOBufferMemoryDescriptor
framework: driverkit
role: symbol
role_heading: Class
path: driverkit/iobuffermemorydescriptor
---

# IOBufferMemoryDescriptor

A memory buffer allocated in the caller’s address space.

## Declaration

```occ
class IOBufferMemoryDescriptor;
```

## Overview

Overview Use an IOBufferMemoryDescriptor to share data between your driver and other processes, including the kernel. You create memory buffers in your driver’s process space, but you can pass the buffer to any API that expects an IOMemoryDescriptor object. Some DriverKit APIs pass your buffer to another process, which can then map the buffer to its own address space and access the contents. Typically, you create memory buffer objects to store data moving in and out of your driver. For example, a network interface driver might create a buffer to store packet data it receives from the associated device. You are responsible for managing the contents of the buffer yourself, typically by mapping it to a known data type. Except where noted, you are also responsible for releasing buffers that you allocate.

## Topics

### Creating a Memory Buffer

- [Create](driverkit/iobuffermemorydescriptor/create.md)
- [init](driverkit/iobuffermemorydescriptor/init.md)
- [free](driverkit/iobuffermemorydescriptor/free.md)

### Managing the Buffer Contents

- [SetLength](driverkit/iobuffermemorydescriptor/setlength.md)
- [GetAddressRange](driverkit/iobuffermemorydescriptor/getaddressrange.md)
- [IOAddressSegment](driverkit/ioaddresssegment.md)

## Relationships

### Inherits From

- [IOMemoryDescriptor](driverkit/iomemorydescriptor.md)

## See Also

### Memory management

- [IOMemoryDescriptor](driverkit/iomemorydescriptor.md)
- [IOMemoryMap](driverkit/iomemorymap.md)
- [Memory Utilities](driverkit/memory-utilities.md)
