在NT中调用rasdial

liyang 2000-06-22 04:15:00

在vb中使用ras api,当调用rasdial时,会使用一个RASDIALPARAMS 结构。有意思的一点是,在win98、win95下,没有问题。但在nt中,调用,会说结构不对。经在vc中试,sizeof(RASDIALPARAMS)和在vb下len(RASDIALPARAMS )的大小不同,有数个字节的差异,这应该是在vb中内存对齐的问题,如何解决?
...全文
530 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyang 2000-07-19
  • 打赏
  • 举报
回复
un1:
多谢多谢!总算可以解决了!
Un1 2000-07-19
  • 打赏
  • 举报
回复
看看你的Email:

Option Explicit
'**********************************
'* Constant Declarations *
'**********************************
'constants needed for UDTs
Public Const UNLEN = 256
Public Const DNLEN = 15
Public Const PWLEN = 256

Public Const RAS_MaxDeviceType = 16
Public Const RAS_MaxPhoneNumber = 128
Public Const RAS_MaxIpAddress = 15
Public Const RAS_MaxIpxAddress = 21


Public Const RAS_MaxEntryName = 20
Public Const RAS_MaxDeviceName = 32
Public Const RAS_MaxCallbackNumber = 48

Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxDeviceName = 128
Public Const RAS95_MaxCallbackNumber = RAS_MaxPhoneNumber


Public Const RASP_Amb = &H10000
Public Const RASP_PppNbf = &H803F&
Public Const RASP_PppIpx = &H802B&
Public Const RASP_PppIp = &H8021&

'Other Constants
Public Const NETBIOS_NAME_LEN = 16

Public Const APINULL = 0&

Public Const VER_PLATFORM_WIN32s = 0&
Public Const VER_PLATFORM_WIN32_WINDOWS = 1&
Public Const VER_PLATFORM_WIN32_NT = 2&

'RASCONNSTATE enum
Public Const RASCS_PAUSED = &H1000&
Public Const RASCS_DONE = &H2000&

'begin enum
Public Const RASCS_OpenPort = 0&
Public Const RASCS_PortOpened = 1&
Public Const RASCS_ConnectDevice = 2&
Public Const RASCS_DeviceConnected = 3&
Public Const RASCS_AllDevicesConnected = 4&
Public Const RASCS_Authenticate = 5&
Public Const RASCS_AuthNotify = 6&
Public Const RASCS_AuthRetry = 7&
Public Const RASCS_AuthCallback = 8&
Public Const RASCS_AuthChangePassword = 9&
Public Const RASCS_AuthProject = 10&
Public Const RASCS_AuthLinkSpeed = 11&
Public Const RASCS_AuthAck = 12&
Public Const RASCS_ReAuthenticate = 13&
Public Const RASCS_Authenticated = 14&
Public Const RASCS_PrepareForCallback = 15&
Public Const RASCS_WaitForModemReset = 16&
Public Const RASCS_WaitForCallback = 17&
Public Const RASCS_Projected = 18&

Public Const RASCS_StartAuthentication = 19& 'Windows 95 only
Public Const RASCS_CallbackComplete = 20& 'Windows 95 only
Public Const RASCS_LogonNetwork = 21& 'Windows 95 only

Public Const RASCS_Interactive = RASCS_PAUSED
Public Const RASCS_RetryAuthentication = RASCS_PAUSED + 1&
Public Const RASCS_CallbackSetByCaller = RASCS_PAUSED + 2&
Public Const RASCS_PasswordExpired = RASCS_PAUSED + 3&

Public Const RASCS_Connected = RASCS_DONE
Public Const RASCS_Disconnected = RASCS_DONE + 1&
'end enum


'**********************************
'* User Defined Type Declarations *
'**********************************
'As a note VB subscripts are already +1 over C
Public Type RASDIALEXTENSIONS
'set dwsize to 16
dwSize As Long
dwfOptions As Long
hwndParent As Long
reserved As Long
End Type

Public Type RASDIALPARAMS
'set dwsize to 736 unless winver >= 400 then set to 1052
dwSize As Long
szEntryName(RAS_MaxEntryName) As Byte
szPhoneNumber(RAS_MaxPhoneNumber) As Byte
szCallbackNumber(RAS_MaxCallbackNumber) As Byte
szUserName(UNLEN) As Byte
szPassword(PWLEN) As Byte
szDomain(DNLEN) As Byte
End Type

