C로 작성된 아래의 프로그램이 델파이로 변환 하고 있습니다.
DLL Function을 부르는데 INVALID_PARAMETER 에러가 납니다.
어찌 해야 하는지요
제가 한부분은 아래에 있습니다.
==C==
* hearder filk */
#define MAX_HASH_LENGTH_OLD 40
#define MAX_HASH_LENGTH_EX 128
#define MAX_OIDSTR_LENGTH 128
#define MAX_NAME_LENGTH 512
#define MAX_TIME_LENGTH 32
#define MAX_SIGNATURE_LENGTH 1024
#define MAX_STATUS_LENGTH 80
#define MAX_BIGNUMBER_LENGTH 40
typedef enum
{
TTI_RAW = 0,
TTI_TCP = 1,
TTI_HTTP = 2,
TTI_SMTP = 3
} TTI_TransportFormat;
typedef struct TTI_BigNumber
{
byte number[MAX_BIGNUMBER_LENGTH];
int length;
} TTI_BigNumber;
typedef struct TTI_MessageImprintEx
{
char hashAlgorithmOid[MAX_OIDSTR_LENGTH];
byte hashedMessage[MAX_HASH_LENGTH_EX];
int hashedMessageLen;
} TTI_MessageImprintEx;
typedef struct TTI_TSQ_Ex
{
size_t size;
TTI_MessageImprintEx messageImprint;
char reqPolicyOid[MAX_OIDSTR_LENGTH];
TTI_BigNumber nonce;
BOOL certReq;
} TTI_TSQ_Ex;
/* API Functions */
int TTI_EncodeTSQ_Ex( const TTI_TSQ_Ex * pTSQ_Ex,
byte * encodedReq,
size_t * encodedReqLen,
TTI_TransportFormat transportFormat );
/* test.c */
{
TTI_TSQ_Ex tsq;
TTI_TransportFormat ttiTransport = TTI_TCP;
byte encodedTSQ[1024];
size_t encodedTSQLen = sizeof encodedTSQ;
int iResult;
iResult = TTI_EncodeTSQ_Ex( tsq, encodedTSQ, &encodedTSQLen, ttiTransport );
}
==DELPHI==
Const
MAX_HASH_LENGTH_OLD = 40;
MAX_HASH_LENGTH_EX = 128;
MAX_OIDSTR_LENGTH = 128;
MAX_NAME_LENGTH = 512;
MAX_TIME_LENGTH = 32;
MAX_SIGNATURE_LENGTH = 1024;
MAX_STATUS_LENGTH = 80;
MAX_BIGNUMBER_LENGTH = 40;
type
TTI_TransportFormat = (TTI_RAW , TTI_TCP, TTI_HTTP, TTI_SMTP);
type
TTI_BigNumber = Record
number : Array[1..MAX_BIGNUMBER_LENGTH] of Byte;
length : Integer;
end;
type
PTTI_MessageImprintEx = ^TTI_MessageImprintEx;
TTI_MessageImprintEx = Record
hashAlgorithmOid : Array[1..MAX_OIDSTR_LENGTH] of Char;
hashedMessage : Array[1..MAX_HASH_LENGTH_EX] of Byte;
hashedMessageLen : Integer;
end;
type
PTTI_TSQ_Ex = ^TTI_TSQ_Ex;
TTI_TSQ_Ex = Record
size : Integer;
messageImprint : TTI_MessageImprintEx;
reqPolicyOid : Array[1..MAX_OIDSTR_LENGTH] of Char;
nonce : TTI_BigNumber;
certReq : Boolean;
end;
//
function TTI_EncodeTSQ_Ex(const pTSQ_Ex : PTTI_TSQ_Ex; encodedReq : Pbyte; encodedReqLen : PInteger; transportFormat : TTI_TransportFormat):Integer; stdcall; external 'TTI.DLL';
//
procedure TForm1.BitBtn1Click(Sender: TObject);
var
tsq : TTI_TSQ_Ex;
ttiTransport : TTI_TransportFormat;
iResult : Boolean;
begin
iResult := TTI_EncodeTSQ_Ex(@tsq, @encodedTSQ, @encodedTSQLen, ttiTransport);
=============================================================================
이부분입니다.
한수 부탁 드립니다.
|