C로 작성된 DLL 에서 아래의 AddIScsiSendTargetPortal 함수를 호출하려고 합니다.
<!--CodeS-->
HRESULT WINAPI AddIScsiSendTargetPortal(
IN OPTIONAL PCHAR InitiatorInstance,
IN OPTIONAL ULONG InitiatorPortNumber,
IN OPTIONAL PISCSI_LOGIN_OPTIONS LoginOptions,
IN OPTIONAL ISCSI_SECURITY_FLAGS SecurityFlags,
IN PISCSI_TARGET_PORTAL Portal
);
<!--CodeE-->
아래는 위의 함수에 정의된 프로토타입입니다.
<!--CodeS-->
typedef struct _ISCSI_LOGIN_OPTIONS {
ULONG Version;
ISCSI_LOGIN_OPTIONS_INFO_SPECIFIED InformationSpecified;
ISCSI_LOGIN_FLAGS LoginFlags;
ISCSI_AUTH_TYPES AuthType;
ISCSI_DIGEST_TYPES HeaderDigest;
ISCSI_DIGEST_TYPES DataDigest;
ULONG MaximumConnections;
ULONG DefaultTime2Wait;
ULONG DefaultTime2Retain;
ULONG UsernameLength;
ULONG PasswordLength;
PUCHAR Username;
PUCHAR Password;
} ISCSI_LOGIN_OPTIONS, *PISCSI_LOGIN_OPTIONS;
<!--CodeE-->
<!--CodeS-->
typedef struct _ISCSI_TARGET_PORTAL {
TCHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
TCHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
USHORT Socket;
} ISCSI_TARGET_PORTAL, *PISCSI_TARGET_PORTAL;
<!--CodeE-->
<!--CodeS-->
ISCSI_SECURITY_FLAGS의 Value 입니다.
ISCSI_SECURITY_FLAG_TUNNEL_MODE_PREFERRED
ISCSI_SECURITY_FLAG_TRANSPORT_MODE_PREFERRED
ISCSI_SECURITY_FLAG_PFS_ENABLED
ISCSI_SECURITY_FLAG_AGGRESSIVE_MODE_ENABLED
ISCSI_SECURITY_FLAG_MAIN_MODE_ENABLED
ISCSI_SECURITY_FLAG_IKE_IPSEC_ENABLED
ISCSI_SECURITY_FLAG_VALID
<!--CodeE-->
이 함수를 델파이에서 사용하려면 위의 프로토타입을 어떻게 변환해야되고,
함수를 호출할 때 위의 struct는 델파이에서 record형과 같은것으로 아는데
이 파라메터 넘기는 과정과 HRESULT를 받아오는 방법이 궁금합니다.
dll 호출하는 방법은 알고 있습니다.
프로토타입 변경과 파라메터 전달방법이 주요질문입니다.
감사합니다.