113 lines
2.3 KiB
C
113 lines
2.3 KiB
C
/*++
|
|
|
|
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_
|