2014-02-09 4 views
0

dll 라이브러리에서 구조 PT_DioReadBit을 포함하는 DRV_DioReadBit 함수가 있습니다. 는 C++ 선언이다 구조 PT_DioReadBit는 (++ C에서) 아래 포인터 *state 포함구조체에서 포인터 매개 변수 추출

FEXPORT LRESULT FTYPE DRV_DioReadBit(LONG_PTR DriverHandle, LPT_DioReadBit lpDioReadBit); 

:

typedef struct tagPT_DioReadBit 

{ 

    USHORT  port; 

    USHORT  bit; 

    USHORT far *state; 


} PT_DioReadBit, FAR * LPT_DioReadBit; 

lpDioReadBit이 구조 저장 포트 번호 USHORT port 타겟팅 PT_DioReadBit 포인터이며, 비트 주문 번호 USHORT bit 및 반송 된 비트 상태 USHORT *state. 포트와 비트를 설정 한 다음 상태를 읽고 싶습니다.

C#, DllIMPORT, PT_DioReadBit 구조체가 포함 된 C++ 함수 DRV_DioReadBit을 사용하여 변환하려면 어떻게해야합니까?

+0

[tag : C#]의 포인터는 무엇이되어야합니까 ?? –

+0

@ πάνταῥεῖ 참조? – Paranaix

답변

0

나는 결코 그것을 시도한 적이 없지만, C#의 포인터를 사용하여 일반적인 방법으로 사용할 수 있습니다. 예, C#에는 포인터가 있지만 "안전하지 않은"모드에서 사용해야하므로 안전하지 않은 모드를 사용하려면 프로젝트 속성으로 이동해야합니다.

+0

Kamil, 다음 구문을 사용하여이 시도했지만이 함수를 호출 할 때 4103 오류가 발생합니다 : [StructLayout (LayoutKind.Sequential)] public class PT_DioReadBit { public ushort port; 공개 ushort 비트; 공개 ushort 상태; } [같이 DllImport (\ "Adsapi32.dll \")] 공용 static 통근 용의 INT DRV_DioReadBit (INT의 DriverHandle, REF PT_DioReadBit DioReadBit) – user1236106

관련 문제