Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198697
  • 博文数量: 29
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-22 16:23
文章分类

全部博文(29)

文章存档

2009年(3)

2008年(1)

2007年(1)

2006年(3)

2005年(21)

我的朋友

分类: 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

阅读(2840) | 评论(0) | 转发(0) |
0

上一篇:WNET协议应用

下一篇:WNET协议应用

给主人留下些什么吧!~~