172 lines
5.1 KiB
C
172 lines
5.1 KiB
C
/*++
|
|
|
|
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_
|
|
|