[C#] C/C++ DLL Import // Char[] OutParameter(문자열) 받아오기 Char[] - Byte[] - String
I.T/Programming 2011. 8. 19. 18:23반응형
1. DLL Import 과정 ex) EMR_Hash라는 API를 임포트
C에서 파라미터 원형은... 원래는 다음과 같다.
2. 함수호출
신경써서 볼것은, 처음 2개의 파라미터는 쌩까고,
뒤에 4개의 파라미터가 모두 할당해서 넘겨주는 변수이다(Out Parameter)
( bt는 Byte[]타입 )
3. 받아온 값(Out parameter) 정리
C에서 파라미터 원형은... 원래는 다음과 같다.
unsigned int ~
int ~
char[] ~
int ~
char[] ~
int * ~
이런 타입이 아래와 같이 변형되서 Import 하였다. (문제없음)int ~
char[] ~
int ~
char[] ~
int * ~
[DllImport("LibEMRClient.dll")]
public extern static int EMR_Hash(
uint nCtx,
int nHashAlg,
Byte[] pucEMRData,
int nEMRDataLen,
Byte[] aucOutHashedData,
ref int pnOutHashedDataLen
);
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
);
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);
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 값을 적용한다.
반응형
'I.T > Programming' 카테고리의 다른 글
[C/C++] 레지스트리(Registry - regedit)의 값을 가져오기 - RegOpenKeyEx, RegQueryValueEx (0) | 2011.08.26 |
---|---|
[C#] File Dialog , 파일 다이얼로그 부르기, File Path 구하기 (2) | 2011.08.22 |
[C#] Binary to Hex, Byte[] to Hex String (0) | 2011.08.19 |
[C#]C/C++ DLLImport, String, char[], char*, int*, 파라미터(매개변수) 넘기기 (0) | 2011.08.10 |
C/C++ 파일오픈, 파일읽기, fopen, fread 예제 (0) | 2011.08.04 |