Вы, вероятно, видите эту ошибку:
Выражение 'AddressOf' не может быть
конвертируется в «Long», потому что «Long»
не тип делегата.
Что вы, вероятно, хотите сделать, это создать делегата, а затем изменить тип adab на этот тип делегата. Добавьте это к классу:
Public Delegate Sub ReadDataCallBackDelegate(ByVal nPort As Long, _
ByVal pPacketBuffer As Byte, ByVal nPacketSize As Long)
Затем измените объявление P / Invoke на:
Declare Function MP4_ClientStart Lib "hikclient.dll" (ByVal pClientinfo As _
CLIENT_VIDEOINFO, ByVal abab As ReadDataCallBackDelegate) As Long
Не удаляйте и не изменяйте свой Sub ReadDataCallBack, он вам все еще необходим.
В этот момент он должен быть счастлив. Тем не менее, точка зрения других важна. Длина целых и длинных в VB6 отличается от длины в VB.NET. Поэтому в .NET вам нужно использовать Integer каждый раз, когда вы используете Long в VB6.