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.
167 lines
4.4 KiB
167 lines
4.4 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
receive.h
|
|
|
|
Abstract:
|
|
|
|
This module describes the public routines in receive.c
|
|
|
|
|
|
Author:
|
|
|
|
Larry Osterman (larryo) 6-May-1991
|
|
|
|
Revision History:
|
|
|
|
6-May-1991 larryo
|
|
|
|
Created
|
|
|
|
--*/
|
|
|
|
#ifndef _RECEIVE_
|
|
#define _RECEIVE_
|
|
|
|
#define DATAGRAM_HANDLER(RoutineName) \
|
|
NTSTATUS \
|
|
RoutineName ( \
|
|
IN struct _TRANSPORT_NAME *TransportName, \
|
|
IN PVOID Buffer, \
|
|
IN ULONG BytesAvailable, \
|
|
IN OUT PULONG BytesTaken, \
|
|
IN PVOID SourceAddress, \
|
|
IN ULONG SourceAddressLength, \
|
|
IN PVOID SourceName, \
|
|
IN ULONG SourceNameLength, \
|
|
IN ULONG ReceiveFlags \
|
|
) \
|
|
|
|
typedef
|
|
(*PDATAGRAM_HANDLER)(
|
|
IN struct _TRANSPORT_NAME *TransportName,
|
|
IN PVOID Buffer,
|
|
IN ULONG BytesAvailable,
|
|
IN OUT PULONG BytesTaken,
|
|
IN PVOID SourceAddress,
|
|
IN ULONG SourceAddressLength,
|
|
IN PVOID SourceName,
|
|
IN ULONG SourceNameLength,
|
|
IN ULONG ReceiveFlags
|
|
);
|
|
|
|
LONG BowserPostedDatagramCount;
|
|
LONG BowserPostedCriticalDatagramCount;
|
|
|
|
typedef struct _POST_DATAGRAM_CONTEXT {
|
|
WORK_QUEUE_ITEM WorkItem;
|
|
PTRANSPORT_NAME TransportName;
|
|
PVOID Buffer;
|
|
ULONG BytesAvailable;
|
|
int ClientNameLength;
|
|
CHAR ClientName[NETBIOS_NAME_LEN];
|
|
int ClientAddressLength;
|
|
CHAR TdiClientAddress[1];
|
|
} POST_DATAGRAM_CONTEXT, *PPOST_DATAGRAM_CONTEXT;
|
|
|
|
NTSTATUS
|
|
BowserTdiReceiveDatagramHandler (
|
|
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 *IoRequestPacket // TdiReceive IRP if MORE_PROCESSING_REQUIRED.
|
|
);
|
|
|
|
VOID
|
|
BowserCancelAnnounceRequest(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
BowserCopyOemComputerName(
|
|
PCHAR OutputComputerName,
|
|
PCHAR NetbiosName,
|
|
ULONG NetbiosNameLength,
|
|
IN ULONG ReceiveFlags
|
|
);
|
|
|
|
VOID
|
|
BowserLogIllegalDatagram(
|
|
IN PTRANSPORT_NAME TransportName,
|
|
IN PVOID IncomingBuffer,
|
|
IN USHORT BufferSize,
|
|
IN PCHAR ClientAddress,
|
|
IN ULONG ReceiveFlags
|
|
);
|
|
|
|
NTSTATUS
|
|
BowserPostDatagramToWorkerThread(
|
|
IN PTRANSPORT_NAME TransportName,
|
|
IN PVOID Datagram,
|
|
IN ULONG Length,
|
|
OUT PULONG BytesTaken,
|
|
IN PVOID OriginatorsAddress,
|
|
IN ULONG OriginatorsAddressLength,
|
|
IN PVOID OriginatorsName,
|
|
IN ULONG OriginatorsNameLength,
|
|
IN PWORKER_THREAD_ROUTINE Handler,
|
|
IN POOL_TYPE PoolType,
|
|
IN WORK_QUEUE_TYPE QueueType,
|
|
IN ULONG ReceiveFlags,
|
|
IN BOOLEAN PostToRdrWorkerThread
|
|
);
|
|
|
|
MAILSLOTTYPE
|
|
BowserClassifyIncomingDatagram(
|
|
IN PVOID Buffer,
|
|
IN ULONG BufferLength,
|
|
OUT PVOID *DatagramData,
|
|
OUT PULONG DatagramDataSize
|
|
);
|
|
|
|
extern
|
|
PDATAGRAM_HANDLER
|
|
BowserDatagramHandlerTable[];
|
|
|
|
NTSTATUS
|
|
BowserHandleMailslotTransaction (
|
|
IN PTRANSPORT_NAME TransportName,
|
|
IN PCHAR ClientName,
|
|
IN ULONG ClientIpAddress,
|
|
IN ULONG SmbOffset,
|
|
IN DWORD ReceiveFlags,
|
|
IN ULONG BytesIndicated,
|
|
IN ULONG BytesAvailable,
|
|
OUT ULONG *BytesTaken,
|
|
IN PVOID Tsdu,
|
|
OUT PIRP *Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
BowserHandleShortBrowserPacket(
|
|
IN PTRANSPORT_NAME TransportName,
|
|
IN PVOID EventContext,
|
|
IN int SourceAddressLength,
|
|
IN PVOID SourceAddress,
|
|
IN int OptionsLength,
|
|
IN PVOID Options,
|
|
IN ULONG ReceiveDatagramFlags,
|
|
IN ULONG BytesAvailable,
|
|
IN ULONG *BytesTaken,
|
|
IN PIRP *Irp,
|
|
PTDI_IND_RECEIVE_DATAGRAM Handler
|
|
);
|
|
|
|
#endif
|
|
|