Platform SDK: RAS/Routing and RAS

RasDialFunc2

A RasDialFunc2 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 RasDialFunc2 function is similar to the RasDialFunc1 callback function, except that it provides additional information for multilink connections.

DWORD WINAPI RasDialFunc2(
  DWORD dwCallbackId,    // user-defined value specified in
                         //  RasDial call
  DWORD dwSubEntry,      // subentry index in multilink connection
  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
);

Parameters

dwCallbackId
Provides an application-defined value that was specified in the dwCallbackId member of the RASDIALPARAMS structure passed to RasDial.
dwSubEntry
Specifies a subentry index for the phone-book entry associated with this connection. This value indicates the subentry that generated this call to your RasDialFunc2 callback function.
hrasconn
Handle to the RAS connection, as returned by RasDial.
unMsg
Specifies the type of event that has occurred. Currently, the only event defined is WM_RASDIALEVENT.
rascs
Specifies a RASCONNSTATE enumerator value that indicates the state the RasDial remote access connection process is about to enter.
dwError
Specifies the error that has occurred. If no error has occurred, dwError is zero.

The RasDial function calls RasDialFunc2 with dwError set to zero upon entry to each connection state. If an error occurs within a state, RasDial calls RasDialFunc2 again with a nonzero dwError value.

In some error cases, the dwExtendedError parameter contains extended error information.

dwExtendedError
Specifies extended error information for certain nonzero values of dwError. For all other values of dwError, dwExtendedError is zero.

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.

Return Values

If the RasDialFunc2 function returns a nonzero value, RasDial continues to send callback notifications.

If the RasDialFunc2 function returns zero, RasDial stops sending callback notifications for all subentries.

Remarks

A RasDial connection operation is suspended during a call to a RasDialFunc2 callback function. For that reason, your RasDialFunc2 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 slow return from a RasDialFunc2 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 RasDialFunc2 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 RasDialFunc2 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  For convenience, RasHangUp can be called from within a RasDialFunc2 callback function. However, much of the hang-up processing occurs after the RasDialFunc2 callback function has returned.

RasDialFunc2 is a placeholder for the application-defined or library-defined function name.

Requirements

  Windows NT/2000: Requires Windows NT 4.0 or later.
  Windows 95/98: Unsupported.
  Header: Declared in Ras.h.

See Also

Remote Access Service (RAS) Overview, Remote Access Service Functions, RasDial, RasDialFunc, RasDialFunc1, RASCONNSTATE, RasEnumConnections, RasEnumEntries, RasGetConnectStatus, RasGetErrorString, RasHangUp