/*++ 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 ) ;