/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: acdapi.h Abstract: Exported routines from the Implicit Connection Driver (rasacd.sys) for use by transports to allow a user space process to dynamically create a network connection upon a network unreachable error. Author: Anthony Discolo (adiscolo) 17-Apr-1995 Environment: Kernel Mode Revision History: --*/ #ifndef _ACDAPI_ #define _ACDAPI_ // // A callback from the automatic connection // driver to the transport to continue the // connection process. // typedef VOID (*ACD_CONNECT_CALLBACK)( IN BOOLEAN, IN PVOID *); typedef VOID (*ACD_NEWCONNECTION)( IN PACD_ADDR pszAddr, IN PACD_ADAPTER pAdapter ); typedef BOOLEAN (*ACD_STARTCONNECTION)( IN ULONG ulDriverId, IN PACD_ADDR pszAddr, IN ULONG ulFlags, IN ACD_CONNECT_CALLBACK pProc, IN USHORT nArgs, IN PVOID *pArgs ); // // A callback to allow the caller // to rummage around in the parameters // to find the right request to cancel. // To cancel the connection, the // ACD_CANCEL_CALLBACK routine returns // TRUE. // typedef BOOLEAN (*ACD_CANCEL_CALLBACK)( IN PVOID pArg, IN ULONG ulFlags, IN ACD_CONNECT_CALLBACK pProc, IN USHORT nArgs, IN PVOID *pArgs ); typedef BOOLEAN (*ACD_CANCELCONNECTION)( IN ULONG ulDriverId, IN PACD_ADDR pszAddr, IN ACD_CANCEL_CALLBACK pProc, IN PVOID pArg ); // // The structure a transport client receives // when it binds (IOCTL_INTERNAL_ACD_BIND) with the driver. // typedef struct { LIST_ENTRY ListEntry; // // Provided by the transport. // KSPIN_LOCK SpinLock; ULONG ulDriverId; // // Filled in by rasacd.sys. // BOOLEAN fEnabled; ACD_NEWCONNECTION lpfnNewConnection; ACD_STARTCONNECTION lpfnStartConnection; ACD_CANCELCONNECTION lpfnCancelConnection; } ACD_DRIVER, *PACD_DRIVER; // // Internal IOCTL definitions // #define IOCTL_INTERNAL_ACD_BIND \ _ACD_CTL_CODE(0x1234, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_ACD_UNBIND \ _ACD_CTL_CODE(0x1235, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_ACD_QUERY_STATE \ _ACD_CTL_CODE(0x1236, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif // ifndef _ACDAPI_