[ 질문 1 ]
C로 작성된 dll 구조는 아래와 같습니다.
이 dll 형식으로 델파이에서 호출 하려고 합니다.
델파이 형식으로 변환을 부탁드립니다.
<!--CodeS-->
HRESULT WINAPI AddIScsiSendTargetPortal(
__in_opt PTCHAR InitiatorName,
__in_opt ULONG InitiatorPortNumber,
__in_opt PISCI_LOGIN_OPTIONS LoginOptions,
__in_opt ISCSI_SECURITY_FLAGS SecurityFlags,
__out ISCSI_OUTPUT OUTPUT,
PISCSI_TARGET_PORTAL Portal
);
<!--CodeE-->
[ 질문 2 ]
PISCSI_TARGET_PORTAL Portal은 무슨 의미일까요? (in도 out도 아닌 그냥 빈칸으로 되어있습니다.)
또 어떻게 사용해야 하는가요?
[ 질문 3 ]
opt는 선택적인 파라메터 값으로 아는데,
function에서 호출할때 opt 파라메터가 해당사항이 없다면 빼고 해도 되는지,
아니면 널값으로 파라메터 갯수를 맞추어야 하는지요..
참고로 아래는 위의 AddIScsiSendTargetPortal에서 사용되는 변수선언입니다.
<!--CodeS-->
typedef structtypedef 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-->
_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-->
function AddIScsiSendTargetPortal(InitiatorName: PTCHAR; InitiatorPortNumber: ULONG, LoginOptions: PISCI_LOGIN_OPTIONS,
SecurityFlags: ISCSI_SECURITY_FLAGS, OUTPUT: ISCSI_OUTPUT, Portal: PISCSI_TARGET_PORTAL): HRESULT; stdcall;
[질문2]
__in_opt, __out 등은 델파이에서는 별 의미 없습니다. 컨버팅할 때는 그냥 무시하세요.
[질문3]
쓰든 안쓰든 함수의 파라매터 갯수에 맞춰서 넣어주셔야 합니다. 때에 따라서 포인터형의 경우는 널(nil)을 넣어줄 수도 있겠죠...