windows-nt/Source/XPSP1/NT/base/fs/rdr2/bowser/mailslot.h

127 lines
2.4 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
mailslot.c
Abstract:
This module implements the routines needed to process incoming mailslot
requests.
Author:
Larry Osterman (larryo) 18-Oct-1991
Revision History:
18-Oct-1991 larryo
Created
--*/
#ifndef _MAILSLOT_
#define _MAILSLOT_
//
// The MAILSLOTBUFFER structure is a structure that is prepended to a mailslot
// message to facilitate the transfer of the data between the FSD and the FSP.
//
typedef struct _MAILSLOT_BUFFER {
CSHORT Signature;
CSHORT Size;
union {
LIST_ENTRY NextBuffer; // Pointer to next buffer.
WORK_QUEUE_ITEM WorkHeader; // Executive Worker item header.
} Overlay;
ULONG BufferSize;
LARGE_INTEGER TimeReceived; // Time message was received
ULONG ClientIpAddress; // IP Address of client sending datagram
PTRANSPORT_NAME TransportName; // Transport address receiving DG
CHAR ClientAddress[max(NETBIOS_NAME_LEN, SMB_IPX_NAME_LENGTH)]; // Name of client initiating receive.
ULONG ReceiveLength; // # of bytes received.
CHAR Buffer[1]; // Buffer
} MAILSLOT_BUFFER, *PMAILSLOT_BUFFER;
extern ULONG BowserNetlogonMaxMessageCount;
//
// Two services get their PNP messages through the bowser.
//
#define BROWSER_PNP 0
#define NETLOGON_PNP 1
#define BOWSER_PNP_COUNT 2
NTSTATUS
BowserEnablePnp (
IN PLMDR_REQUEST_PACKET InputBuffer,
IN ULONG ServiceIndex
);
NTSTATUS
BowserReadPnp (
IN PIRP Irp,
IN ULONG OutputBufferLength,
IN ULONG ServiceIndex
);
VOID
BowserSendPnp(
IN NETLOGON_PNP_OPCODE NlPnpOpcode,
IN PUNICODE_STRING HostedDomainName OPTIONAL,
IN PUNICODE_STRING TransportName,
IN ULONG TransportFlags
);
VOID
BowserNetlogonDeleteTransportFromMessageQueue (
PTRANSPORT Transport
);
VOID
BowserProcessMailslotWrite (
IN PVOID WorkHeader
);
PMAILSLOT_BUFFER
BowserAllocateMailslotBuffer(
IN PTRANSPORT_NAME TransportName,
IN ULONG BufferSize
);
VOID
BowserFreeMailslotBuffer(
IN PMAILSLOT_BUFFER Buffer
);
VOID
BowserFreeMailslotBufferHighIrql(
IN PMAILSLOT_BUFFER Buffer
);
VOID
BowserpInitializeMailslot (
VOID
);
VOID
BowserpUninitializeMailslot (
VOID
);
#endif // _MAILSLOT_