/*++ Copyright (c) 1989 Microsoft Corporation Module Name: ntrxce.h Abstract: This module contains the NT implementation related includes for the RxCe. Revision History: Balan Sethu Raman [SethuR] 15-Feb-1995 Notes: --*/ #ifndef _RXTDIP_H_ #define _RXTDIP_H_ typedef struct _RXTDI_REQUEST_COMPLETION_CONTEXT_ { PVOID pEventContext; PRXCE_VC pVc; // VC Handle for connections PMDL pPartialMdl; // the partial Mdl that was built for Xmit PVOID pCompletionContext; // the callback context union { PRXCE_IND_SEND_COMPLETE SendCompletionHandler; // for datagrams PRXCE_IND_CONNECTION_SEND_COMPLETE ConnectionSendCompletionHandler; // for VC sends }; } RXTDI_REQUEST_COMPLETION_CONTEXT, *PRXTDI_REQUEST_COMPLETION_CONTEXT; PIRP RxCeAllocateIrpWithMDL( IN CCHAR StackSize, IN BOOLEAN ChargeQuota, IN PMDL Buffer); #define RxCeAllocateIrp(StackSize,ChargeQuota) \ RxCeAllocateIrpWithMDL(StackSize,ChargeQuota,NULL) extern VOID RxCeFreeIrp(PIRP pIrp); extern NTSTATUS RxTdiRequestCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context); extern NTSTATUS RxTdiAsynchronousRequestCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context); extern NTSTATUS RxTdiSendPossibleEventHandler ( IN PVOID EventContext, IN PVOID ConnectionContext, IN ULONG BytesAvailable); extern NTSTATUS BuildEaBuffer ( IN ULONG EaNameLength, IN PVOID pEaName, IN ULONG EaValueLength, IN PVOID pEaValue, OUT PFILE_FULL_EA_INFORMATION *pEaBuffer, OUT PULONG pEaBufferLength ); extern NTSTATUS RxCeSubmitTdiRequest ( IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp ); extern NTSTATUS RxCeSubmitAsynchronousTdiRequest ( IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp, IN PRXTDI_REQUEST_COMPLETION_CONTEXT pRequestContext ); // // TDI event handler extern definitions // extern NTSTATUS RxTdiConnectEventHandler( IN PVOID TdiEventContext, IN LONG RemoteAddressLength, IN PVOID RemoteAddress, IN LONG UserDataLength, IN PVOID UserData, IN LONG OptionsLength, IN PVOID Options, OUT CONNECTION_CONTEXT *ConnectionContext, OUT PIRP *AcceptIrp ); extern NTSTATUS RxTdiDisconnectEventHandler( IN PVOID EventContext, IN CONNECTION_CONTEXT ConnectionContext, IN LONG DisconnectDataLength, IN PVOID DisconnectData, IN LONG DisconnectInformationLength, IN PVOID DisconnectInformation, IN ULONG DisconnectFlags ); extern NTSTATUS RxTdiErrorEventHandler( IN PVOID TdiEventContext, IN NTSTATUS Status // status code indicating error type. ); extern NTSTATUS RxTdiReceiveEventHandler( IN PVOID EventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, IN ULONG BytesIndicated, IN ULONG BytesAvailable, OUT ULONG *BytesTaken, IN PVOID Tsdu, // pointer describing this TSDU, typically a lump of bytes OUT PIRP *IoRequestPacket // TdiReceive IRP if MORE_PROCESSING_REQUIRED. ); extern NTSTATUS RxTdiReceiveDatagramEventHandler( IN PVOID TdiEventContext, // the event context IN LONG SourceAddressLength, // length of the originator of the datagram IN PVOID SourceAddress, // string describing the originator of the datagram IN LONG OptionsLength, // options for the receive IN PVOID Options, // IN ULONG ReceiveDatagramFlags, // IN ULONG BytesIndicated, // number of bytes this indication IN ULONG BytesAvailable, // number of bytes in complete Tsdu OUT ULONG *BytesTaken, // number of bytes used IN PVOID Tsdu, // pointer describing this TSDU, typically a lump of bytes OUT PIRP *pIrp // TdiReceive IRP if MORE_PROCESSING_REQUIRED. ); extern NTSTATUS RxTdiReceiveExpeditedEventHandler( IN PVOID EventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, // IN ULONG BytesIndicated, // number of bytes in this indication IN ULONG BytesAvailable, // number of bytes in complete Tsdu OUT ULONG *BytesTaken, // number of bytes used by indication routine IN PVOID Tsdu, // pointer describing this TSDU, typically a lump of bytes OUT PIRP *IoRequestPacket // TdiReceive IRP if MORE_PROCESSING_REQUIRED. ); // Initialization routines extern NTSTATUS InitializeMiniRedirectorNotifier(); #endif // _RXTDIP_H_