반응형
1. DLL Import 과정 ex) EMR_Hash라는 API를 임포트
C에서 파라미터 원형은... 원래는 다음과 같다.
unsigned int ~
int ~
char[] ~
int ~
char[] ~
int * ~
이런 타입이 아래와 같이 변형되서 Import 하였다. (문제없음)

[DllImport("LibEMRClient.dll")] 
public extern static int EMR_Hash(
            uint nCtx,                 
            int nHashAlg,           
            Byte[] pucEMRData,
            int nEMRDataLen,           
            Byte[] aucOutHashedData,
            ref int pnOutHashedDataLen
);



2. 함수호출

m_nRet = EMR_Hash(
                m_unContext, m_nSetAlgo,
                btEMRData, btEMRData.Length,               
                btHashedData, ref nHashedDataLen               
);

신경써서 볼것은, 처음 2개의 파라미터는 쌩까고,
뒤에 4개의 파라미터가 모두 할당해서 넘겨주는 변수이다(Out Parameter)
( bt는 Byte[]타입 )


3. 받아온 값(Out parameter) 정리
char[] acHashedData = new char[nHashedDataLen];
acHashedData = Encoding.Default.GetChars(btHashedData,0,nHashedDataLen);
String stHashedData = new String(acHashedData);
IDC_EDIT_EMR_HASHED_DATA.Text = stHashedData;

char[] 배열을 받아온 길이만큼 선언하고,
받아온 Byte[]에서 Char값을 받아서 복사한다.
그 Char값을 토대로 String 값을 선언 및 초기화
에디트박스에 그 String 값을 적용한다.
반응형
Posted by Rainfly
l