1
나는 기본 기능void *가있는 네이티브 함수에서 호출 된 관리되는 대리자의 IntPtr-parameter에서 정수 값을 가져 오는 방법은 무엇입니까?
void SetValue(char *FieldName, void *pValue);
을하고 난/서명이
이
void SetValueDelegate(string fieldName, IntPtr value);
는이 같은 기본 SetValue를 호출 위임 이전 설정 콜백 전화를 변경하려면 :
을int IntValue = 0;
SetValue("MyField", &IntValue);
이제 나는 그냥 캐스팅 할 수 있다고 생각했습니다. 관리 대리인 :
void SetValueDelegate(string fieldName, IntPtr value)
{
if (fieldName == "MyField")
{
int intValue = (int)value;
}
}
이것은 작동하지 않습니다. 오래도록 캐스트하면 값은 204790096입니다.
어떻게해야합니까?
감사합니다. 그것은 자연적으로 사실입니다. 다른 방법을 찾았습니다. (int) Marshal.PtrToStructure (value, typeof (int)); 그러나 당신의 대답은 더 분명합니다. –
그게 너무 작동하지만,'ReadInt32'는 내가 생각하기에 복싱과 언 박싱을 피한다. –