分类: WINDOWS
2005-10-17 16:00:42
第六节:恢复连接名
重新得到对一个逻辑驱动器分配的网络资源名称,使用WNetGetConnection函数
CHAR szDeviceName[80];
DWORD dwResult, cchBuff = sizeof(szDeviceName);
dwResult = WNetGetConnection("z:",(LPSTR) szDeviceName,&cchBuff);
// 函数 WNetGetConnection使用说明
// DWORD WNetGetConnection(
// LPCTSTR lpLocalName, // 指向本地名称
// LPTSTR lpRemoteName, // 指向远程名称
// LPDWORD lpnLength // 缓冲大小
// );
switch (dwResult) //分析结果
{
case NO_ERROR: //无错误
TextOut(hdc, 10, 10, (LPSTR) szDeviceName,
lstrlen((LPSTR) szDeviceName));
break;
case ERROR_NOT_CONNECTED:
TextOut(hdc, 10, 10, "驱动器 z: 没有连接.", 24);
case ERROR_CONNECTION_UNAVAIL:
// 连接记忆存在,但连接不能使用.
TextOut(hdc, 10, 10, "连接不能使用.", 23);
default:
//其他错误
NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetGetConnection");
return FALSE;
}
;====汇编语言描述(BY 谢小荣)=====
AsmGetWNetConnection PROTO :DWORD,:DWORD,:DWORD
.data
asmgetwnetconn_0 db "",0
asmgetwnetconn_1 db "驱动器没有连接",0
asmgetwnetconn_2 db "连接记忆存在,但连接不能使用",0
asmgetwnetconn_3 db "本地名称非法",0
asmgetwnetconn_4 db "远程名字太长",0
asmgetwnetconn_5 db "网络不可用",0
asmgetwnetconn_6 db "其他错误",0
.data?
lpRemoteName db 80 dup(?),0
.code
AsmGetWNetConnection proc hwnd:DWORD,hdc:DWORD,lpLocalName:DWORD
invoke WNetGetConnection,lpLocalName,addr lpRemoteName,80
.IF EAX==NO_ERROR
invoke TextOut,hdc, 10, 10, addr lpRemoteName, 80
mov eax,0
.ELSE
.IF EAX==ERROR_NOT_CONNECTED
invoke TextOut,hdc,10,10,addr asmgetwnetconn_1,16
.ELSEIF EAX==ERROR_CONNECTION_UNAVAIL
invoke TextOut,hdc,10,10,addr asmgetwnetconn_2,34
.ELSEIF EAX==ERROR_BAD_DEVICE
invoke TextOut,hdc,10,10,addr asmgetwnetconn_3,34
.ELSEIF EAX==ERROR_MORE_DATA
invoke TextOut,hdc,10,10,addr asmgetwnetconn_4,34
.ELSEIF EAX==ERROR_NO_NETWORK
invoke TextOut,hdc,10,10,addr asmgetwnetconn_5,34
.ELSE
invoke TextOut,hdc,10,10,addr asmgetwnetconn_6,34
.ENDIF
mov eax,1
.ENDIF
ret
AsmGetWNetConnection endp