Программирование драйверов Windows

         

Функции библиотеки времени выполнения для работы с памятью


Операционная система Windows предоставляет набор Rtl (библиотека времени выполнения) функций для работы с памятью, которые в режиме ядра заменяют столь привычные программистам пользовательских приложений вызовы memcpy, memset и т.п. Некоторые наиболее употребительные вызовы описаны ниже.

Таблица 7.29. Прототип вызова RtlFillMemory

VOID RtlFillMemory IRQL &#8212 любой (если это допускает тип памяти заполняемого буфера)
Параметрам Заполняет область памяти значением Pattern
IN VOID UNALIGNED



*Destination

Указатель на буфер-приемник (область без выравнивания)
IN ULONG Length Размер заполняемой области в байтах
IN UCHAR Pattern Значение, которым будет заполнена указанная область (байт)
Возвращаемое значение void

Таблица 7.30. Прототип вызова RtlZeroMemory

VOID RtlZeroMemory IRQL &#8212 любой (если это допускает тип памяти обнуляемого буфера)
Параметры Обнуляет область памяти
IN VOID UNALIGNED

*Destination

Указатель на буфер-приемник (область без выравнивания)
IN ULONG Length Размер обнуляемой области в байтах
Возвращаемое значение void

Таблица 7.31. Прототип вызова RtlCopyMemory

VOID RtlCopyMemory IRQL &#8212 любой (если это допускают типы памяти копируемых буферов)
Параметры Копирует содержимое одного буфера в другой
IN VOID UNALIGNED

*Destination

Указатель на буфер-приемник (область без выравнивания)
IN CONST VOID UNALIGNED

*Source

Указатель на буфер-источник (область без выравнивания)
IN ULONG Length Размер копируемой области в байтах
Возвращаемое значение void

Замечание. Области источника и приемника не должны перекрываться.

Таблица 7.32. Прототип вызова RtlMoveMemory

VOID RtlMoveMemory IRQL &#8212 любой (если это допускают типы памяти копируемых буферов)
Параметры Копирует содержимое одного буфера в другой
IN VOID UNALIGNED

*Destination

Указатель на буфер-приемник (область без выравнивания)
IN CONST VOID UNALIGNED

*Source

Указатель на буфер-источник (область без выравнивания)
IN ULONG Length Размер копируемой области в байтах
Возвращаемое значение void

Замечание. Допускается перекрытие областей источника и приемника.

Существует также вызов RtlCopyBytes, совершенно идентичный приведенному выше вызову RtlMoveMemory.



Содержание раздела