===============================================================================================
컨버팅한 function
function SKY_ScanSupportedDisk(var DiskList:PDiskList;lpErrorode:LPDWORD):DWORD; stdcall; external 'SkyUSBD.dll';
type
TDiskList = packed record
// TDiskList = record
DevicePath:array[0..MAX_PATH-1] of byte;
DeviceSN:array[0..25] of Byte;
DeviceType:byte;
Lun:byte;
end;
델파이 변환
sDiskLIst : PDiskList;
Error:LPDWORD;
Count:DWORD;
begin
getMem(sDiskList, SizeOf(sDiskList)*25); // 생성
FillChar(sDiskLIst,sizeof(tDiskLIst)*25,$0);
Count:=SKY_ScanSupportedDisk(sDiskLIst,Error);=> Acess violaction 0x0000000 이나옵니다 ㅜㅜ
실행후 Acess Violation
FreeMem(sDiskList, SizeOf(TDiskList) * 25); // 소멸
===============================================================================================
extern "C" DWORD SKY_ScanSupportedDisk(DiskList *sDiskList, LPDWORD lpErrorode);
원형함수
dwErrorCode LPDWORD;
Count integer
DiskList *sDiskList;
sDiskList = (DiskList*)malloc(sizeof(DiskList)*25);
memset(sDiskList, 0x00, sizeof(DiskList)*25);
count=SKY_ScanSupportedDisk(sDiskList, &dwErrorCode);
뭐가 잘못됬지는 봐주세요
|