C로 작성된 Dll에서의 Function의 정의입니다.
void SeedEncRoundKey(DWORD *pdwRoundKey, BYTE *pbUserKey)
void SeedEncrypt(BYTE *pbData, DWORD *pdwRoundKey)
이렇게 정의된 Function을 다음과 같이 불러 사용합니다.
.
.
type
PDWORD = ^DWORD;
.
.
Procedure SeedEncrypt(pbData:PAnsiChar;pdwRoundKey:PDWORD);cdecl;
Procedure SeedEncRoundKey(pdwRoundKey:PDWRD;pbUserKey:PCHAR);cdecl;
.
.
implementation
Procedure SeedEncrypt; external 'seedx.dll' name 'SeedEncrypt';
Procedure SeedEncRoundKey; external 'seedx.dll' name 'SeedEncRoundKey';
.
.
function TForm1.EncryptSave: Boolean;
var
vUserKey:PCHAR;
pKey :PDWORD;
pData :PAnsiChar;
SaveFile:TextFile;
begin
// UserKey는 User Define
vUserKey := 'AAAA';
new(pKey);
if pKey <> Nil then
begin
AssignFile(SaveFile, FileName);
Rewrite(SaveFile);
// Key 얻기
SeedEncRoundKey(pKey, vUserKey); ------> 여기에서 Page 오류가 발생합니다...
// 암호화
pData := pChar(copy(Memo1.Text, 1, 128));
SeedEncrypt(pData, Pkey); ------> 여기에서 Page 오류가 발생합니다...
write(SaveFile, pData);
dispose(pKey);
end
else
showmessage('pointer is null!');
closeFile(SaveFile);
Modified := False;
Result := True;
end;
이렇게 하니 Page오류가 발생하는 군요...
고수님들의 도움바랍니다...