7,763
社区成员
发帖
与我相关
我的任务
分享
LONG NET_DVR_StartRemoteConfig(
LONG lUserID,
DWORD dwCommand,
LPVOID lpInBuffer,
DWORD dwInBufferLen,
fRemoteConfigCallback cbStateCallback,
LPVOID pUserData
);
Callback Function
typedef void(CALLBACK *fRemoteConfigCallback)(
DWORD dwType,
void *lpBuffer,
DWORD dwBufLen,
void *pUserData
);
Public Declare Function NET_DVR_StartRemoteConfig Lib "HCNETSDK.dll" ( _
ByVal lUserID As Long, _
ByVal dwCommand As Long, _
ByVal lpInBuffer As Long, _
ByVal dwInBufferLen As Long, _
ByVal cbStateCallback As Long, _
ByVal pUserData As Long) As Long
回调函数
'下发卡号回调函数
Public Function fSetRemoteConfigCallback(ByVal dwType As Long, ByVal lpBuffer As Long, ByVal dwBufLen As Long, ByVal pUserData As Long)
On Error GoTo ErrFlag
MsgBox "fSetRemoteConfigCallback"
List1.AddItem "fSetRemoteConfigCallback(dwType=" & dwType & ")!", 0
If dwType <> NET_SDK_CALLBACK_TYPE_STATUS Then
Exit Function
End If
Dim dwStatus As Long
CopyMemory VarPtr(dwStatus), lpBuffer, 4 '复制lpBuffer的内存到dwStatus的指针处
If dwStatus = NET_SDK_CALLBACK_STATUS_SUCCESS Then
bSetCardCfgFinish = True
End If
List1.AddItem "fSetRemoteConfigCallback(dwStatus=" & dwStatus & ")!", 0
Exit Function
ErrFlag:
MsgBox "fSetRemoteConfigCallback--" & Err.Description, vbOKOnly + vbExclamation, "提醒"
End Function
函数调用部分代码
'下发卡号到网络盒子
Dim NetDvrCfgCond As NET_DVR_CARD_CFG_COND
NetDvrCfgCond.dwSize = LenB(NetDvrCfgCond)
NetDvrCfgCond.dwCardNum = 1
NetDvrCfgCond.byCheckCardNo = 1
NetDvrCfgCond.byRes1(0) = 0
NetDvrCfgCond.wLocalControllerID = 0
NetDvrCfgCond.byRes2(0) = 0
'锁号
NetDvrCfgCond.dwLockID = Val(Text6.Text)
NetDvrCfgCond.byRes3(0) = 0
Dim pRemoteConfigCallback As Long
pRemoteConfigCallback = PtrToLong(AddressOf fSetRemoteConfigCallback)
Dim dwInBufferLen As Long
dwInBufferLen = LenB(NetDvrCfgCond)
Dim pUserData As Long
pUserData = 0
Dim hStartRemoteConfig As Long
Dim lpInBuffer As Long
lpInBuffer = VarPtr(NetDvrCfgCond)
'启动远程配置。
hStartRemoteConfig = NET_DVR_StartRemoteConfig(iUserId, NET_DVR_SET_CARD_CFG_V50, lpInBuffer, dwInBufferLen, pRemoteConfigCallback, pUserData)
If hStartRemoteConfig = -1 Then
ErrorCode = NET_DVR_GetLastError
MsgBox "启动远程配置失败(" & ErrorCode & ")--下发到网络盒子!", vbOKOnly + vbExclamation, "提醒"
Call NET_DVR_Logout(iUserId)
Call NET_DVR_Cleanup
Exit Sub
End If
typedef void(CALLBACK *fRemoteConfigCallback)(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData);
#define __stdcall
#define CALLBACK
头文件是这样定义的,是不是CALLBACK 就等于__stdcall ?我百度也看到有说CALLBACK 就等于__stdcall .
另外回调函数里可以用msgbox吧,由于条件限制没法跟踪调试,所以msgbox也好list也好都是为跟踪回调函数到底有没有执行,以后肯定会去掉。