Difference between revisions of "Buffer.CopyFromSystemMemory"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:43, 7 February 2021
CopyFromSystemMemory (Работа с системными адресами) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция копирует данные указанного размера из системной памяти в буфер по указанному индексу. Внимание: функция работает с прямыми адресами системной памяти, что может вызвать системное исключение доступа, если адрес недоступен или память не выделена. Системное исключение будет превращено в локальное исключение вызываемое функцией. Функция может использоваться в совокупности с функциями объекта загружаемой системной библиотеки.
Синтаксис
Buffer.CopyFromSystemMemory(<Указатель в системной памяти (INT)>,<Размер данных в байтах (INT)>,<Индекс назначения копирования (INT)>)
Аргументы
<Указатель в системной памяти (INT)>
- Указатель адреса в системной памяти из которого будет происходить копирование.<Размер данных в байтах (INT)>
- Количество байт для копирования.<Индекс назначения копирования (INT)>
- (необязательный аргумент) Позиция в буфере для начала записи.
Примеры
//Пример показывает работу функций адресации системной памяти //Подготовка буфера, запись двух строк аСтр:="Строка "; бСтр:="проверки"; аБуф:=Buffer.Create(); аБуф.SetStringW(0,аСтр); аБуф.SetStringW(Length(аСтр)*2,бСтр); //Получение системного адреса буфера на начало второй строки аАдр:=аБуф.SystemAddress(Length(аСтр)*2); //Подготовка второго буфера бБуф:=Buffer.Create(); бБуф.Fill(0,100,0); //Получение информации из системной памяти (в данном случае, адрес указывает на первый буфер) бБуф.CopyFromSystemMemory(аАдр,Length(бСтр)*2); вСтр:=бБуф.GetStringW(0,Length(бСтр)); //Будет выведено "проверки" Message(вСтр);