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

# IOBufferMemoryDescriptor

A simple memory descriptor that allocates its own buffer memory.

## Declaration

```occ
class IOBufferMemoryDescriptor : IOGeneralMemoryDescriptor
```

## Overview

Overview Use an IOBufferMemoryDescriptor object to store data and share it with the kernel.

## Topics

### Creating a Memory Buffer Descriptor

- [inTaskWithOptions](kernel/iobuffermemorydescriptor/1813824-intaskwithoptions.md)
- [inTaskWithOptions](kernel/iobuffermemorydescriptor/1574847-intaskwithoptions.md)
- [inTaskWithOptions](kernel/iobuffermemorydescriptor/3516446-intaskwithoptions.md)
- [inTaskWithPhysicalMask](kernel/iobuffermemorydescriptor/1813825-intaskwithphysicalmask.md)
- [inTaskWithPhysicalMask](kernel/iobuffermemorydescriptor/1574843-intaskwithphysicalmask.md)
- [initWithPhysicalMask](kernel/iobuffermemorydescriptor/1574833-initwithphysicalmask.md)
- [withOptions](kernel/iobuffermemorydescriptor/1574835-withoptions.md)
- [withBytes](kernel/iobuffermemorydescriptor/1574834-withbytes.md)
- [withCapacity](kernel/iobuffermemorydescriptor/1574841-withcapacity.md)
- [withCopy](kernel/iobuffermemorydescriptor/3074961-withcopy.md)
- [free](driverkit/iobuffermemorydescriptor/free.md)

### Configuring the Descriptor

- [getCapacity](kernel/iobuffermemorydescriptor/1574844-getcapacity.md)
- [setDirection](kernel/iobuffermemorydescriptor/1574826-setdirection.md)
- [setLength](kernel/iobuffermemorydescriptor/1574850-setlength.md)

### Adding Data to the Buffer

- [appendBytes](kernel/iobuffermemorydescriptor/1574849-appendbytes.md)

### Getting the Buffer Contents

- [getBytesNoCopy](kernel/iobuffermemorydescriptor/1574840-getbytesnocopy.md)
- [getBytesNoCopy](kernel/iobuffermemorydescriptor/3516445-getbytesnocopy.md)

### Managing Internal Structures

- [ExpansionData](kernel/ioservice/expansiondata.md)
- [reserved](kernel/iobuffermemorydescriptor/reserved.md)
- [Create](driverkit/iobuffermemorydescriptor/create.md)
- [Create_Impl](kernel/iobuffermemorydescriptor/3074954-create_impl.md)
- [Create_Invoke](kernel/iobuffermemorydescriptor/3180451-create_invoke.md)
- [GetAddressRange](driverkit/iobuffermemorydescriptor/getaddressrange.md)
- [getMetaClass](kernel/iobuffermemorydescriptor/1574832-getmetaclass.md)
- [SetLength_Invoke](kernel/iobuffermemorydescriptor/3131492-setlength_invoke.md)
- [SetLength](driverkit/iobuffermemorydescriptor/setlength.md)
- [SetLength_Impl](kernel/iobuffermemorydescriptor/3131491-setlength_impl.md)
- [Dispatch](kernel/iobuffermemorydescriptor/3180452-dispatch.md)

## Relationships

### Inherits From

- [IOGeneralMemoryDescriptor](kernel/iogeneralmemorydescriptor.md)

## See Also

### Descriptors

- [IODeviceMemory](kernel/iodevicememory.md)
- [IOGeneralMemoryDescriptor](kernel/iogeneralmemorydescriptor.md)
- [IOInterleavedMemoryDescriptor](kernel/iointerleavedmemorydescriptor.md)
- [IOMultiMemoryDescriptor](kernel/iomultimemorydescriptor.md)
- [IOSubMemoryDescriptor](kernel/iosubmemorydescriptor.md)
- [IOMemoryDescriptor](kernel/iomemorydescriptor.md)
