A RasDialFunc1 function is an application-defined or library-defined callback function that the RasDial function calls when a change of state occurs during a remote access connection process. A RasDialFunc1 function is comparable to a RasDialFunc function, but is enhanced by the addition of two parameters: a handle to the RAS connection, and an extended error code.
VOID WINAPI RasDialFunc1(
HRASCONN hrasconn, |
// handle to RAS connection |
UINT unMsg, |
// type of event that has occurred |
RASCONNSTATE rascs, |
// connection state about to be entered |
DWORD dwError, |
// error that may have occurred |
DWORD dwExtendedError |
// extended error information for some errors |
); |
RasDial calls RasDialFunc1 with dwError set to zero upon entry to each connection state. If an error occurs within a state, RasDial calls RasDialFunc1 again with a nonzero dwError value.
In some error cases, the dwExtendedError parameter contains extended
error information.
The contents of dwExtendedError are defined for values of dwError as follows:
dwError |
dwExtendedError |
ERROR_SERVER_NOT_RESPONDING |
Specifies the NetBIOS error that occurred. |
ERROR_NETBIOS_ERROR |
Specifies the NetBIOS error that occurred. |
ERROR_AUTH_INTERNAL |
Specifies an internal diagnostics code. |
ERROR_CANNOT_GET_LANA |
Specifies a routing error code, which is a RAS error. |
None.
A RasDial connection operation is suspended during a call to a RasDialFunc1 callback function. For that reason, your RasDialFunc1 implementation should generally return as quickly as possible. There are two exceptions to that rule. Asynchronous (slow) devices such as modems often have time-out periods measured in seconds rather than milliseconds; a less-than-prompt return from a RasDialFunc1 function is generally not a problem. The prompt return requirement also does not apply when dwError is nonzero, indicating that an error has occurred. It is safe, for example, to put up an error dialog box and wait for user input.
Your RasDialFunc1 implementation should not depend on the order or occurrence of particular RASCONNSTATE connection states, because this may vary between platforms.
Do not call the RasDial function from within a RasDialFunc1 callback function. You can call the RasGetConnectStatus, RasEnumEntries, RasEnumConnections, RasGetErrorString, and RasHangUp functions from within the callback function. For example, calling RasGetConnectStatus from within a callback function would be useful for determining the name and type of the connecting device.
Note that, for convenience, RasHangUp can be called from within a RasDialFunc1 callback function. However, much of the hang-up processing occurs after the RasDialFunc1 callback function has returned.
RasDialFunc1 is a placeholder for the application-defined or library-defined function name.
RasDial, RasDialFunc, RasDialFunc2, RASCONNSTATE, RasEnumConnections, RasEnumEntries, RasGetConnectStatus, RasGetErrorString, RasHangUp