Public Type RASDIALPARAMS95
'set dwsize to 1052
dwSize As Long
szEntryName(RAS95_MaxEntryName) As Byte
szPhoneNumber(RAS_MaxPhoneNumber) As Byte
szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
szUserName(UNLEN) As Byte
szPassword(PWLEN) As Byte
szDomain(DNLEN) As Byte
End Type

Public Type RASCONN
'set dwsize to 32
dwSize As Long
hRasConn As Long
szEntryName(RAS_MaxEntryName) As Byte
End Type

Public Type RASCONN95
'set dwsize to 412
dwSize As Long
hRasConn As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Public Type RASENTRYNAME
'set dwsize to 28 unless winver >= 400 then set to 264
dwSize As Long
szEntryName(RAS_MaxEntryName) As Byte
End Type

Public Type RASENTRYNAME95
'set dwsize to 264
dwSize As Long
szEntryName(RAS95_MaxEntryName) As Byte
End Type

Public Type RASCONNSTATUS
'set dwsize to 64 unless winver >= 400 then set to 288
dwSize As Long
rasconnstate As Long 'RASCONNSTATE Enumeration
dwError As Long
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS_MaxDeviceName) As Byte
End Type

Public Type RASCONNSTATUS95
'set dwsize to 160
dwSize As Long
rasconnstate As Long 'RASCONNSTATE Enumeration
dwError As Long
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Public Type RASAMB
'set dwsize to 28
dwSize As Long
dwError As Long
szNetBiosError(NETBIOS_NAME_LEN) As Byte
bLana As Byte
End Type

Public Type RASPPPNBF
'set dwsize to 48
dwSize As Long
dwError As Long
dwNetBiosError As Long
szNetBiosError(NETBIOS_NAME_LEN) As Byte
szWorkstationName(NETBIOS_NAME_LEN) As Byte
bLana As Byte
End Type

Public Type RASPPPIPX
'set dwsize to 32
dwSize As Long
dwError As Long
szIpxAddress(RAS_MaxIpxAddress) As Byte
End Type

Public Type RASPPPIP
'set dwsize to 40
dwSize As Long
dwError As Long
szIpAddress(RAS_MaxIpAddress) As Byte
szServerAddress(RAS_MaxIpAddress) As Byte
End Type


'**********************************
'* WIN32 Type Declarations *
'**********************************
'We have to determine the OS version
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type


'**********************************
'* RAS Function Declarations *
'**********************************
'I keep type checking wherever possible.
'Some functions need a ByVal sometimes and ByRef others. I declare ByRef and issue ByVal in function call.
'These functions should be good for all cases if the ByVal is added to the call wherever needed.
Public Declare Function RasCreatePhonebookEntry Lib "RasApi32.DLL" Alias "RasCreatePhonebookEntryA" (ByVal hWND As Long, ByVal lpszPhonebook As String) As Long
Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long
Public Declare Function RasEditPhonebookEntry Lib "RasApi32.DLL" Alias "RasEditPhonebookEntryA" (ByVal hWND As Long, ByVal lpszPhonebook As String, ByVal lpszEntryName As String) As Long
Public Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
Public Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
Public Declare Function RasGetConnectStatus Lib "RasApi32.DLL" Alias "RasGetConnectStatusA" (ByVal hRasConn As Long, lpRASCONNSTATUS As Any) As Long
Public Declare Function RasGetEntryDialParams Lib "RasApi32.DLL" Alias "RasGetEntryDialParamsA" (ByVal lpszPhonebook As String, lprasdialparams As Any, lpfPassword As Long) As Long
Public Declare Function RasGetErrorString Lib "RasApi32.DLL" Alias "RasGetErrorStringA" (ByVal uErrorValue As Long, ByVal lpszErrorString As String, ByVal cBufSize As Long) As Long
Public Declare Function RasGetProjectionInfo Lib "RasApi32.DLL" Alias "RasGetProjectionInfoA" (ByVal hRasConn As Long, ByVal rasprojection As Long, lpprojection As Any, lpcb As Long) As Long
Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public Declare Function RasSetEntryDialParams Lib "RasApi32.DLL" Alias "RasSetEntryDialParamsA" (ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal fRemovePassword As Long) As Long


