|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
irtdiclp.h
Abstract:
private definitions for the irda tdi client library. Author:
mbert 9-97
--*/
#define LISTEN_BACKLOG 1
#define ENDPSIG 0xEEEEEEEE
#define CONNSIG 0xCCCCCCCC
#define GOODENDP(ep) ASSERT(ep->Sig == ENDPSIG)
#define GOODCONN(c) ASSERT(c->Sig == CONNSIG)
typedef struct { LIST_ENTRY Linkage; HANDLE AddrHandle; REF_CNT RefCnt; ULONG Sig; PFILE_OBJECT pFileObject; LIST_ENTRY ConnList; PDEVICE_OBJECT pDeviceObject; ULONG Flags; #define EPF_CLIENT 0x00000001
#define EPF_SERVER 0x00000002
#define EPF_COMPLETE_CLOSE 0x00000004
PVOID ClEndpContext; CTEEvent DeleteEndpEvent; } IRENDPOINT, *PIRENDPOINT;
#define CONN_ST_CREATED 1
#define CONN_ST_OPEN 2
#define CONN_ST_CLOSED 3
typedef struct { LIST_ENTRY Linkage; HANDLE ConnHandle; REF_CNT RefCnt; ULONG Sig; PFILE_OBJECT pFileObject; PDEVICE_OBJECT pDeviceObject; PIRENDPOINT pEndp; ULONG State; //LIST_ENTRY RecvBufList;
LIST_ENTRY RecvBufFreeList; LIST_ENTRY RecvIndList; LIST_ENTRY RecvIndFreeList; PIRDA_RECVBUF pAssemBuf; PVOID ClConnContext; CTEEvent DeleteConnEvent; } IRCONN, *PIRCONN;
typedef struct { LIST_ENTRY Linkage; ULONG BytesIndicated; ULONG FinalSeg; PMDL pMdl; PIRCONN pConn; } RECEIVEIND, *PRECEIVEIND;
VOID IrdaCloseConnInternal( PVOID ConnectContext); NTSTATUS IrdaCloseEndpointInternal( PVOID pEndpContext, BOOLEAN InternalRequest);
NTSTATUS IrdaDisconnectEventHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN int DisconnectDataLength, IN PVOID DisconnectData, IN int DisconnectInformationLength, IN PVOID DisconnectInformation, IN ULONG DisconnectFlags ); NTSTATUS IrdaReceiveEventHandler ( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, IN ULONG BytesIndicated, IN ULONG BytesAvailable, OUT ULONG *BytesTaken, IN PVOID Tsdu, OUT PIRP *IoRequestPacket ); NTSTATUS IrdaConnectEventHandler ( IN PVOID TdiEventContext, IN int RemoteAddressLength, IN PVOID RemoteAddress, IN int UserDataLength, IN PVOID UserData, IN int OptionsLength, IN PVOID Options, OUT CONNECTION_CONTEXT *ConnectionContext, OUT PIRP *AcceptIrp ); NTSTATUS IrdaCompleteAcceptIrp ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ); NTSTATUS IrdaCompleteDisconnectIrp ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context );
NTSTATUS IrdaCompleteSendIrp ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context);
NTSTATUS IrdaCompleteReceiveIrp ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context);
NTSTATUS IrdaDisassociateAddress( PIRCONN pConn); NTSTATUS IrdaCreateAddress( IN PTDI_ADDRESS_IRDA pRequestedIrdaAddr, OUT PHANDLE pAddrHandle);
NTSTATUS IrdaCreateConnection( OUT PHANDLE pConnHandle, IN PVOID ClientContext);
NTSTATUS IrdaAssociateAddress( PIRCONN pConn, HANDLE AddressHandle);
VOID IrdaCreateConnCallback( struct CTEEvent *Event, PVOID Arg);
VOID IrdaDataReadyCallback( struct CTEEvent *Event, PVOID Arg);
VOID IrdaRestartRecvCallback( struct CTEEvent *Event, PVOID Arg); VOID AllocRecvData( PIRCONN pConn);
VOID DeleteConnCallback( struct CTEEvent *Event, PVOID Arg);
VOID IrdaDeleteConnection(PIRCONN pConn);
VOID DeleteEndpCallback( struct CTEEvent *Event, PVOID Arg);
VOID IrdaDeleteEndpoint(PIRENDPOINT pEndp); NTSTATUS IrdaSetEventHandler( IN PFILE_OBJECT FileObject, IN ULONG EventType, IN PVOID EventHandler, IN PVOID EventContext);
NTSTATUS IrdaIssueDeviceControl ( IN HANDLE FileHandle OPTIONAL, IN PFILE_OBJECT FileObject OPTIONAL, IN PVOID IrpParameters, IN ULONG IrpParametersLength, IN PVOID MdlBuffer, IN ULONG MdlBufferLength, IN UCHAR MinorFunction);
|