windows-nt/Source/XPSP1/NT/base/fs/rdr2/rxce/daytona/rxtdip.h

172 lines
5.1 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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_