Функции библиотеки времени выполнения для работы с памятью
Операционная система Windows предоставляет набор Rtl (библиотека времени выполнения) функций для работы с памятью, которые в режиме ядра заменяют столь привычные программистам пользовательских приложений вызовы memcpy, memset и т.п. Некоторые наиболее употребительные вызовы описаны ниже.
Таблица 7.29. Прототип вызова RtlFillMemory
VOID RtlFillMemory | IRQL — любой (если это допускает тип памяти заполняемого буфера) |
Параметрам | Заполняет область памяти значением Pattern |
IN VOID UNALIGNED *Destination |
Указатель на буфер-приемник (область без выравнивания) |
IN ULONG Length | Размер заполняемой области в байтах |
IN UCHAR Pattern | Значение, которым будет заполнена указанная область (байт) |
Возвращаемое значение | void |
Таблица 7.30. Прототип вызова RtlZeroMemory
VOID RtlZeroMemory | IRQL — любой (если это допускает тип памяти обнуляемого буфера) |
Параметры | Обнуляет область памяти |
IN VOID UNALIGNED *Destination |
Указатель на буфер-приемник (область без выравнивания) |
IN ULONG Length | Размер обнуляемой области в байтах |
Возвращаемое значение | void |
Таблица 7.31. Прототип вызова RtlCopyMemory
VOID RtlCopyMemory | IRQL — любой (если это допускают типы памяти копируемых буферов) |
Параметры | Копирует содержимое одного буфера в другой |
IN VOID UNALIGNED *Destination |
Указатель на буфер-приемник (область без выравнивания) |
IN CONST VOID UNALIGNED *Source |
Указатель на буфер-источник (область без выравнивания) |
IN ULONG Length | Размер копируемой области в байтах |
Возвращаемое значение | void Замечание. Области источника и приемника не должны перекрываться. |
Таблица 7.32. Прототип вызова RtlMoveMemory
VOID RtlMoveMemory | IRQL — любой (если это допускают типы памяти копируемых буферов) |
Параметры | Копирует содержимое одного буфера в другой |
IN VOID UNALIGNED *Destination |
Указатель на буфер-приемник (область без выравнивания) |
IN CONST VOID UNALIGNED *Source |
Указатель на буфер-источник (область без выравнивания) |
IN ULONG Length | Размер копируемой области в байтах |
Возвращаемое значение | void Замечание. Допускается перекрытие областей источника и приемника. |
Существует также вызов RtlCopyBytes, совершенно идентичный приведенному выше вызову RtlMoveMemory.