|
|
/*++
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 PUNICODE_STRING pusDeviceName, 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, IN DWORD dwTimeOutinMS );
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, IN UCHAR ucLana );
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 );
VOID NbBindHandler( IN TDI_PNP_OPCODE PnpOpcode, IN PUNICODE_STRING DeviceName, IN PWSTR MultiSzBindList ); NTSTATUS NbPowerHandler( IN PUNICODE_STRING pusDeviceName, IN PNET_PNP_EVENT pnpeEvent, IN PTDI_PNP_CONTEXT ptpcContext1, IN PTDI_PNP_CONTEXT ptpcContext2 );
VOID NbTdiBindHandler( IN PUNICODE_STRING pusDeviceName, IN PWSTR pwszMultiSZBindList ); VOID NbTdiUnbindHandler( IN PUNICODE_STRING pusDeviceName );
//
// 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 );
VOID NbDriverUnload( IN PDRIVER_OBJECT DriverObject );
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 );
NTSTATUS AllocateAndCopyUnicodeString( IN OUT PUNICODE_STRING pusDest, IN PUNICODE_STRING pusSource );
//
// 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 PUNICODE_STRING pucRegistryPath, IN PFCB NewFcb, IN BOOLEAN bCreateDevice );
NTSTATUS GetLanaMap( IN PUNICODE_STRING pusRegistryPath, IN OUT PKEY_VALUE_FULL_INFORMATION * ppkvfi ); NTSTATUS GetMaxLana( IN PUNICODE_STRING pusRegistryPath, IN OUT PULONG pulMaxLana );
VOID NbFreeRegistryInfo ( IN PFCB pfcb );
BOOLEAN NbCheckLana ( PUNICODE_STRING DeviceName );
//
// 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( PDEVICE_OBJECT DeviceObject, PVOID Context ) ;
#if defined(_WIN64)
//
// nb32.c
//
NTSTATUS NbThunkNcb( IN PNCB32 Ncb32, OUT PDNCB Dncb);
NTSTATUS NbCompleteIrp32( IN OUT PIRP Irp );
#endif
|