NT4/private/ntos/netbios/nbprocs.h
2020-09-30 17:12:29 +02:00

490 lines
7.0 KiB
C

/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
nbprocs.h
Abstract:
Private include file for the NB (NetBIOS) component of the NTOS project.
Author:
Colin Watson (ColinW) 13-Mar-1991
Revision History:
--*/
//
// address.c
//
NTSTATUS
NbSetEventHandler (
IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject,
IN ULONG EventType,
IN PVOID EventHandler,
IN PVOID Context
);
NTSTATUS
NbAddName(
IN PDNCB pdncb,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbDeleteName(
IN PDNCB pdncb,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbOpenAddress (
OUT PHANDLE FileHandle,
OUT PVOID *Object,
IN PFCB pfcb,
IN UCHAR LanNumber,
IN PDNCB pdncb OPTIONAL
);
PAB
NewAb(
IN PIO_STACK_LOCATION IrpSp,
IN PDNCB pdncb
);
VOID
CleanupAb(
IN PPAB ppab,
IN BOOLEAN CloseAddress
);
VOID
NbAddressClose(
IN HANDLE AddressHandle,
IN PVOID Object
);
PPAB
FindAb(
IN PFCB pfcb,
IN PDNCB pdncb,
IN BOOLEAN IncrementUsers
);
PPAB
FindAbUsingNum(
IN PFCB pfcb,
IN PDNCB pdncb,
IN UCHAR NameNumber
);
BOOL
FindActiveSession(
IN PFCB pfcb,
IN PDNCB pdncb,
IN PPAB ppab
);
VOID
CloseListens(
IN PFCB pfcb,
IN PPAB ppab
);
NTSTATUS
SubmitTdiRequest (
IN PFILE_OBJECT FileObject,
IN PIRP Irp
);
//
// connect.c
//
NTSTATUS
NbCall(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbCallCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS
NbListen(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbListenCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS
NbAcceptCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
PPCB
NbCallCommon(
IN PDNCB pdncb,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbHangup(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbOpenConnection (
OUT PHANDLE FileHandle,
OUT PVOID *Object,
IN PFCB pfcb,
IN PVOID ConnectionContext,
IN PDNCB pdncb
);
PPCB
NewCb(
IN PIO_STACK_LOCATION IrpSp,
IN OUT PDNCB pdncb
);
NTSTATUS
CleanupCb(
IN PPCB ppcb,
IN PDNCB pdncb OPTIONAL
);
VOID
AbandonConnection(
IN PPCB ppcb
);
VOID
CloseConnection(
IN PPCB ppcb
);
PPCB
FindCb(
IN PFCB pfcb,
IN PDNCB pdncb,
IN BOOLEAN IgnoreState
);
NTSTATUS
NbTdiDisconnectHandler (
PVOID EventContext,
PVOID ConnectionContext,
ULONG DisconnectDataLength,
PVOID DisconnectData,
ULONG DisconnectInformationLength,
PVOID DisconnectInformation,
ULONG DisconnectIndicators
);
PPCB
FindCallCb(
IN PFCB pfcb,
IN PNCB pncb
);
PPCB
FindReceiveIndicated(
IN PFCB pfcb,
IN PDNCB pdncb,
IN PPAB ppab
);
#if DBG
//
// debug.c
//
VOID
NbDisplayNcb(
IN PDNCB pdncb
);
VOID
NbFormattedDump(
PCHAR far_p,
LONG len
);
#endif
//
// devobj.c
//
NTSTATUS
NbCreateDeviceContext(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING DeviceName,
IN OUT PDEVICE_CONTEXT *DeviceContext,
IN PUNICODE_STRING RegistryPath
);
//
// error.c
//
unsigned char
NbMakeNbError(
IN NTSTATUS Error
);
NTSTATUS
NbLanStatusAlert(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
VOID
CancelLanAlert(
IN PFCB pfcb,
IN PDNCB pdncb
);
NTSTATUS
NbTdiErrorHandler (
IN PVOID Context,
IN NTSTATUS Status
);
//
// file.c
//
NTSTATUS
NewFcb(
IN PDEVICE_CONTEXT DeviceContext,
IN PIO_STACK_LOCATION IrpSp
);
VOID
CleanupFcb(
IN PIO_STACK_LOCATION IrpSp,
IN PFCB pfcb
);
VOID
OpenLana(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
VOID
CleanupLana(
IN PFCB pfcb,
IN ULONG lana_index,
IN BOOLEAN delete
);
//
// nb.c
//
NTSTATUS
NbCompletionEvent(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS
NbCompletionPDNCB(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS
NbClose(
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbDeviceControl(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp
);
NTSTATUS
NbDispatch(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
NbOpen(
IN PDEVICE_CONTEXT DeviceContext,
IN PIO_STACK_LOCATION IrpSp
);
VOID
QueueRequest(
IN PLIST_ENTRY List,
IN PDNCB pdncb,
IN PIRP Irp,
IN PFCB pfcb,
IN KIRQL OldIrql,
IN BOOLEAN Head);
PDNCB
DequeueRequest(
IN PLIST_ENTRY List
);
//
// receive.c
//
NTSTATUS
NbReceive(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp,
IN ULONG Buffer2Length,
IN BOOLEAN Locked,
IN KIRQL LockedIrql
);
NTSTATUS
NbReceiveAny(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp,
IN ULONG Buffer2Length
);
NTSTATUS
NbTdiReceiveHandler (
IN PVOID ReceiveEventContext,
IN PVOID ConnectionContext,
IN USHORT ReceiveFlags,
IN ULONG BytesIndicated,
IN ULONG BytesAvailable,
OUT PULONG BytesTaken,
IN PVOID Tsdu,
OUT PIRP *IoRequestPacket
);
PIRP
BuildReceiveIrp (
IN PCB pcb
);
NTSTATUS
NbReceiveDatagram(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp,
IN ULONG Buffer2Length
);
NTSTATUS
NbTdiDatagramHandler(
IN PVOID TdiEventContext, // the event context - pab
IN int SourceAddressLength, // length of the originator of the datagram
IN PVOID SourceAddress, // string describing the originator of the datagram
IN int 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.
);
//
// registry.c
//
CCHAR
GetIrpStackSize(
IN PUNICODE_STRING RegistryPath,
IN CCHAR DefaultValue
);
NTSTATUS
ReadRegistry(
IN PDEVICE_CONTEXT DeviceContext,
IN PFCB NewFcb
);
VOID
NbFreeRegistryInfo (
IN PFCB pfcb
);
//
// send.c
//
NTSTATUS
NbSend(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp,
IN ULONG Buffer2Length
);
NTSTATUS
NbSendDatagram(
IN PDNCB pdncb,
IN PIRP Irp,
IN PIO_STACK_LOCATION IrpSp,
IN ULONG Buffer2Length
);
//
// timer.c
//
VOID
NbStartTimer(
IN PFCB pfcb
);
VOID
NbTimerDPC(
IN PKDPC Dpc,
IN PVOID Context,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2
);
VOID
NbTimer(
PVOID Context
) ;