From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/ntos/nbt/inc/ntprocs.h | 845 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 845 insertions(+) create mode 100644 private/ntos/nbt/inc/ntprocs.h (limited to 'private/ntos/nbt/inc/ntprocs.h') diff --git a/private/ntos/nbt/inc/ntprocs.h b/private/ntos/nbt/inc/ntprocs.h new file mode 100644 index 000000000..8d5ef8bae --- /dev/null +++ b/private/ntos/nbt/inc/ntprocs.h @@ -0,0 +1,845 @@ +/*++ + +Copyright (c) 1989-1993 Microsoft Corporation + +Module Name: + + NTProcs.c + +Abstract: + + + This file contains the function prototypes that are specific to the NT + portion of the NBT driver. + +Author: + + Johnl 29-Mar-1993 Created + +Revision History: + +--*/ + +//--------------------------------------------------------------------- +// +// FROM DRIVER.C +// +NTSTATUS +NbtDispatchCleanup( + IN PDEVICE_OBJECT Device, + IN PIRP irp + ); + +NTSTATUS +NbtDispatchClose( + IN PDEVICE_OBJECT device, + IN PIRP irp + ); + +NTSTATUS +NbtDispatchCreate( + IN PDEVICE_OBJECT Device, + IN PIRP pIrp + ); + +NTSTATUS +NbtDispatchDevCtrl( + IN PDEVICE_OBJECT device, + IN PIRP irp + ); + +NTSTATUS +NbtDispatchInternalCtrl( + IN PDEVICE_OBJECT device, + IN PIRP irp + ); + +PFILE_FULL_EA_INFORMATION +FindInEA( + IN PFILE_FULL_EA_INFORMATION start, + IN PCHAR wanted + ); + + +USHORT +GetDriverName( + IN PFILE_OBJECT pfileobj, + OUT PUNICODE_STRING name + ); + +int +shortreply( + IN PIRP pIrp, + IN int status, + IN int nbytes + ); + +//--------------------------------------------------------------------- +// +// FROM NTISOL.C +// +NTSTATUS +NTOpenControl( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTOpenAddr( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTOpenConnection( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +VOID +NTSetFileObjectContexts( + IN PIRP pIrp, + IN PVOID FsContext, + IN PVOID FsContext2); + +VOID +NTCompleteIOListen( + IN tCLIENTELE *pClientEle, + IN NTSTATUS Status); + +VOID +NTIoComplete( + IN PIRP pIrp, + IN NTSTATUS Status, + IN ULONG SentLength); + +VOID +NTCompleteRegistration( + IN tCLIENTELE *pClientEle, + IN NTSTATUS Status); + +NTSTATUS +NTAssocAddress( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTCloseAddress( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +VOID +NTClearFileObjectContext( + IN PIRP pIrp + ); + +NTSTATUS +NTCloseConnection( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTSetSharedAccess( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp, + IN tADDRESSELE *pAddress); + +NTSTATUS +NTCheckSharedAccess( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp, + IN tADDRESSELE *pAddress); + +NTSTATUS +NTCleanUpAddress( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTCleanUpConnection( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +VOID +DiscWaitCancel( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +VOID +NbtCancelListen( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP Irp + ); + +VOID +NTCancelRcvDgram( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +NTSTATUS +NTAccept( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTAssocAddress( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTDisAssociateAddress( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTConnect( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTDisconnect( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTListen( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + + +NTSTATUS +NTQueryInformation( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTReceive( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTReceiveDatagram( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTSend( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTSendDatagram( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTSetEventHandler( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTSetInformation( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTCheckSetCancelRoutine( + IN PIRP pIrp, + IN PVOID CancelRoutine, + IN tDEVICECONTEXT *pDeviceContext + ); + +NTSTATUS +NTSetCancelRoutine( + IN PIRP pIrp, + IN PVOID CancelRoutine, + IN tDEVICECONTEXT *pDeviceContext + ); + +VOID +NTCancelSession( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +VOID +DnsIrpCancel( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +VOID +CheckAddrIrpCancel( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +VOID +WaitForDnsIrpCancel( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +VOID +NTSendSession( + IN tDGRAM_SEND_TRACKING *pTracker, + IN tLOWERCONNECTION *pLowerConn, + IN PVOID pCompletion); + +VOID +NTSendDgramNoWindup( + IN tDGRAM_SEND_TRACKING *pTracker, + IN ULONG IpAddress, + IN PVOID pCompletion); + +NTSTATUS +NTQueueToWorkerThread( + IN tDGRAM_SEND_TRACKING *pTracker, + IN PVOID pClientContext, + IN PVOID ClientCompletion, + IN PVOID CallBackRoutine, + IN PVOID pDeviceContext + ); + +VOID +SecurityDelete( + IN PVOID pContext + ); + +NTSTATUS +DispatchIoctls( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp, + IN PIO_STACK_LOCATION pIrpSp); + +NTSTATUS +NTCancelCancelRoutine( + IN PIRP pIrp + ); + +VOID +NTClearContextCancel( + IN NBT_WORK_ITEM_CONTEXT *pContext + ); + +VOID +FindNameCancel( + IN PDEVICE_OBJECT DeviceContext, + IN PIRP pIrp + ); + +//--------------------------------------------------------------------- +// +// FROM NTUTIL.C +// + +NTSTATUS +NbtCreateDeviceObject( + PDRIVER_OBJECT DriverObject, + tNBTCONFIG *pConfig, + PUNICODE_STRING pBindName, + PUNICODE_STRING pExportName, + tADDRARRAY *pAddrs, + PUNICODE_STRING RegistryPath, +#ifndef _IO_DELETE_DEVICE_SUPPORTED + BOOLEAN fReuse, +#endif + tDEVICECONTEXT **ppDeviceContext + ); + +NTSTATUS +NbtDestroyDeviceObject( + IN PVOID pBuffer + ); + +NTSTATUS +NbtProcessDhcpRequest( + tDEVICECONTEXT *pDeviceContext); + +NTSTATUS +ConvertToUlong( + IN PUNICODE_STRING pucAddress, + OUT ULONG *pulValue); + + +NTSTATUS +NbtCreateAddressObjects( + IN ULONG IpAddress, + IN ULONG SubnetMask, + OUT tDEVICECONTEXT *pDeviceContext); + +VOID +NbtGetMdl( + PMDL *ppMdl, + enum eBUFFER_TYPES eBuffType); + +NTSTATUS +NbtInitMdlQ( + PSINGLE_LIST_ENTRY pListHead, + enum eBUFFER_TYPES eBuffType); + +NTSTATUS +NTZwCloseFile( + IN HANDLE Handle + ); + + +NTSTATUS +NTReReadRegistry( + IN tDEVICECONTEXT *pDeviceContext + ); + +NTSTATUS +NbtInitIrpQ( + PLIST_ENTRY pListHead, + int iNumBuffers); + +NTSTATUS +NbtLogEvent( + IN ULONG EventCode, + IN NTSTATUS Status + ); + +NTSTATUS +SaveClientSecurity( + IN tDGRAM_SEND_TRACKING *pTracker + ); + +VOID +NtDeleteClientSecurity( + IN tDGRAM_SEND_TRACKING *pTracker + ); + +VOID +LogLockOperation( + char operation, + PKSPIN_LOCK PSpinLock, + KIRQL OldIrql, + KIRQL NewIrql, + char *File, + int Line + ); +StrmpInitializeLockLog( + VOID + ); +VOID +PadEntry( + char *EntryPtr + ); + +NTSTATUS +CloseAddressesWithTransport( + IN tDEVICECONTEXT *pDeviceContext + ); + +PVOID +CTEAllocMemDebug( + IN ULONG Size, + IN PVOID pBuffer, + IN UCHAR *File, + IN ULONG Line + ); + +VOID +AcquireSpinLockDebug( + IN PKSPIN_LOCK pSpinLock, + IN PKIRQL pOldIrq, + IN UCHAR LockNumber + ); +VOID +FreeSpinLockDebug( + IN PKSPIN_LOCK pSpinLock, + IN KIRQL OldIrq, + IN UCHAR LockNumber + ); + +VOID +AcquireSpinLockAtDpcDebug( + IN PKSPIN_LOCK pSpinLock, + IN UCHAR LockNumber + ); + +VOID +FreeSpinLockAtDpcDebug( + IN PKSPIN_LOCK pSpinLock, + IN UCHAR LockNumber + ); + +VOID +GetDgramMdl( + OUT PMDL *ppMdl); + + +//--------------------------------------------------------------------- +// +// FROM REGISTRY.C +// +NTSTATUS +NbtReadRegistry( + IN PUNICODE_STRING RegistryPath, + IN PDRIVER_OBJECT DriverObject, + OUT tNBTCONFIG *pConfig, + OUT tDEVICES **ppBindDevices, + OUT tDEVICES **ppExportDevices, + OUT tADDRARRAY **ppAddrArray + ); + +NTSTATUS +ReadNameServerAddresses ( + IN HANDLE NbtConfigHandle, + IN tDEVICES *BindDevices, + IN ULONG NumberDevices, + OUT tADDRARRAY **ppAddrArray + ); + +NTSTATUS +GetIPFromRegistry( + IN PUNICODE_STRING pucRegistryPath, + IN PUNICODE_STRING pucBindDevice, + OUT PULONG pulIpAddress, + OUT PULONG pulBroadcastAddress, + IN BOOL fWantDhcpAddresses + ); + +NTSTATUS +ReadElement( + IN HANDLE HandleToKey, + IN PWSTR pwsValueName, + OUT PUNICODE_STRING pucString + ); + +NTSTATUS +NTReadIniString ( + IN HANDLE ParametersHandle, + IN PWSTR Key, + OUT PUCHAR *ppString + ); + +ULONG +NbtReadSingleParameter( + IN HANDLE ParametersHandle, + IN PWCHAR ValueName, + IN ULONG DefaultValue, + IN ULONG MinimumValue + ); + +NTSTATUS +NTGetLmHostPath( + OUT PUCHAR *ppPath + ); + +//--------------------------------------------------------------------- +// +// FROM tdihndlr.c +// +NTSTATUS +Normal( + IN PVOID ReceiveEventContext, + IN tLOWERCONNECTION *pLowerConn, + IN USHORT ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT PULONG BytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PVOID *ppIrp + ); +NTSTATUS +FillIrp( + IN PVOID ReceiveEventContext, + IN tLOWERCONNECTION *pLowerConn, + IN USHORT ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT PULONG BytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PVOID *ppIrp + ); +NTSTATUS +IndicateBuffer( + IN PVOID ReceiveEventContext, + IN tLOWERCONNECTION *pLowerConn, + IN USHORT ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT PULONG BytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PVOID *ppIrp + ); +NTSTATUS +PartialRcv( + IN PVOID ReceiveEventContext, + IN tLOWERCONNECTION *pLowerConn, + IN USHORT ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT PULONG BytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PVOID *ppIrp + ); +NTSTATUS +TdiReceiveHandler ( + IN PVOID ReceiveEventContext, + IN PVOID ConnectionContext, + IN USHORT ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT PULONG BytesTaken, + IN PVOID UNALIGNED Tsdu, + OUT PIRP *IoRequestPacket + ); + +NTSTATUS +PassRcvToTransport( + IN tLOWERCONNECTION *pLowerConn, + IN tCONNECTELE *pConnectEle, + IN PVOID pIoRequestPacket, + IN PULONG pRcvLength + ); + +NTSTATUS +CompletionRcv( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context + ); + +NTSTATUS +NtBuildIrpForReceive ( + IN tLOWERCONNECTION *pLowerConn, + IN ULONG Length, + OUT PVOID *ppIrp + ); + +NTSTATUS +SetEventHandler ( + IN PDEVICE_OBJECT DeviceObject, + IN PFILE_OBJECT FileObject, + IN ULONG EventType, + IN PVOID EventHandler, + IN PVOID Context + ); + +NTSTATUS +SubmitTdiRequest ( + IN PFILE_OBJECT FileObject, + IN PIRP Irp + ); + +NTSTATUS +TdiConnectHandler ( + IN PVOID pConnectEventContext, + IN int RemoteAddressLength, + IN PVOID pRemoteAddress, + IN int UserDataLength, + IN PVOID UNALIGNED pUserData, + IN int OptionsLength, + IN PVOID pOptions, + OUT CONNECTION_CONTEXT *pConnectionContext, + OUT PIRP *ppAcceptIrp + ); + +NTSTATUS +TdiDisconnectHandler ( + PVOID EventContext, + PVOID ConnectionContext, + ULONG DisconnectDataLength, + PVOID UNALIGNED DisconnectData, + ULONG DisconnectInformationLength, + PVOID DisconnectInformation, + ULONG DisconnectIndicators + ); +NTSTATUS +TdiRcvDatagramHandler( + IN PVOID pDgramEventContext, + IN int SourceAddressLength, + IN PVOID pSourceAddress, + IN int OptionsLength, + IN PVOID pOptions, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *pBytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PIRP *pIoRequestPacket + ); +NTSTATUS +TdiRcvNameSrvHandler( + IN PVOID pDgramEventContext, + IN int SourceAddressLength, + IN PVOID pSourceAddress, + IN int OptionsLength, + IN PVOID pOptions, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *pBytesTaken, + IN PVOID UNALIGNED pTsdu, + OUT PIRP *pIoRequestPacket + ); +NTSTATUS +TdiErrorHandler ( + IN PVOID Context, + IN NTSTATUS Status + ); + +NTSTATUS +CompletionRcvDgram( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context + ); + +NTSTATUS +NTProcessAcceptIrp( + IN PIRP pIrp, + OUT tCONNECTELE **ppConnEle + ); + +NTSTATUS +AllocateMdl ( + IN tCONNECTELE *pConnEle + ); + +VOID +MakePartialMdl ( + IN tCONNECTELE *pConnEle, + IN PIRP pIrp, + IN ULONG ToCopy + ); + +NTSTATUS +OutOfRsrcKill( + OUT tLOWERCONNECTION *pLowerConn); + +VOID +CopyToStartofIndicate ( + IN tLOWERCONNECTION *pLowerConn, + IN ULONG DataTaken + ); + +//--------------------------------------------------------------------- +// +// FROM tdicnct.c +// +NTSTATUS +CreateDeviceString( + IN PWSTR AppendingString, + IN OUT PUNICODE_STRING pucDevice + ); + + +//--------------------------------------------------------------------- +// +// FROM winsif.c +// +NTSTATUS +NTOpenWinsAddr( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +NTCloseWinsAddr( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp); + +NTSTATUS +RcvIrpFromWins ( + IN tDEVICECONTEXT *pDeviceContext, + IN PCTE_IRP pIrp + ); + +NTSTATUS +PassNamePduToWins ( + IN tDEVICECONTEXT *pDeviceContext, + IN PVOID pSrcAddress, + IN tNAMEHDR UNALIGNED *pNameSrv, + IN ULONG uNumBytes + ); + +NTSTATUS +WinsSendDatagram( + IN tDEVICECONTEXT *pDeviceContext, + IN PIRP pIrp, + IN BOOLEAN MustSend); + +NTSTATUS +WinsRegisterName( + IN tDEVICECONTEXT *pDeviceContext, + IN tNAMEADDR *pNameAddr, + IN PUCHAR pScope, + IN enum eNSTYPE eNsType + ); + + +//--------------------------------------------------------------------- +// +// FROM ntpnp.c +// + +#ifdef _PNP_POWER + +VOID +AddressArrival(IN PTA_ADDRESS Addr); + +VOID +AddressDeletion(IN PTA_ADDRESS Addr); + +extern HANDLE AddressChangeHandle; + +NTSTATUS +NbtCreateNetBTDeviceObject( + PDRIVER_OBJECT DriverObject, + tNBTCONFIG *pConfig, + PUNICODE_STRING RegistryPath + ); + +tDEVICECONTEXT * +NbtFindIPAddress( + ULONG IpAddr + ); + +NTSTATUS +NbtNtPNPInit( + VOID + ); + +VOID +NbtFailedNtPNPInit( + VOID + ); + +NTSTATUS +NbtAddressAdd( + ULONG IpAddr, + PUNICODE_STRING pucBindString, + PUNICODE_STRING pucExportString, + PULONG Inst + ); + +NTSTATUS +NbtAddNewInterface ( + IN PIRP pIrp, + IN PVOID *pBuffer, + IN ULONG Size + ); + +VOID +NbtAddressDelete( + ULONG IpAddr + ); + +tDEVICECONTEXT * +NbtFindBindName( + PUNICODE_STRING pucBindName + ); + +#ifdef WATCHBIND +VOID +BindHandler(IN PUNICODE_STRING DeviceName); + +VOID +UnbindHandler(IN PUNICODE_STRING DeviceName); + +extern HANDLE BindingHandle; +#endif // WATCHBIND + +#endif -- cgit v1.2.3