|
分類:[VB.NET/VB2005 以降]
はじめまして。 VB2010Expressを使用して、VCにて作成されたDLLを呼び出したいと思っています。 そこで2点分からないことがあります。
DLL側では以下の様に定義されています。
EXPORT BOOL __stdcall Data_Read( BYTE sel, DWORD Size, LPVOID pBuffer );
VBでは以下の様に定義しました。 <DllImport("TEST.dll")> Public Function Data_Read(ByVal sel As Byte, ByVal Size As UInteger, ByVal pBuffer As UIntPtr) As Boolean End Function
1,VBでは必要なメモリを確保してからDLLにパラメータを渡せば良いと思うのですが上手くいきません。
Dim Buf() As UInteger Buf = New Byte(65535) {}
' リード処理 If (Data_Read(0, 65536, Buf(0)) = False) Then ^^^^^^ End If
Data_Read()関数の第3引数にBuf配列の先頭アドレスを渡せば良いと思っているのですがどう記述すれば良いのか分かりません。
2, Buf = New Byte(65535) {} ←これが成功したかを調べるにはどうすれば良いのですか? 64KB程度なら余程の事でない限り問題ないと思いますが、128MB,512MBを設定した場合に確保できない事があると思います。
以上2点、アドバイスをお願い致します。
|