この問題を修正しましたが修正できませんでした。 私は読み込み用のdllファイルと古いrfdiカードリーダー(RF20Eが呼び出されている)を持っています 私はそれを読んでカードを操作することができましたが、それはセクターの読書になると失敗します!ここ はC DLLは、私がしようとしている私はvb.net</p> <p>にそれを使用する必要があり、古いVB6のプログラムを持っているVB6で正常に動作しますが、vb.netにエラーが発生します(保護されたメモリを読み書きしようとしました)
Dim databuff32 As String * 32
address = 4
sector = 1
loadmode = 0
st = rf_authentication(ByVal icdev, loadmode, sector)
If st <> 0 Then
M1_label.Caption = "Call rf_authentication() error.Exit!"
Exit Sub
End If
st = rf_read_hex(ByVal icdev, address, databuff32)
If st <> 0 Then
M1_label.Caption = "Call rf_read_hex error.Exit!"
Exit Sub
End If
上記のコードは
ここだけで正常に動作し.hのライブラリ関数
でVB6Declare Function rf_read_hex Lib "rf20e.dll" (ByVal icdev As Long, ByVal Adr%, ByVal sdata As String) As Integer
をから関数宣言であり、ここでVB6での関数呼び出しであります
__int16 __stdcall rf_read_hex(HANDLE icdev,unsigned char _Adr, char *_Data);
でも、私がvb.netで同じことをしようとすると、保護されたメモリが得られます。エラー
ここでは私のコード
Public Declare Function rf_read_hex Lib "rf20e.dll" (ByVal icdev As Integer, ByVal Adr%, ByRef sdata() As Char) As Short
Dim sector As Integer = 1
Dim address As Integer = 4
Dim loadmode = 0
st = rf_authentication(icdev, loadmode, sector)
st2 = rf_read_hex(icdev, address, databuff32)
rf_authenticationが正常に動作しています!
私はdatabuff32バイト文字列のさまざまなタイプを試しましたが、タイプエラーまたはメモリエラーが発生しています。
しかし、タイプをDim databuff32 As Char
として設定し、減速機能で参照をByRef sdata As Char
として設定しても、!!!!!私は最初の値だけを読み取ることはできません
私はかなりの問題は、文字列* 32減速だと確信していますが、私はそれを修正することができませんでした!
助けてくれてありがとう!
助けに感謝が、これは私の答えを波平:
、ここでは、呼び出しがあります!私は私の問題を解決しましたPublic Declare Function rf_read_hex Lib "rf20e。これは答えで、私はdatabuff32を新しいstrgingbuilder(64)として宣言しました。すべては現在問題ありません。 –