|
分類:[VB.NET/VB2005 以降]
はじめまして
環境は以下の通りです。
VISTA
Visual Basic 2008 Express Edition
PtrToStructureで戻り値がNULLになってしまうのですが、
原因が解りません・・・
コピーする値をVisual C++ 2008 Express Editionで作ったDLLから受けとります。
アンマネージドコードからマネージドコードにコピーする際の制約などありますか?
構造体は次のようになっています。
C側
typedef struct{
int m_len;
char m_message[256];
}MESSAGE;
VB側
<StructLayout(LayoutKind.Explicit, Size:=260, CharSet:=CharSet.Ansi)> _
Structure MESSAGE
<FieldOffset(0)> Dim m_len As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
<FieldOffset(4)> Dim m_message As String
End Structure
C側
msg.m_len = strlen(p);
memcpy(msg.m_message,p,strlen(p));
memcpy(p_msg,&msg,sizeof(MESSAGE));
VB側
msg = CType((Marshal.PtrToStructure(nAddress, GetType(MESSAGE))), MESSAGE)
ダンプしてみたのですが、NULLでした・・・
|