Использование SecureZeroMemory в Delphi

Я понимаю, что есть SecureZeroMemory функция в C. Реализация функции определяется в <WinnNT.h> как RtlSecureZeroMemory функция.

QNS: как можно SecureZeroMemory использоваться в Delphi? Delphi выпустила библиотеку, которая содержит эту функцию? Я использую Delphi 7. Windows.pas только имеет ZeroMemory но нет SecureZeroMemory,

4 ответа

Решение

Насколько я понимаю, единственная разница между ZeroMemory а также SecureZeroMemory является SecureZeroMemory реализован как встроенная функция, гарантирующая, что она не будет оптимизирована компилятором.

Я не думаю, что Delphi выполняет тот же уровень оптимизации компилятора, поэтому ZeroMemory звонки не должны быть оптимизированы.

Так как в соответствии с MSDN, SecureZeroMemory () на самом деле определяется как RtlSecureZeroMemory()Вы можете объявить SecureZeroMemory() следующее:

  procedure SecureZeroMemory(_ptr: Pointer; cnt: Longint); external 'kernel32.dll' name 'RtlSecureZeroMemory';

SecureZeroMemory() это просто псевдоним RtlSecureZeroMemory(),

У меня сейчас нет компилятора Delphi, но я не думаю, что SecureZeroMemory,

Я помню, что в Delphi, Win32 API функции / макросы CopyMemory а также MoveMemory идентичны (они оба реализованы так же, как указатель "версии" Move Функция RTL). Отсюда и замечание на MSDN CopyMemory страница справки о том, что вы должны использовать MoveMemory скорее, чем CopyMemory блоки перекрываются, не имеет значения. Делфи Move всегда делает правильные вещи.

Я думаю, что то же самое относится и к ZeroMemory а также SecureZeroMemory, Первый реализован как FillChar с #0, и если будет SecureZeroMemory функция для Депли, я думаю, что это также будет просто FillChar с #0. (Если FillChar будет игнорироваться в некоторых случаях, это действительно должно быть задокументировано в справочнике Delphi, но это не так.)

Пожалуйста, поправьте меня, если я ошибаюсь!

Взгляните на справку MSDN здесь.

Единственный вопрос, удаляет ли компилятор Delphi ZeroMemory в качестве результата оптимизации, хотя я сомневаюсь в этом.

Другие вопросы по тегам