846 lines
17 KiB
C
846 lines
17 KiB
C
/*++
|
|
|
|
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
|