2009-12-23 4 views
1

VB.NET에서 기존 VB6 앱을 업그레이드해야합니다. 이 응용 프로그램은 매개 변수 중 하나로서 메모리 주소를 사용하는 .dll에서 함수 호출을 사용합니다. VB6 응용 프로그램이 VarPtr() 함수를 사용하여이 작업을 수행하지만 .NET에서는이 함수가 없습니다. .NET에서 변수의 메모리 위치를 검색하려면 어떻게합니까? 예를 들어VB.NET에서 변수 주소에 액세스하는 방법은 무엇입니까

-Edit1

aVariable1 = aFunctionCall(VarPtr(aVariable2)) 
정확한 함수 호출 FTD2XX.DLL 및 정확한 콜라는 DLL에

-Edit2

FT_STATUS = FT_ListDevices(arg1, arg2, _ 
    FT_LIST_BY_INDEX or FT_OPEN_BY_SERIAL_NUMBER) 
+0

arg1 및 arg2 변수의 유형은 무엇입니까? – MarkJ

답변

1

이 시도 관리되는 코드 (.NET)의 주소를 관리되지 않는 DLL에 전달하는 것이 최상의 p가 아닐 수도 있습니다. lan. VB6과 VB.NET은 비슷한 문법과 비슷한 발음을하는 것 이상의 공통점이 없습니다. 주소를 전달하기 전에 메모리를 고정해야 할 수도 있습니다. 플랫폼 호출을 조사해야합니다. http://msdn.microsoft.com/en-us/library/aa288468(VS.71).aspx

1

Declare 키워드로 외부 함수를 선언하면 자동으로 실행됩니다. ByRef를 사용하여 인수를 선언하면됩니다. 이로 인해 P/Invoke 마샬 러가 원시 코드에 대한 포인터를 전달하게됩니다. VarPtr과 동일합니다. ByVal을 전달하는 경우에만 전달 된 인수를 명시 적으로 포인터로 변환해야합니다.

관련 문제