'**********************************
'* WIN32 Function Declarations *
'**********************************
'I use these all over the place so why duplicate declares
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
'had to modify to fit my needs (Usually copying string to byte array because StrConv fails when array is not dynamic)
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long
Public Declare Function lstrcpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As String, ByVal lpString2 As String, ByVal iMaxLength As Long) As Long
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long


'**********************************
'* RAS Error Return Codes *
'**********************************
Public Const NOT_SUPPORTED = 120&

Public Const RASBASE = 600&
Public Const SUCCESS = 0&

Public Const PENDING = (RASBASE + 0)
Public Const ERROR_INVALID_PORT_HANDLE = (RASBASE + 1)
Public Const ERROR_PORT_ALREADY_OPEN = (RASBASE + 2)
Public Const ERROR_BUFFER_TOO_SMALL = (RASBASE + 3)
Public Const ERROR_WRONG_INFO_SPECIFIED = (RASBASE + 4)
Public Const ERROR_CANNOT_SET_PORT_INFO = (RASBASE + 5)
Public Const ERROR_PORT_NOT_CONNECTED = (RASBASE + 6)
Public Const ERROR_EVENT_INVALID = (RASBASE + 7)
Public Const ERROR_DEVICE_DOES_NOT_EXIST = (RASBASE + 8)
Public Const ERROR_DEVICETYPE_DOES_NOT_EXIST = (RASBASE + 9)
Public Const ERROR_BUFFER_INVALID = (RASBASE + 10)
Public Const ERROR_ROUTE_NOT_AVAILABLE = (RASBASE + 11)
Public Const ERROR_ROUTE_NOT_ALLOCATED = (RASBASE + 12)
Public Const ERROR_INVALID_COMPRESSION_SPECIFIED = (RASBASE + 13)
Public Const ERROR_OUT_OF_BUFFERS = (RASBASE + 14)
Public Const ERROR_PORT_NOT_FOUND = (RASBASE + 15)
Public Const ERROR_ASYNC_REQUEST_PENDING = (RASBASE + 16)
Public Const ERROR_ALREADY_DISCONNECTING = (RASBASE + 17)
Public Const ERROR_PORT_NOT_OPEN = (RASBASE + 18)
Public Const ERROR_PORT_DISCONNECTED = (RASBASE + 19)
Public Const ERROR_NO_ENDPOINTS = (RASBASE + 20)
Public Const ERROR_CANNOT_OPEN_PHONEBOOK = (RASBASE + 21)
Public Const ERROR_CANNOT_LOAD_PHONEBOOK = (RASBASE + 22)
Public Const ERROR_CANNOT_FIND_PHONEBOOK_ENTRY = (RASBASE + 23)
Public Const ERROR_CANNOT_WRITE_PHONEBOOK = (RASBASE + 24)
Public Const ERROR_CORRUPT_PHONEBOOK = (RASBASE + 25)
Public Const ERROR_CANNOT_LOAD_STRING = (RASBASE + 26)
Public Const ERROR_KEY_NOT_FOUND = (RASBASE + 27)
Public Const ERROR_DISCONNECTION = (RASBASE + 28)
Public Const ERROR_REMOTE_DISCONNECTION = (RASBASE + 29)
Public Const ERROR_HARDWARE_FAILURE = (RASBASE + 30)
Public Const ERROR_USER_DISCONNECTION = (RASBASE + 31)
Public Const ERROR_INVALID_SIZE = (RASBASE + 32)
Public Const ERROR_PORT_NOT_AVAILABLE = (RASBASE + 33)
Public Const ERROR_CANNOT_PROJECT_CLIENT = (RASBASE + 34)
Public Const ERROR_UNKNOWN = (RASBASE + 35)
Public Const ERROR_WRONG_DEVICE_ATTACHED = (RASBASE + 36)
Public Const ERROR_BAD_STRING = (RASBASE + 37)
Public Const ERROR_REQUEST_TIMEOUT = (RASBASE + 38)
Public Const ERROR_CANNOT_GET_LANA = (RASBASE + 39)
Public Const ERROR_NETBIOS_ERROR = (RASBASE + 40)
Public Const ERROR_SERVER_OUT_OF_RESOURCES = (RASBASE + 41)
Public Const ERROR_NAME_EXISTS_ON_NET = (RASBASE + 42)
Public Const ERROR_SERVER_GENERAL_NET_FAILURE = (RASBASE + 43)
Public Const WARNING_MSG_ALIAS_NOT_ADDED = (RASBASE + 44)
Public Const ERROR_AUTH_INTERNAL = (RASBASE + 45)
Public Const ERROR_RESTRICTED_LOGON_HOURS = (RASBASE + 46)
Public Const ERROR_ACCT_DISABLED = (RASBASE + 47)
Public Const ERROR_PASSWD_EXPIRED = (RASBASE + 48)
Public Const ERROR_NO_DIALIN_PERMISSION = (RASBASE + 49)
Public Const ERROR_SERVER_NOT_RESPONDING = (RASBASE + 50)
Public Const ERROR_FROM_DEVICE = (RASBASE + 51)
Public Const ERROR_UNRECOGNIZED_RESPONSE = (RASBASE + 52)
Public Const ERROR_MACRO_NOT_FOUND = (RASBASE + 53)
Public Const ERROR_MACRO_NOT_DEFINED = (RASBASE + 54)
Public Const ERROR_MESSAGE_MACRO_NOT_FOUND = (RASBASE + 55)
Public Const ERROR_DEFAULTOFF_MACRO_NOT_FOUND = (RASBASE + 56)
Public Const ERROR_FILE_COULD_NOT_BE_OPENED = (RASBASE + 57)
Public Const ERROR_DEVICENAME_TOO_LONG = (RASBASE + 58)
Public Const ERROR_DEVICENAME_NOT_FOUND = (RASBASE + 59)
Public Const ERROR_NO_RESPONSES = (RASBASE + 60)
Public Const ERROR_NO_COMMAND_FOUND = (RASBASE + 61)
Public Const ERROR_WRONG_KEY_SPECIFIED = (RASBASE + 62)
Public Const ERROR_UNKNOWN_DEVICE_TYPE = (RASBASE + 63)
Public Const ERROR_ALLOCATING_MEMORY = (RASBASE + 64)
Public Const ERROR_PORT_NOT_CONFIGURED = (RASBASE + 65)
Public Const ERROR_DEVICE_NOT_READY = (RASBASE + 66)
Public Const ERROR_READING_INI_FILE = (RASBASE + 67)
Public Const ERROR_NO_CONNECTION = (RASBASE + 68)
Public Const ERROR_BAD_USAGE_IN_INI_FILE = (RASBASE + 69)
Public Const ERROR_READING_SECTIONNAME = (RASBASE + 70)
Public Const ERROR_READING_DEVICETYPE = (RASBASE + 71)
Public Const ERROR_READING_DEVICENAME = (RASBASE + 72)
Public Const ERROR_READING_USAGE = (RASBASE + 73)
Public Const ERROR_READING_MAXCONNECTBPS = (RASBASE + 74)
Public Const ERROR_READING_MAXCARRIERBPS = (RASBASE + 75)
Public Const ERROR_LINE_BUSY = (RASBASE + 76)
Public Const ERROR_VOICE_ANSWER = (RASBASE + 77)
Public Const ERROR_NO_ANSWER = (RASBASE + 78)
Public Const ERROR_NO_CARRIER = (RASBASE + 79)
Public Const ERROR_NO_DIALTONE = (RASBASE + 80)
Public Const ERROR_IN_COMMAND = (RASBASE + 81)
Public Const ERROR_WRITING_SECTIONNAME = (RASBASE + 82)
Public Const ERROR_WRITING_DEVICETYPE = (RASBASE + 83)
Public Const ERROR_WRITING_DEVICENAME = (RASBASE + 84)
Public Const ERROR_WRITING_MAXCONNECTBPS = (RASBASE + 85)
Public Const ERROR_WRITING_MAXCARRIERBPS = (RASBASE + 86)
Public Const ERROR_WRITING_USAGE = (RASBASE + 87)
Public Const ERROR_WRITING_DEFAULTOFF = (RASBASE + 88)
Public Const ERROR_READING_DEFAULTOFF = (RASBASE + 89)
Public Const ERROR_EMPTY_INI_FILE = (RASBASE + 90)
Public Const ERROR_AUTHENTICATION_FAILURE = (RASBASE + 91)
Public Const ERROR_PORT_OR_DEVICE = (RASBASE + 92)
Public Const ERROR_NOT_BINARY_MACRO = (RASBASE + 93)
Public Const ERROR_DCB_NOT_FOUND = (RASBASE + 94)
Public Const ERROR_STATE_MACHINES_NOT_STARTED = (RASBASE + 95)
Public Const ERROR_STATE_MACHINES_ALREADY_STARTED = (RASBASE + 96)
Public Const ERROR_PARTIAL_RESPONSE_LOOPING = (RASBASE + 97)
Public Const ERROR_UNKNOWN_RESPONSE_KEY = (RASBASE + 98)
Public Const ERROR_RECV_BUF_FULL = (RASBASE + 99)
Public Const ERROR_CMD_TOO_LONG = (RASBASE + 100)
Public Const ERROR_UNSUPPORTED_BPS = (RASBASE + 101)
Public Const ERROR_UNEXPECTED_RESPONSE = (RASBASE + 102)
Public Const ERROR_INTERACTIVE_MODE = (RASBASE + 103)
Public Const ERROR_BAD_CALLBACK_NUMBER = (RASBASE + 104)
Public Const ERROR_INVALID_AUTH_STATE = (RASBASE + 105)
Public Const ERROR_WRITING_INITBPS = (RASBASE + 106)
Public Const ERROR_X25_DIAGNOSTIC = (RASBASE + 107)
Public Const ERROR_ACCT_EXPIRED = (RASBASE + 108)
Public Const ERROR_CHANGING_PASSWORD = (RASBASE + 109)
Public Const ERROR_OVERRUN = (RASBASE + 110)
Public Const ERROR_RASMAN_CANNOT_INITIALIZE = (RASBASE + 111)
Public Const ERROR_BIPLEX_PORT_NOT_AVAILABLE = (RASBASE + 112)
Public Const ERROR_NO_ACTIVE_ISDN_LINES = (RASBASE + 113)
Public Const ERROR_NO_ISDN_CHANNELS_AVAILABLE = (RASBASE + 114)
Public Const ERROR_TOO_MANY_LINE_ERRORS = (RASBASE + 115)
Public Const ERROR_IP_CONFIGURATION = (RASBASE + 116)
Public Const ERROR_NO_IP_ADDRESSES = (RASBASE + 117)
Public Const ERROR_PPP_TIMEOUT = (RASBASE + 118)
Public Const ERROR_PPP_REMOTE_TERMINATED = (RASBASE + 119)
Public Const ERROR_PPP_NO_PROTOCOLS_CONFIGURED = (RASBASE + 120)
Public Const ERROR_PPP_NO_RESPONSE = (RASBASE + 121)
Public Const ERROR_PPP_INVALID_PACKET = (RASBASE + 122)
Public Const ERROR_PHONE_NUMBER_TOO_LONG = (RASBASE + 123)
Public Const ERROR_IPXCP_NO_DIALOUT_CONFIGURED = (RASBASE + 124)
Public Const ERROR_IPXCP_NO_DIALIN_CONFIGURED = (RASBASE + 125)
Public Const ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE = (RASBASE + 126)
Public Const ERROR_ACCESSING_TCPCFGDLL = (RASBASE + 127)
Public Const ERROR_NO_IP_RAS_ADAPTER = (RASBASE + 128)
Public Const ERROR_SLIP_REQUIRES_IP = (RASBASE + 129)
Public Const ERROR_PROJECTION_NOT_COMPLETE = (RASBASE + 130)
Public Const ERROR_PROTOCOL_NOT_CONFIGURED = (RASBASE + 131)
Public Const ERROR_PPP_NOT_CONVERGING = (RASBASE + 132)
Public Const ERROR_PPP_CP_REJECTED = (RASBASE + 133)
Public Const ERROR_PPP_LCP_TERMINATED = (RASBASE + 134)
Public Const ERROR_PPP_REQUIRED_ADDRESS_REJECTED = (RASBASE + 135)
Public Const ERROR_PPP_NCP_TERMINATED = (RASBASE + 136)
Public Const ERROR_PPP_LOOPBACK_DETECTED = (RASBASE + 137)
Public Const ERROR_PPP_NO_ADDRESS_ASSIGNED = (RASBASE + 138)
Public Const ERROR_CANNOT_USE_LOGON_CREDENTIALS = (RASBASE + 139)
Public Const ERROR_TAPI_CONFIGURATION = (RASBASE + 140)
Public Const ERROR_NO_LOCAL_ENCRYPTION = (RASBASE + 141)
Public Const ERROR_NO_REMOTE_ENCRYPTION = (RASBASE + 142)
Public Const ERROR_REMOTE_REQUIRES_ENCRYPTION = (RASBASE + 143)
Public Const ERROR_IPXCP_NET_NUMBER_CONFLICT = (RASBASE + 144)
Public Const ERROR_INVALID_SMM = (RASBASE + 145)
Public Const ERROR_SMM_UNINITIALIZED = (RASBASE + 146)
Public Const ERROR_NO_MAC_FOR_PORT = (RASBASE + 147)
Public Const ERROR_SMM_TIMEOUT = (RASBASE + 148)
Public Const ERROR_BAD_PHONE_NUMBER = (RASBASE + 149)
Public Const ERROR_WRONG_MODULE = (RASBASE + 150)
Public Const RASBASEEND = (RASBASE + 150)


