출처 : http://jafm00n.tistory.com/40
비관리 코드의 함수를 호출하기 위한, P/Invoke, 내보낸 함수의 프로토 타입을 정의할때면 매개변수로 넘겨 지거나 반환값으로 넘어오는 자료형들이 관리 코드의 자료형과 어울리지 않아 다소 혼란 스럽다. 그래서 플랫폼 호출 데이터 형식 에 맞게 자료형(LPTSTR의 경우 System.String으로)을 대입시켜 줘야 한다.
그러나 그 외의 구조체, 구조체 포인터, 배열, 문자열의 다양한 형태등은 어떻게 대입시켜야 하는가? 이러한 형식들에 대해서는 특성과 자료형으로 잘 정리하여 적절한 구조를 만들어 대입시켜야 한다. 이러한 작업을 마샬링이라고 한다. 마샬링이라는 문자에 대한 이해 보다는 직접 코딩을 해서 그 자체를 이해 하는 것이 바람직하다고 생각한다.
또한 비관리 코드로 전달되는 매개 변수에 대한 (In 혹은 Out과 같은) 방향 특성에 대한 설정은 어떻게 해야 하는지 고민해 봐야 할 것이다. 이에 대해서는 방향 특성을 참고 하기 바란다.
값으로
결과로
참조로
구조체에서 값으로
구조체에서 참조로(char*)
구조체에서 참조로(char[])
클래스에서 값으로(char*)
클래스에서 값으로(char[])
윽... 잠이 와서 도저히 못쓰겠다.{=,.=} ㅋ 공란은 내일 쓰기로 하고 ... 이만 자야 겠다.(2009-07-08 AM 3:24)
ㅋㅋ 포스트를 쓰는데 장장 3일이 걸린것 같다. 나름 깔끔하게 정리하려고 노력 하였으나 지루해지고 고단해 지고 나른한 관계로 중간 중간에 무의 불 성실 하게 글을 올린 듯 하지만 ㅡㅡ;; 이렇게 까지 한 나 자신의 노고를 스스로 치하하는 바이다~ 끝~ (2009-07-09 PM 5:50)
------------------------------------------------------------------------------------------------------
각주::=
'강좌 > C#' 카테고리의 다른 글
C# _ 멀티스레드,ManualResetEvent,동기화 를 시켜보자 (0) | 2012.01.21 |
---|---|
스레드 동기화를 위한 AutoResetEvent와 ManualResetEvent (0) | 2012.01.21 |
_플랫폼 호출 데이터 형식 (0) | 2012.01.21 |
_DllImport 어트리뷰트와 StructLayout 어트리뷰트 (0) | 2012.01.21 |
16진수 문자열 변환 (0) | 2012.01.21 |