summaryrefslogtreecommitdiffstats
path: root/private/ntos/nbt/inc/ntprocs.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/nbt/inc/ntprocs.h')
-rw-r--r--private/ntos/nbt/inc/ntprocs.h845
1 files changed, 845 insertions, 0 deletions
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