'**********************************
'* Public Variable Declarations *
'**********************************
'I hate to do it, but this is the OS version variable. No client can touch it here and it saves a lot of code.
Public lngWindowVersion As Long
'I have to protect it, yet see it everywhere. Array for PhoneEntry Objects
Public arrPEntry() As PhoneEntry
Public arrConnection() As Connection
'Same goes for these
'set up variables for other objects
'They are not that big so we will keep them initialized
Public lpConnections As Connections
Public lpRASError As RASError
Public lpPhoneEntries As PhoneEntries
'Error object
'ErrorNumber property
Public lngRASErrorNumber As Long
'Description property
Public strRASDescription As String

'Flag so that I can stop client from updating
Public boolAllowUpdate As Boolean

Public Sub Main()

End Sub

Public Function fcnTrimNulls(ByVal strFullofNulls As String) As String

'This function just gets rid of the Nulls that StrConv leaves on 95
'passing like this is odd, but it works in the fewest lines
'I had to add this to handle 95 after the fact
If (InStr(strFullofNulls, Chr$(0))) Then fcnTrimNulls = Left$(strFullofNulls, InStr(strFullofNulls, Chr$(0)) - 1)

End Function
liyang 2000-07-19
  • 打赏
  • 举报
回复
已经没有了,我一down,就到default.asp
rnadial不知道.是哪儿的?
pengsir 2000-07-19
  • 打赏
  • 举报
