168 lines
4.2 KiB
C
168 lines
4.2 KiB
C
/*++
|
||
|
||
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
|
||
|