Q&A

  • [질문] DLL 함수 파라메터 전달 방법
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 호출하는 방법은 알고 있습니다.
프로토타입 변경과 파라메터 전달방법이 주요질문입니다.

감사합니다.
0  COMMENTS