回复
rasdial 与RnaDial ,有何区别?
Un1 2000-07-19
  • 打赏
  • 举报
回复
http://support.microsoft.com/download/support/mslfiles/Vb32ras.exe
liyang 2000-07-12
  • 打赏
  • 举报
回复
我知道不同。我是按msdn的结构定义的。
98和nt的结构是不同。在c中可以b中不行。
而vb32ras.exe载不到。
Un1 2000-06-22
  • 打赏
  • 举报
回复
不是VB的问题!本来RASDIALPARAMS在95和NT的定义中长度就不同。你需要在不同系统中为RASDIALPARAMS结构伏不同的值。去MS下载vb32ras.exe看看就明白了。
本书专门讨论Windows网络编程技术,覆盖Windows 95/98/NT 4/2000/CE平台,内容包括NetBIOS和Windows重定向器方法、Winsock方法、客户端远程访问服务器方法,本书论述深入浅出、用大量实例详解了微软网络API函数的应用。目录----------------------------------------------------------译者序前言第一部分 传统网络API第1章 NetBIOS 11.1 Microsoft NetBIOS 21.1.1 LANA编号 21.1.2 NetBIOS名字 41.1.3 NetBIOS特性 61.2 NetBIOS编程基础 71.3 常规NetBIOS例程 81.3.1 会话服务器:异步回调模型 151.3.2 会话服务器:异步事件模型 201.3.3 NetBIOS会话客户机 241.4 数据报的工作原理 281.5 其他NetBIOS命令 401.5.1 适配器状态 401.5.2 查找名字 421.5.3 将传送协议同LANA编号对应起来 431.6 平台问题 431.6.1 Windows CE 441.6.2 Windows 9x 441.6.3 常规问题 441.7 小结 44第2章 重定向器 452.1 通用命名规范 452.2 多UNC提供者 472.3 网络提供者 472.4 重定向器简介 482.5 服务器消息块 482.6 安全问题 492.6.1 安全描述符 492.6.2 访问令牌 512.7 网络安全 512.8 一个实例 522.9 小结 53第3章 邮槽 543.1 邮槽实施细节 543.1.1 邮槽的名字 543.1.2 消息的长度 553.1.3 应用程序的编译 563.1.4 错误代码 573.2 基本客户机/服务器 573.2.1 邮槽服务器的详情 573.2.2 邮槽客户机的详情 593.3 其他邮槽API 613.4 平台和性能问题 623.4.1 8.3字符名字限制 623.4.2 不能取消“凝结”的I/O请求 623.4.3 超时引起的内存废弃 643.5 小结 65第4章 命名管道 664.1 命名管道的实施细节 664.1.1 命名管道命名规范 674.1.2 字节模式及消息模式 674.1.3 应用程序的编译 674.1.4 错误代码 684.2 客户机与服务器的基础 684.2.1 服务器的细节 684.2.2 高级服务器的细节 744.2.3 客户机的细节 814.3 其他API调用 834.4 平台和性能问题 864.5 小结 87第二部分 Winsock API第5章 网络原理和协议 895.1 协议的特征 895.1.1 面向消息 895.1.2 面向连接和无连接 915.1.3 可靠性和次序性 915.1.4 从容关闭 925.1.5 广播数据 925.1.6 多播数据 925.1.7 服务质量 925.1.8 部分消息 935.1.9 路由选择的考虑 935.1.10 其他特征 935.2 支持的协议 935.2.1 支持的Win32网络协议 935.2.2 Windows CE网络协议 945.3 Winsock 2协议信息 945.4 Windows套接字 975.5 具体平台的问题 995.6 选择适当的协议 1005.7 小结 100第6章 地址家族和名字解析 1026.1 IP 1026.1.1 TCP 1026.1.2 UDP 1026.1.3 定址 1026.1.4 创建套接字 1056.1.5 名字解析 1056.2 红外线套接字 1076.2.1 定址 1076.2.2 名字解析 1086.2.3 红外线设备列举 1086.2.4 查询IAS 1106.2.5 创建套接字 1116.2.6 套接字选项 1126.3 IPX/SPX 1126.3.1 编址 1126.3.2 创建套接字 1126.4 NetBIOS 1156.4.1 定址 1156.4.2 创建套接字 1166.5 AppleTalk 1176.5.1 定址 1176.5.2 AppleTalk名的注册 1186.5.3 AppleTalk名的解析 1196.5.4 创建套接字 1246.6 ATM 1246.6.1 定址 1256.6.2 创建套接字 1286.6.3 把套接字和SAP绑定在一起 1296.6.4 名字解析 1306.7 Winsock 2支持的其他函数 1306.8 小结 131第7章 Winsock基础 1327.1 Winsock的初始化 1327.2 错误检查和控制 1347.3 面向连接的协议 1347.3.1 服务器API函数 1347.3.2 客户机API函数 1387.3.3 数据传输 1407.3.4 流协议 1447.3.5 断连接 1467.3.6 综合分析 1477.4 无连接协议 1557.4.1 接收端 1557.4.2 发送端 1567.4.3 基于消息的协议 1577.4.4 释放套接字资源 1587.4.5 综合分析 1587.5 其他API函数 1657.6 Windows CE 1687.7 其他地址家族 1697.7.1 AppleTalk 1697.7.2 IrDA 1697.7.3 NetBIOS 1707.7.4 IPX/SPX 1707.7.5 ATM 1717.8 小结 171第8章 Winsock I/O方法 1728.1 套接字模式 1728.1.1 锁定模式 1738.1.2 非锁定模式 1758.2 套接字I/O模型 1768.2.1 select模型 1768.2.2 WSAAsyncSelect 1798.2.3 WSAEventSelect 1838.2.4 重叠模型 1888.2.5 完成端口模型 1988.3 I/O模型的问题 2068.4 小结 206第9章 套接字选项和I/O控制命令 2079.1 套接字选项 2079.1.1 SOL_SOCKET选项级别 2089.1.2 SOL_APPLETALK选项级别 2159.1.3 SOL_IRLMP选项级别 2189.1.4 IPPROTO_IP选项级 2229.1.5 IPPROTO_TCP选项级别 2279.1.6 NSPROTO_IPX选项级别 2279.2 IOCTLSOCKET和WSAIOCTL 2319.2.1 标准I/O控制命令 2329.2.2 其他I/O控制命令 2339.2.3 安全套接字层的I/O控制命令 2399.2.4 ATM I/O控制命令 2419.3 小结 242第10章 名字注册和解析 24310.1 背景知识 24310.2 名字空间模型 24310.3 服务的注册 24510.3.1 安装服务类 24510.3.2 服务的注册 24810.3.3 服务注册示例 25110.4 服务的查询 25410.4.1 怎样对服务进行查询 25510.4.2 查询DNS 25710.5 小结 260第11章 多播 26111.1 多播的含义 26111.2 IP多播 26411.2.1 Internet网关管理协议 26411.2.2 IP叶节点 26511.2.3 IP多播的实施 26611.3 ATM多播 26611.3.1 ATM叶节点 26711.3.2 ATM根节点 26711.4 多播与Winsock 26811.4.1 Winsock 1多播 26811.4.2 Winsock 2多播 27411.4.3 常用的Winsock选项 28811.4.4 拨号网络多播的一处限制 29011.5 小结 291第12章 常规服务质量 29212.1 背景知识 29212.1.1 资源预约协议 29212.1.2 网络组件 29312.1.3 应用组件 29412.1.4 策略组件 29612.2 QoS和Winsock 29612.2.1 QoS结构 29712.2.2 QoS调用函数 29912.3 QoS止 30312.4 QoS编程 31112.4.1 RSVP和套接字类型 31212.4.2 QoS通知 31412.4.3 QoS模板 31612.5 示例 31812.5.1 单播TCP 31812.5.2 单播UDP 33612.5.3 多播UDP 33712.6 ATM和QoS 33812.7 小结 339第13章 原始套接字 34013.1 原始套接字的创建 34013.2 Internet控制消息协议 34113.2.1 Ping示例 34213.2.2 Traceroute示例 35113.3 Internet组管理协议 35213.4 IP_HDRINCL的使用 35413.5 小结 362第14章 Winsock 2服务提供者接口 36314.1 SPI基础 36314.1.1 SPI命名规则 36414.1.2 Winsock 2 API和SPI函数之间的映 射 36414.2 传输服务提供者 36414.2.1 WSPStartup 36514.2.2 参数 36614.2.3 实例计数 36914.2.4 套接字句柄 36914.2.5 Winsock I/O模型支持 37114.2.6 扩展函数 38014.2.7 传输服务提供者的安装 38114.3 命名空间服务提供者 38614.3.1 名字空间的安装 38614.3.2 名字空间的实施 38714.3.3 名字空间提供者示范 39214.4 Winsock SPI函数的调试追踪 39614.5 小结 396第15章 微软Visual Basic Winsock控件 39715.1 属性 39715.2 方法 39815.3 事件 39915.4 UDP示例 40015.4.1 UDP消息的发送 40315.4.2 UDP消息的接收 40415.4.3 获取Winsock信息 40415.4.4 运行UDP示例 40515.4.5 UDP状态 40515.5 TCP示例 40615.5.1 TCP服务器 41215.5.2 TCP客户机 41315.5.3 获取Winsock信息 41415.5.4 运行TCP示例 41415.5.5 TCP状态 41515.6 存在的局限 41515.7 常见错误 41615.8 Windows CE的Winsock控件 41715.8.1 Windows CE Winsock示例 41715.8.2 已知的问题 42115.9 小结 422第三部分 远程访问服务第16章 RAS客户机 42316.1 编译和链接 42416.2 数据结构和平台兼容问题 42416.3 DUN 1.3升级和Windows 95 42516.4 RASDIAL 42516.4.1 同步模式 42716.4.2 异步模式 42816.4.3 状态通知 43216.4.4 关闭连接 43216.5 电话簿 43316.5.1 电话簿条目的增添 44016.5.2 电话簿条目的重命名 44216.5.3 电话簿条目的删除 44216.5.4 电话簿条目的列举 44316.5.5 用户凭据的管理 44316.5.6 多链接电话簿的子条目 44516.6 连接管理 44616.7 小结 450第四部分 附录录录附录A NetBIOS命令索引 451附录B IP助手函数 464附录C Winsock错误代码 481

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