You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
4.6 KiB
220 lines
4.6 KiB
/*++
|
|
|
|
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);
|
|
|
|
|
|
|
|
|