00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifndef _ACDAPI_
00029
#define _ACDAPI_
00030
00031
00032
00033
00034
00035
00036 typedef VOID (*
ACD_CONNECT_CALLBACK)(
00037 IN BOOLEAN,
00038 IN PVOID *);
00039
00040
typedef VOID
00041 (*ACD_NEWCONNECTION)(
00042 IN PACD_ADDR pszAddr,
00043 IN PACD_ADAPTER pAdapter
00044 );
00045
00046
typedef BOOLEAN
00047 (*ACD_STARTCONNECTION)(
00048 IN ULONG ulDriverId,
00049 IN PACD_ADDR pszAddr,
00050 IN ULONG ulFlags,
00051 IN
ACD_CONNECT_CALLBACK pProc,
00052 IN
USHORT nArgs,
00053 IN PVOID *pArgs
00054 );
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 typedef BOOLEAN (*
ACD_CANCEL_CALLBACK)(
00065 IN PVOID pArg,
00066 IN ULONG ulFlags,
00067 IN
ACD_CONNECT_CALLBACK pProc,
00068 IN
USHORT nArgs,
00069 IN PVOID *pArgs
00070 );
00071
00072
typedef BOOLEAN
00073 (*ACD_CANCELCONNECTION)(
00074 IN ULONG ulDriverId,
00075 IN PACD_ADDR pszAddr,
00076 IN
ACD_CANCEL_CALLBACK pProc,
00077 IN PVOID pArg
00078 );
00079
00080
00081
00082
00083
00084 typedef struct {
00085 LIST_ENTRY ListEntry;
00086
00087
00088
00089 KSPIN_LOCK SpinLock;
00090 ULONG ulDriverId;
00091
00092
00093
00094 BOOLEAN fEnabled;
00095 ACD_NEWCONNECTION lpfnNewConnection;
00096 ACD_STARTCONNECTION lpfnStartConnection;
00097 ACD_CANCELCONNECTION lpfnCancelConnection;
00098 }
ACD_DRIVER, *
PACD_DRIVER;
00099
00100
00101
00102
00103 #define IOCTL_INTERNAL_ACD_BIND \
00104
_ACD_CTL_CODE(0x1234, METHOD_BUFFERED, FILE_ANY_ACCESS)
00105
00106 #define IOCTL_INTERNAL_ACD_UNBIND \
00107
_ACD_CTL_CODE(0x1235, METHOD_BUFFERED, FILE_ANY_ACCESS)
00108
00109 #define IOCTL_INTERNAL_ACD_QUERY_STATE \
00110
_ACD_CTL_CODE(0x1236, METHOD_BUFFERED, FILE_ANY_ACCESS)
00111
00112
#endif // ifndef _ACDAPI_