Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1663 lines
38 KiB

  1. /*++
  2. Copyright (c) 1989-1993 Microsoft Corporation
  3. Module Name:
  4. Nbtprocs.h
  5. Abstract:
  6. This file contains the OS independent function prototypes.
  7. Author:
  8. Jim Stewart (Jimst) 10-2-92
  9. Revision History:
  10. Johnl 05-Apr-1993 Hacked on to support VXD
  11. --*/
  12. #ifndef _NBTPROCS_H_
  13. #define _NBTPROCS_H_
  14. #include "types.h"
  15. #ifndef VXD
  16. #include <ntprocs.h>
  17. #else
  18. #include <vxdprocs.h>
  19. #endif
  20. //---------------------------------------------------------------------
  21. // FROM NAMESRV.C
  22. //
  23. NTSTATUS
  24. NbtRegisterName(
  25. IN enum eNbtLocation Location,
  26. IN ULONG IpAddress,
  27. IN PCHAR pName,
  28. IN tNAMEADDR *pNameAddrIn,
  29. IN tCLIENTELE *pClientEle,
  30. IN PVOID pClientCompletion,
  31. IN USHORT uAddressType,
  32. IN tDEVICECONTEXT *pDeviceContext
  33. );
  34. NTSTATUS
  35. ReleaseNameOnNet(
  36. tNAMEADDR *pNameAddr,
  37. PCHAR pScope,
  38. PVOID pClientCompletion,
  39. ULONG NodeType,
  40. tDEVICECONTEXT *pDeviceContext
  41. );
  42. VOID
  43. NameReleaseDone(
  44. PVOID pContext,
  45. NTSTATUS status
  46. );
  47. NTSTATUS
  48. RegOrQueryFromNet(
  49. IN BOOL fReg,
  50. IN tDEVICECONTEXT *pDeviceContext,
  51. IN tNAMEHDR UNALIGNED *pNameHdr,
  52. IN LONG lNumBytes,
  53. IN PCHAR pName,
  54. IN PUCHAR pScope
  55. );
  56. NTSTATUS
  57. QueryNameOnNet(
  58. IN PCHAR pName,
  59. IN PCHAR pScope,
  60. IN USHORT uType,
  61. IN tDGRAM_SEND_TRACKING *pClientContextTracker,
  62. IN PVOID pClientCompletion,
  63. IN ULONG NodeType,
  64. IN tNAMEADDR *pNameAddrIn,
  65. IN tDEVICECONTEXT *pDeviceContext,
  66. IN CTELockHandle *pJointLockOldIrq
  67. );
  68. #ifdef MULTIPLE_WINS
  69. NTSTATUS
  70. ContinueQueryNameOnNet(
  71. IN tDGRAM_SEND_TRACKING *pTracker,
  72. IN PUCHAR pName,
  73. IN tDEVICECONTEXT *pDeviceContext,
  74. IN PVOID QueryCompletion,
  75. IN OUT BOOLEAN *pfNameReferenced
  76. );
  77. #endif
  78. VOID
  79. CompleteClientReq(
  80. COMPLETIONCLIENT pClientCompletion,
  81. tDGRAM_SEND_TRACKING *pTracker,
  82. NTSTATUS status
  83. );
  84. VOID
  85. NodeStatusTimeout(
  86. PVOID pContext,
  87. PVOID pContext2,
  88. tTIMERQENTRY *pTimerQEntry
  89. );
  90. VOID
  91. RefreshRegCompletion(
  92. PVOID pContext,
  93. PVOID pContext2,
  94. tTIMERQENTRY *pTimerQEntry
  95. );
  96. VOID
  97. RefreshTimeout(
  98. PVOID pContext,
  99. PVOID pContext2,
  100. tTIMERQENTRY *pTimerQEntry
  101. );
  102. VOID
  103. WakeupRefreshTimeout(
  104. PVOID pContext,
  105. PVOID pContext2,
  106. tTIMERQENTRY *pTimerQEntry
  107. );
  108. VOID
  109. RemoteHashTimeout(
  110. PVOID pContext,
  111. PVOID pContext2,
  112. tTIMERQENTRY *pTimerQEntry
  113. );
  114. VOID
  115. SessionKeepAliveTimeout(
  116. PVOID pContext,
  117. PVOID pContext2,
  118. tTIMERQENTRY *pTimerQEntry
  119. );
  120. VOID
  121. IncrementNameStats(
  122. IN ULONG StatType,
  123. IN BOOLEAN IsNameServer
  124. );
  125. VOID
  126. SaveBcastNameResolved(
  127. IN PUCHAR pName
  128. );
  129. //---------------------------------------------------------------------
  130. // FROM NAME.C
  131. VOID
  132. FreeRcvBuffers(
  133. tCONNECTELE *pConnEle,
  134. CTELockHandle *pOldIrq
  135. );
  136. NTSTATUS
  137. NbtRegisterCompletion(
  138. IN tCLIENTELE *pClientEle,
  139. IN NTSTATUS Status);
  140. NTSTATUS
  141. NbtOpenAddress(
  142. IN TDI_REQUEST *pRequest,
  143. IN TA_ADDRESS *pTaAddress,
  144. IN tIPADDRESS IpAddress,
  145. IN PVOID pSecurityDescriptor,
  146. IN tDEVICECONTEXT *pContext,
  147. IN PVOID pIrp);
  148. NTSTATUS
  149. NbtOpenConnection(
  150. IN TDI_REQUEST *pRequest,
  151. IN CONNECTION_CONTEXT pConnectionContext,
  152. IN tDEVICECONTEXT *pContext);
  153. NTSTATUS
  154. NbtOpenAndAssocConnection(
  155. IN tDEVICECONTEXT *pDeviceContext,
  156. IN tCONNECTELE *pConnEle,
  157. OUT tLOWERCONNECTION **ppLowerConn,
  158. IN UCHAR Identifier
  159. );
  160. NTSTATUS
  161. NbtAssociateAddress(
  162. IN TDI_REQUEST *pRequest,
  163. IN tCLIENTELE *pClientEle,
  164. IN PVOID pIrp);
  165. NTSTATUS
  166. NbtDisassociateAddress(
  167. IN TDI_REQUEST *pRequest
  168. );
  169. NTSTATUS
  170. NbtCloseAddress(
  171. IN TDI_REQUEST *pRequest,
  172. OUT TDI_REQUEST_STATUS *pRequestStatus,
  173. IN tDEVICECONTEXT *pContext,
  174. IN PVOID pIrp);
  175. NTSTATUS
  176. NbtCleanUpAddress(
  177. IN tCLIENTELE *pClientEle,
  178. IN tDEVICECONTEXT *pDeviceContext
  179. );
  180. NTSTATUS
  181. NbtCloseConnection(
  182. IN TDI_REQUEST *pRequest,
  183. OUT TDI_REQUEST_STATUS *pRequestStatus,
  184. IN tDEVICECONTEXT *pContext,
  185. IN PVOID pIrp);
  186. NTSTATUS
  187. NbtCleanUpConnection(
  188. IN tCONNECTELE *pConnEle,
  189. IN tDEVICECONTEXT *pDeviceContext
  190. );
  191. VOID
  192. RelistConnection(
  193. IN tCONNECTELE *pConnEle
  194. );
  195. NTSTATUS
  196. CleanupConnectingState(
  197. IN tCONNECTELE *pConnEle,
  198. IN tDEVICECONTEXT *pDeviceContext,
  199. IN CTELockHandle *OldIrq,
  200. IN CTELockHandle *OldIrq2
  201. );
  202. NTSTATUS
  203. NbtConnect(
  204. IN TDI_REQUEST *pRequest,
  205. IN PVOID pTimeout,
  206. IN PTDI_CONNECTION_INFORMATION pCallInfo,
  207. IN PIRP pIrp
  208. );
  209. tNAMEADDR *
  210. FindNameRemoteThenLocal(
  211. IN tDGRAM_SEND_TRACKING *pTracker,
  212. OUT tIPADDRESS *pIpAddress,
  213. OUT PULONG plNameType
  214. );
  215. VOID
  216. SessionStartupContinue(
  217. IN PVOID pContext,
  218. IN NTSTATUS status,
  219. IN ULONG lInfo);
  220. VOID
  221. SessionSetupContinue(
  222. IN PVOID pContext,
  223. IN NTSTATUS status
  224. );
  225. VOID
  226. SessionStartupTimeoutCompletion(
  227. IN tDGRAM_SEND_TRACKING *pTracker,
  228. IN NTSTATUS status
  229. );
  230. VOID
  231. SessionStartupTimeout (
  232. PVOID pContext,
  233. PVOID pContext2,
  234. tTIMERQENTRY *pTimerQEntry
  235. );
  236. VOID
  237. QueueCleanup(
  238. IN tCONNECTELE *pConnEle,
  239. IN CTELockHandle *pOldIrqJointLock,
  240. IN CTELockHandle *pOldIrqConnEle
  241. );
  242. NTSTATUS
  243. NbtDisconnect(
  244. IN TDI_REQUEST *pRequest,
  245. IN PVOID pTimeout,
  246. IN ULONG Flags,
  247. IN PTDI_CONNECTION_INFORMATION pCallInfo,
  248. IN PTDI_CONNECTION_INFORMATION pReturnInfo,
  249. IN PIRP pIrp);
  250. NTSTATUS
  251. NbtSend(
  252. IN TDI_REQUEST *pRequest,
  253. IN USHORT Flags,
  254. IN ULONG SendLength,
  255. OUT LONG *pSentLength,
  256. IN PVOID *pBuffer,
  257. IN tDEVICECONTEXT *pContext,
  258. IN PIRP pIrp
  259. );
  260. NTSTATUS
  261. NbtSendDatagram(
  262. IN TDI_REQUEST *pRequest,
  263. IN PTDI_CONNECTION_INFORMATION pSendInfo,
  264. IN LONG SendLength,
  265. IN LONG *pSentLength,
  266. IN PVOID pBuffer,
  267. IN tDEVICECONTEXT *pDeviceContext,
  268. IN PIRP pIrp
  269. );
  270. NTSTATUS
  271. SendDgram(
  272. IN tNAMEADDR *pNameAddr,
  273. IN tDGRAM_SEND_TRACKING *pTracker
  274. );
  275. NTSTATUS
  276. BuildSendDgramHdr(
  277. IN ULONG SendLength,
  278. IN tDEVICECONTEXT *pDeviceContext,
  279. IN PCHAR pSourceName,
  280. IN PCHAR pDestinationName,
  281. IN ULONG NameLength,
  282. IN PVOID pBuffer,
  283. OUT tDGRAMHDR **ppDgramHdr,
  284. OUT tDGRAM_SEND_TRACKING **ppTracker
  285. );
  286. VOID
  287. NodeStatusDone(
  288. IN PVOID pContext,
  289. IN NTSTATUS status
  290. );
  291. NTSTATUS
  292. NbtSendNodeStatus(
  293. IN tDEVICECONTEXT *pDeviceContext,
  294. IN PCHAR pName,
  295. IN PULONG pIpAddrsList,
  296. IN PVOID ClientContext,
  297. IN PVOID CompletionRoutine
  298. );
  299. NTSTATUS
  300. NbtQueryFindName(
  301. IN PTDI_CONNECTION_INFORMATION pInfo,
  302. IN tDEVICECONTEXT *pDeviceContext,
  303. IN PIRP pIrp,
  304. IN BOOLEAN IsIoctl
  305. );
  306. NTSTATUS
  307. CopyFindNameData(
  308. IN tNAMEADDR *pNameAddr,
  309. IN PIRP pIrp,
  310. IN tDGRAM_SEND_TRACKING *pTracker
  311. );
  312. NTSTATUS
  313. NbtListen(
  314. IN TDI_REQUEST *pRequest,
  315. IN ULONG Flags,
  316. IN TDI_CONNECTION_INFORMATION *pRequestConnectInfo,
  317. OUT TDI_CONNECTION_INFORMATION *pReturnConnectInfo,
  318. IN PVOID pIrp);
  319. NTSTATUS
  320. NbtAccept(
  321. IN TDI_REQUEST *pRequest,
  322. IN TDI_CONNECTION_INFORMATION *pAcceptInfo,
  323. OUT TDI_CONNECTION_INFORMATION *pReturnAcceptInfo,
  324. IN PIRP pIrp);
  325. NTSTATUS
  326. NbtReceiveDatagram(
  327. IN TDI_REQUEST *pRequest,
  328. IN PTDI_CONNECTION_INFORMATION pReceiveInfo,
  329. IN PTDI_CONNECTION_INFORMATION pReturnedInfo,
  330. IN LONG ReceiveLength,
  331. IN LONG *pReceivedLength,
  332. IN PVOID pBuffer,
  333. IN tDEVICECONTEXT *pDeviceContext,
  334. IN PIRP pIrp
  335. );
  336. NTSTATUS
  337. NbtSetEventHandler(
  338. tCLIENTELE *pClientEle,
  339. int EventType,
  340. PVOID pEventHandler,
  341. PVOID pEventContext
  342. );
  343. NTSTATUS
  344. NbtAddEntryToRemoteHashTable(
  345. IN tDEVICECONTEXT *pDeviceContext,
  346. IN USHORT NameAddFlag,
  347. IN PUCHAR Name,
  348. IN ULONG IpAddress,
  349. IN ULONG Ttl,
  350. IN UCHAR name_flags
  351. );
  352. NTSTATUS
  353. NbtQueryAdapterStatus(
  354. IN tDEVICECONTEXT *pDeviceContext,
  355. OUT PVOID *ppAdapterStatus,
  356. OUT PLONG pSize,
  357. enum eNbtLocation Location
  358. );
  359. NTSTATUS
  360. NbtQueryConnectionList(
  361. IN tDEVICECONTEXT *pDeviceContext,
  362. OUT PVOID *ppConnList,
  363. IN OUT PLONG pSize
  364. );
  365. VOID
  366. DelayedNbtResyncRemoteCache(
  367. IN PVOID Unused1,
  368. IN PVOID Unused2,
  369. IN PVOID Unused3,
  370. IN tDEVICECONTEXT *Unused4
  371. );
  372. NTSTATUS
  373. NbtQueryBcastVsWins(
  374. IN tDEVICECONTEXT *pDeviceContext,
  375. OUT PVOID *ppBuffer,
  376. IN OUT PLONG pSize
  377. );
  378. NTSTATUS
  379. NbtNewDhcpAddress(
  380. tDEVICECONTEXT *pDeviceContext,
  381. ULONG IpAddress,
  382. ULONG SubnetMask);
  383. VOID
  384. FreeTracker(
  385. IN tDGRAM_SEND_TRACKING *pTracker,
  386. IN ULONG Actions
  387. );
  388. NTSTATUS
  389. DatagramDistribution(
  390. IN tDGRAM_SEND_TRACKING *pTracker,
  391. IN tNAMEADDR *pNameAddr
  392. );
  393. VOID
  394. DeleteAddressElement(
  395. IN tADDRESSELE *pAddress
  396. );
  397. VOID
  398. DeleteClientElement(
  399. IN tCLIENTELE *pClientEle
  400. );
  401. VOID
  402. ReleaseNameCompletion(
  403. IN PVOID pContext,
  404. IN NTSTATUS status,
  405. IN ULONG lInfo);
  406. NTSTATUS
  407. DisconnectLower(
  408. IN tLOWERCONNECTION *pLowerConn,
  409. IN ULONG state,
  410. IN ULONG Flags,
  411. IN PVOID Timeout,
  412. IN BOOLEAN Wait
  413. );
  414. extern
  415. USHORT
  416. GetTransactId(
  417. );
  418. NTSTATUS
  419. NbtDeleteLowerConn(
  420. IN tLOWERCONNECTION *pLowerConn
  421. );
  422. tDEVICECONTEXT *
  423. GetAndRefNextDeviceFromNameAddr(
  424. IN tNAMEADDR *pNameAddr
  425. );
  426. tDEVICECONTEXT *
  427. GetDeviceFromInterface(
  428. IN tIPADDRESS IpAddress,
  429. IN BOOLEAN fReferenceDevice
  430. );
  431. VOID
  432. NbtDereferenceName(
  433. IN tNAMEADDR *pNameAddr,
  434. IN ULONG RefContext,
  435. IN BOOLEAN fLocked
  436. );
  437. VOID
  438. NbtDereferenceLowerConnection(
  439. IN tLOWERCONNECTION *pLowerConn,
  440. IN ULONG RefContext,
  441. IN BOOLEAN fJointLockHeld
  442. );
  443. VOID
  444. NbtDereferenceTracker(
  445. IN tDGRAM_SEND_TRACKING *pTracker,
  446. IN BOOLEAN fLocked
  447. );
  448. NTSTATUS
  449. NbtDereferenceAddress(
  450. IN tADDRESSELE *pAddressEle,
  451. IN ULONG Context
  452. );
  453. VOID
  454. NbtDereferenceConnection(
  455. IN tCONNECTELE *pConnEle,
  456. IN ULONG RefContext
  457. );
  458. VOID
  459. NbtDereferenceClient(
  460. IN tCLIENTELE *pClientEle
  461. );
  462. //---------------------------------------------------------------------
  463. //
  464. // FROM TDICNCT.C
  465. //
  466. NTSTATUS
  467. NbtTdiOpenConnection (
  468. IN tLOWERCONNECTION *pLowerConn,
  469. IN tDEVICECONTEXT *pDeviceContext
  470. );
  471. NTSTATUS
  472. NbtTdiAssociateConnection(
  473. IN PFILE_OBJECT pFileObject,
  474. IN HANDLE Handle
  475. );
  476. NTSTATUS
  477. NbtTdiCloseConnection(
  478. IN tLOWERCONNECTION *pLowerConn
  479. );
  480. NTSTATUS
  481. NbtTdiCloseAddress(
  482. IN tLOWERCONNECTION *pLowerConn
  483. );
  484. //---------------------------------------------------------------------
  485. //
  486. // FROM TDIADDR.C
  487. //
  488. NTSTATUS
  489. NbtTdiOpenAddress (
  490. OUT PHANDLE pFileHandle,
  491. OUT PDEVICE_OBJECT *pDeviceObject,
  492. OUT PFILE_OBJECT *pFileObject,
  493. IN tDEVICECONTEXT *pDeviceContext,
  494. IN USHORT PortNumber,
  495. IN ULONG IpAddress,
  496. IN ULONG Flags
  497. );
  498. NTSTATUS
  499. NbtTdiCompletionRoutine(
  500. IN PDEVICE_OBJECT DeviceObject,
  501. IN PIRP Irp,
  502. IN PVOID Context
  503. );
  504. NTSTATUS
  505. NbtTdiOpenControl (
  506. IN tDEVICECONTEXT *pDeviceContext
  507. );
  508. //---------------------------------------------------------------------
  509. //
  510. // FROM NBTUTILS.C
  511. //
  512. BOOLEAN
  513. IsEntryInList(
  514. PLIST_ENTRY pEntryToFind,
  515. PLIST_ENTRY pListToSearch
  516. );
  517. void
  518. FreeList(
  519. PLIST_ENTRY pHead,
  520. PLIST_ENTRY pFreeQ);
  521. void
  522. NbtFreeAddressObj(
  523. tADDRESSELE *pBlk);
  524. void
  525. NbtFreeClientObj(
  526. tCLIENTELE *pBlk);
  527. void
  528. FreeConnectionObj(
  529. tCONNECTELE *pBlk);
  530. tCLIENTELE *
  531. NbtAllocateClientBlock(
  532. tADDRESSELE *pAddrEle,
  533. tDEVICECONTEXT *pDeviceContext
  534. );
  535. NTSTATUS
  536. NbtAddPermanentName(
  537. IN tDEVICECONTEXT *pDeviceContext
  538. );
  539. NTSTATUS
  540. NbtAddPermanentNameNotFound(
  541. IN tDEVICECONTEXT *pDeviceContext
  542. );
  543. VOID
  544. NbtRemovePermanentName(
  545. IN tDEVICECONTEXT *pDeviceContext
  546. );
  547. NTSTATUS
  548. ConvertDottedDecimalToUlong(
  549. IN PUCHAR pInString,
  550. OUT PULONG IpAddress);
  551. NTSTATUS
  552. NbtInitQ(
  553. PLIST_ENTRY pListHead,
  554. LONG iSizeBuffer,
  555. LONG iNumBuffers);
  556. NTSTATUS
  557. NbtInitTrackerQ(
  558. LONG iNumBuffers
  559. );
  560. tDGRAM_SEND_TRACKING *
  561. NbtAllocTracker(
  562. IN VOID
  563. );
  564. NTSTATUS
  565. NbtGetBuffer(
  566. PLIST_ENTRY pListHead,
  567. PLIST_ENTRY *ppListEntry,
  568. enum eBUFFER_TYPES eBuffType);
  569. NTSTATUS
  570. NewInternalAddressFromTransportAddress(
  571. IN TRANSPORT_ADDRESS UNALIGNED *pTransportAddress,
  572. IN ULONG MaxInputBufferLength,
  573. OUT PTA_NETBT_INTERNAL_ADDRESS *ppNetBT
  574. );
  575. VOID
  576. DeleteInternalAddress(
  577. IN PTA_NETBT_INTERNAL_ADDRESS pNetBT
  578. );
  579. NTSTATUS
  580. GetNetBiosNameFromTransportAddress(
  581. IN TRANSPORT_ADDRESS UNALIGNED *pTransportAddress,
  582. IN ULONG MaxInputBufferLength,
  583. OUT PTDI_ADDRESS_NETBT_INTERNAL pNetBT
  584. );
  585. NTSTATUS
  586. ConvertToAscii(
  587. IN PCHAR pNameHdr,
  588. IN LONG NumBytes,
  589. OUT PCHAR pName,
  590. OUT PCHAR *pScope,
  591. OUT PULONG pNameSize
  592. );
  593. PCHAR
  594. ConvertToHalfAscii(
  595. OUT PCHAR pDest,
  596. IN PCHAR pName,
  597. IN PCHAR pScope,
  598. IN ULONG ScopeSize
  599. );
  600. ULONG
  601. Nbt_inet_addr(
  602. IN PCHAR pName,
  603. IN ULONG Flags
  604. );
  605. NTSTATUS
  606. BuildQueryResponse(
  607. IN USHORT sNameSize,
  608. IN tNAMEHDR *pNameHdr,
  609. IN ULONG uTtl,
  610. IN ULONG IpAddress,
  611. OUT ULONG uNumBytes,
  612. OUT PVOID pResponse,
  613. IN PVOID pName,
  614. IN USHORT NameType,
  615. IN USHORT RetCode
  616. );
  617. NTSTATUS
  618. GetTracker(
  619. OUT tDGRAM_SEND_TRACKING **ppTracker,
  620. IN enum eTRACKER_TYPE TrackerType);
  621. NTSTATUS
  622. GetIrp(
  623. OUT PIRP *ppIrp);
  624. ULONG
  625. CountLocalNames(IN tNBTCONFIG *pNbtConfig
  626. );
  627. ULONG
  628. CountUpperConnections(
  629. IN tDEVICECONTEXT *pDeviceContext
  630. );
  631. NTSTATUS
  632. DisableInboundConnections(
  633. IN tDEVICECONTEXT *pDeviceContext
  634. );
  635. ULONG
  636. CloseLowerConnections(
  637. IN PLIST_ENTRY pLowerConnFreeHead
  638. );
  639. NTSTATUS
  640. ReRegisterLocalNames(
  641. IN tDEVICECONTEXT *pDeviceContext,
  642. IN BOOLEAN fSendNameRelease
  643. );
  644. VOID
  645. NbtStopRefreshTimer(
  646. );
  647. NTSTATUS
  648. strnlen(
  649. PUCHAR SrcString,
  650. LONG MaxBufferLength,
  651. LONG *pStringLen
  652. );
  653. //---------------------------------------------------------------------
  654. //
  655. // FROM hndlrs.c
  656. //
  657. NTSTATUS
  658. RcvHandlrNotOs (
  659. IN PVOID ReceiveEventContext,
  660. IN PVOID ConnectionContext,
  661. IN USHORT ReceiveFlags,
  662. IN ULONG BytesIndicated,
  663. IN ULONG BytesAvailable,
  664. OUT PULONG BytesTaken,
  665. IN PVOID pTsdu,
  666. OUT PVOID *RcvBuffer
  667. );
  668. NTSTATUS
  669. Inbound (
  670. IN PVOID ReceiveEventContext,
  671. IN PVOID ConnectionContext,
  672. IN USHORT ReceiveFlags,
  673. IN ULONG BytesIndicated,
  674. IN ULONG BytesAvailable,
  675. OUT PULONG BytesTaken,
  676. IN PVOID pTsdu,
  677. OUT PVOID *RcvBuffer
  678. );
  679. NTSTATUS
  680. Outbound (
  681. IN PVOID ReceiveEventContext,
  682. IN PVOID ConnectionContext,
  683. IN USHORT ReceiveFlags,
  684. IN ULONG BytesIndicated,
  685. IN ULONG BytesAvailable,
  686. OUT PULONG BytesTaken,
  687. IN PVOID pTsdu,
  688. OUT PVOID *RcvBuffer
  689. );
  690. NTSTATUS
  691. RejectAnyData(
  692. IN PVOID ReceiveEventContext,
  693. IN tLOWERCONNECTION *pLowerConn,
  694. IN USHORT ReceiveFlags,
  695. IN ULONG BytesIndicated,
  696. IN ULONG BytesAvailable,
  697. OUT PULONG BytesTaken,
  698. IN PVOID pTsdu,
  699. OUT PVOID *ppIrp
  700. );
  701. VOID
  702. RejectSession(
  703. IN tLOWERCONNECTION *pLowerConn,
  704. IN ULONG StatusCode,
  705. IN ULONG SessionStatus,
  706. IN BOOLEAN SendNegativeSessionResponse
  707. );
  708. VOID
  709. GetIrpIfNotCancelled(
  710. IN tCONNECTELE *pConnEle,
  711. OUT PIRP *ppIrp
  712. );
  713. NTSTATUS
  714. FindSessionEndPoint(
  715. IN VOID UNALIGNED *pTsdu,
  716. IN PVOID ConnectionContext,
  717. IN ULONG BytesIndicated,
  718. OUT tCLIENTELE **ppClientEle,
  719. OUT PVOID *ppRemoteAddress,
  720. OUT PULONG pRemoteAddressLength
  721. );
  722. VOID
  723. SessionRetry(
  724. IN PVOID pContext,
  725. IN PVOID pContext2,
  726. IN tTIMERQENTRY *pTimerQEntry
  727. );
  728. tCONNECTELE *
  729. SearchConnectionList(
  730. IN tCLIENTELE *pClientEle,
  731. IN PVOID pClientContext
  732. );
  733. NTSTATUS
  734. ConnectHndlrNotOs (
  735. IN PVOID pConnectionContext,
  736. IN LONG RemoteAddressLength,
  737. IN PVOID pRemoteAddress,
  738. IN int UserDataLength,
  739. IN PVOID pUserData,
  740. OUT CONNECTION_CONTEXT *ppConnectionId
  741. );
  742. NTSTATUS
  743. DisconnectHndlrNotOs (
  744. PVOID EventContext,
  745. PVOID ConnectionContext,
  746. ULONG DisconnectDataLength,
  747. PVOID pDisconnectData,
  748. ULONG DisconnectInformationLength,
  749. PVOID pDisconnectInformation,
  750. ULONG DisconnectIndicators
  751. );
  752. NTSTATUS
  753. DgramHndlrNotOs(
  754. IN PVOID ReceiveEventContext,
  755. IN ULONG SourceAddrLength,
  756. IN PVOID pSourceAddr,
  757. IN ULONG OptionsLength,
  758. IN PVOID pOptions,
  759. IN ULONG ReceiveDatagramFlags,
  760. IN ULONG BytesIndicated,
  761. IN ULONG BytesAvailable,
  762. OUT PULONG pBytesTaken,
  763. IN PVOID pTsdu,
  764. OUT PVOID *ppRcvBuffer,
  765. OUT tCLIENTLIST **ppAddressEle
  766. );
  767. NTSTATUS
  768. NameSrvHndlrNotOs (
  769. IN tDEVICECONTEXT *pDeviceContext,
  770. IN PVOID pSrcAddress,
  771. IN tNAMEHDR UNALIGNED *pNameSrv,
  772. IN ULONG uNumBytes,
  773. IN BOOLEAN fBroadcast
  774. );
  775. //---------------------------------------------------------------------
  776. //
  777. // FROM proxy.c
  778. //
  779. NTSTATUS
  780. ReleaseResponseFromNet(
  781. IN tDEVICECONTEXT *pDeviceContext,
  782. IN PVOID pSrcAddress,
  783. IN tNAMEHDR UNALIGNED *pNameHdr,
  784. IN LONG NumBytes
  785. );
  786. NTSTATUS
  787. ProxyQueryFromNet(
  788. IN tDEVICECONTEXT *pDeviceContext,
  789. IN PVOID pSrcAddress,
  790. IN tNAMEHDR UNALIGNED *pNameHdr,
  791. IN LONG lNumBytes,
  792. IN USHORT OpCodeFlags
  793. );
  794. NTSTATUS
  795. ProxyDoDgramDist(
  796. IN tDGRAMHDR UNALIGNED *pDgram,
  797. IN DWORD DgramLen,
  798. IN tNAMEADDR *pNameAddr,
  799. IN tDEVICECONTEXT *pDeviceContext
  800. );
  801. VOID
  802. ProxyTimerComplFn (
  803. IN PVOID pContext,
  804. IN PVOID pContext2,
  805. IN tTIMERQENTRY *pTimerQEntry
  806. );
  807. VOID
  808. ProxyRespond (
  809. IN tQUERYRESP *pQuery,
  810. IN PUCHAR pName,
  811. IN tDEVICECONTEXT *pDeviceContext,
  812. IN tNAMEHDR *pNameHdr,
  813. IN ULONG lNameSize,
  814. IN ULONG SrcAddress,
  815. IN PTDI_ADDRESS_IP pAddressIp
  816. );
  817. //---------------------------------------------------------------------
  818. //
  819. // FROM hashtbl.c
  820. //
  821. NTSTATUS
  822. CreateHashTable(
  823. tHASHTABLE **pHashTable,
  824. LONG NumBuckets,
  825. enum eNbtLocation LocalRemote
  826. );
  827. #ifdef _PNP_POWER_
  828. VOID
  829. DestroyHashTables(
  830. );
  831. #endif // _PNP_POWER_
  832. NTSTATUS
  833. LockAndAddToHashTable(
  834. IN tHASHTABLE *pHashTable,
  835. IN PCHAR pName,
  836. IN PCHAR pScope,
  837. IN tIPADDRESS IpAddress,
  838. IN enum eNbtAddrType NameType,
  839. IN tNAMEADDR *pNameAddr,
  840. OUT tNAMEADDR **ppNameAddress,
  841. IN tDEVICECONTEXT *pDeviceContext,
  842. IN USHORT NameAddFlags
  843. );
  844. NTSTATUS
  845. AddToHashTable(
  846. IN tHASHTABLE *pHashTable,
  847. IN PCHAR pName,
  848. IN PCHAR pScope,
  849. IN tIPADDRESS IpAddress,
  850. IN enum eNbtAddrType NameType,
  851. IN tNAMEADDR *pNameAddr,
  852. OUT tNAMEADDR **ppNameAddress,
  853. IN tDEVICECONTEXT *pDeviceContext,
  854. IN USHORT NameAddFlags
  855. );
  856. NTSTATUS
  857. DeleteFromHashTable(
  858. tHASHTABLE *pHashTable,
  859. PCHAR pName
  860. );
  861. tNAMEADDR *
  862. LockAndFindName(
  863. enum eNbtLocation Location,
  864. PCHAR pName,
  865. PCHAR pScope,
  866. ULONG *pRetNameType
  867. );
  868. tNAMEADDR *
  869. FindName(
  870. enum eNbtLocation Location,
  871. PCHAR pName,
  872. PCHAR pScope,
  873. ULONG *pRetNameType
  874. );
  875. NTSTATUS
  876. ChgStateOfScopedNameInHashTable(
  877. tHASHTABLE *pHashTable,
  878. PCHAR pName,
  879. PCHAR pScope,
  880. DWORD NewState
  881. );
  882. NTSTATUS
  883. FindInHashTable(
  884. tHASHTABLE *pHashTable,
  885. PCHAR pName,
  886. PCHAR pScope,
  887. tNAMEADDR **pNameAddress
  888. );
  889. NTSTATUS
  890. FindNoScopeInHashTable(
  891. tHASHTABLE *pHashTable,
  892. PCHAR pName,
  893. tNAMEADDR **pNameAddress
  894. );
  895. NTSTATUS
  896. UpdateHashTable(
  897. tHASHTABLE *pHashTable,
  898. PCHAR pName,
  899. PCHAR pScope,
  900. ULONG IpAddress,
  901. BOOLEAN bGroup,
  902. tNAMEADDR **ppNameAddr
  903. );
  904. //---------------------------------------------------------------------
  905. //
  906. // FROM timer.c
  907. //
  908. NTSTATUS
  909. InitTimerQ(
  910. IN int NumInQ
  911. );
  912. #ifdef _PNP_POWER_
  913. NTSTATUS
  914. DestroyTimerQ(
  915. );
  916. #endif // _PNP_POWER_
  917. NTSTATUS
  918. InterlockedCallCompletion(
  919. IN tTIMERQENTRY *pTimer,
  920. IN NTSTATUS status
  921. );
  922. NTSTATUS
  923. StartTimer(
  924. IN PVOID CompletionRoutine,
  925. IN ULONG DeltaTime,
  926. IN PVOID Context,
  927. IN PVOID Context2,
  928. IN PVOID ContextClient,
  929. IN PVOID CompletionClient,
  930. IN tDEVICECONTEXT *pDeviceContext,
  931. OUT tTIMERQENTRY **ppTimerEntry,
  932. IN USHORT Retries,
  933. BOOLEAN fLocked);
  934. NTSTATUS
  935. StopTimer(
  936. IN tTIMERQENTRY *pTimerEntry,
  937. OUT COMPLETIONCLIENT *pClient,
  938. OUT PVOID *ppContext
  939. );
  940. VOID
  941. DelayedNbtStartWakeupTimer(
  942. IN tDGRAM_SEND_TRACKING *pUnused1,
  943. IN PVOID Unused2,
  944. IN PVOID Unused3,
  945. IN tDEVICECONTEXT *Unused4
  946. );
  947. VOID
  948. DelayedNbtStopWakeupTimer(
  949. IN tDGRAM_SEND_TRACKING *pUnused1,
  950. IN PVOID pClientContext,
  951. IN PVOID Unused2,
  952. IN tDEVICECONTEXT *Unused3
  953. );
  954. //---------------------------------------------------------------------
  955. //
  956. // FROM udpsend.c
  957. //
  958. NTSTATUS
  959. UdpSendQueryNs(
  960. PCHAR pName,
  961. PCHAR pScope
  962. );
  963. NTSTATUS
  964. UdpSendQueryBcast(
  965. IN PCHAR pName,
  966. IN PCHAR pScope,
  967. IN tDGRAM_SEND_TRACKING *pSentList
  968. );
  969. NTSTATUS
  970. UdpSendRegistrationNs(
  971. PCHAR pName,
  972. PCHAR pScope
  973. );
  974. NTSTATUS
  975. UdpSendNSBcast(
  976. IN tNAMEADDR *pNameAddr,
  977. IN PCHAR pScope,
  978. IN tDGRAM_SEND_TRACKING *pSentList,
  979. IN PVOID pCompletionRoutine,
  980. IN PVOID pClientContext,
  981. IN PVOID pClientCompletion,
  982. IN ULONG Retries,
  983. IN ULONG Timeout,
  984. IN enum eNSTYPE eNsType,
  985. IN BOOL SendFlag
  986. );
  987. VOID
  988. NameDgramSendCompleted(
  989. PVOID pContext,
  990. NTSTATUS status,
  991. ULONG lInfo
  992. );
  993. NTSTATUS
  994. UdpSendResponse(
  995. IN ULONG lNameSize,
  996. IN tNAMEHDR UNALIGNED *pNameHdrIn,
  997. IN tNAMEADDR *pNameAddr,
  998. IN PTDI_ADDRESS_IP pDestIpAddress,
  999. IN tDEVICECONTEXT *pDeviceContext,
  1000. IN ULONG Rcode,
  1001. IN enum eNSTYPE NsType,
  1002. IN CTELockHandle OldIrq
  1003. );
  1004. NTSTATUS
  1005. UdpSendDatagram(
  1006. IN tDGRAM_SEND_TRACKING *pDgramTracker,
  1007. IN ULONG IpAddress,
  1008. IN PVOID pCompletionRoutine,
  1009. IN PVOID CompletionContext,
  1010. IN USHORT Port,
  1011. IN ULONG Service
  1012. );
  1013. PVOID
  1014. CreatePdu(
  1015. IN PCHAR pName,
  1016. IN PCHAR pScope,
  1017. IN ULONG IpAddress,
  1018. IN USHORT NameType,
  1019. IN enum eNSTYPE eNsType,
  1020. OUT PVOID *pHdrs,
  1021. OUT PULONG pLength,
  1022. IN tDGRAM_SEND_TRACKING *pTracker
  1023. );
  1024. NTSTATUS
  1025. TcpSessionStart(
  1026. IN tDGRAM_SEND_TRACKING *pTracker,
  1027. IN ULONG IpAddress,
  1028. IN tDEVICECONTEXT *pDeviceContext,
  1029. IN PVOID pCompletionRoutine,
  1030. IN ULONG Port
  1031. );
  1032. NTSTATUS
  1033. TcpSendSessionResponse(
  1034. IN tLOWERCONNECTION *pLowerConn,
  1035. IN ULONG lStatusCode,
  1036. IN ULONG lSessionStatus
  1037. );
  1038. NTSTATUS
  1039. TcpSendSession(
  1040. IN tDGRAM_SEND_TRACKING *pTracker,
  1041. IN tLOWERCONNECTION *LowerConn,
  1042. IN PVOID pCompletionRoutine
  1043. );
  1044. NTSTATUS
  1045. SendTcpDisconnect(
  1046. IN tLOWERCONNECTION *pLowerConnId
  1047. );
  1048. NTSTATUS
  1049. TcpDisconnect(
  1050. IN tDGRAM_SEND_TRACKING *pTracker,
  1051. IN PVOID Timeout,
  1052. IN ULONG Flags,
  1053. IN BOOLEAN Wait
  1054. );
  1055. VOID
  1056. FreeTrackerOnDisconnect(
  1057. IN tDGRAM_SEND_TRACKING *pTracker
  1058. );
  1059. VOID
  1060. QueryRespDone(
  1061. IN PVOID pContext,
  1062. IN NTSTATUS status,
  1063. IN ULONG lInfo);
  1064. VOID
  1065. DisconnectDone(
  1066. IN PVOID pContext,
  1067. IN NTSTATUS status,
  1068. IN ULONG lInfo);
  1069. //---------------------------------------------------------------------
  1070. //
  1071. // FROM tdiout.c
  1072. //
  1073. NTSTATUS
  1074. TdiSendDatagram(
  1075. IN PTDI_REQUEST pRequestInfo,
  1076. IN PTDI_CONNECTION_INFORMATION pSendDgramInfo,
  1077. IN ULONG SendLength,
  1078. OUT PULONG pSentSize,
  1079. IN tDGRAM_SEND_TRACKING *pDgramTracker
  1080. );
  1081. PIRP
  1082. NTAllocateNbtIrp(
  1083. IN PDEVICE_OBJECT DeviceObject
  1084. );
  1085. NTSTATUS
  1086. TdiConnect(
  1087. IN PTDI_REQUEST pRequestInfo,
  1088. IN ULONG_PTR lTimeout,
  1089. IN PTDI_CONNECTION_INFORMATION pSendInfo,
  1090. OUT PVOID pIrp
  1091. );
  1092. NTSTATUS
  1093. TdiSend(
  1094. IN PTDI_REQUEST pRequestInfo,
  1095. IN USHORT sFlags,
  1096. IN ULONG SendLength,
  1097. OUT PULONG pSentSize,
  1098. IN tBUFFER *pSendBuffer,
  1099. IN ULONG Flags
  1100. );
  1101. NTSTATUS
  1102. TdiDisconnect(
  1103. IN PTDI_REQUEST pRequestInfo,
  1104. IN PVOID lTimeout,
  1105. IN ULONG Flags,
  1106. IN PTDI_CONNECTION_INFORMATION pSendInfo,
  1107. IN PCTE_IRP pClientIrp,
  1108. IN BOOLEAN Wait
  1109. );
  1110. //---------------------------------------------------------------------
  1111. //
  1112. // FROM inbound.c
  1113. //
  1114. NTSTATUS
  1115. QueryFromNet(
  1116. IN tDEVICECONTEXT *pDeviceContext,
  1117. IN PVOID pSrcAddress,
  1118. IN tNAMEHDR UNALIGNED *pNameHdr,
  1119. IN LONG lNumBytes,
  1120. IN USHORT OpCodeFlags,
  1121. IN BOOLEAN fBroadcast
  1122. );
  1123. NTSTATUS
  1124. RegResponseFromNet(
  1125. IN tDEVICECONTEXT *pDeviceContext,
  1126. IN PVOID pSrcAddress,
  1127. IN tNAMEHDR UNALIGNED *pNameHdr,
  1128. IN LONG lNumBytes,
  1129. IN USHORT OpCodeFlags
  1130. );
  1131. NTSTATUS
  1132. CheckRegistrationFromNet(
  1133. IN tDEVICECONTEXT *pDeviceContext,
  1134. IN PVOID pSrcAddress,
  1135. IN tNAMEHDR UNALIGNED *pNameHdr,
  1136. IN LONG lNumBytes
  1137. );
  1138. NTSTATUS
  1139. NameReleaseFromNet(
  1140. IN tDEVICECONTEXT *pDeviceContext,
  1141. IN PVOID pSrcAddress,
  1142. IN tNAMEHDR UNALIGNED *pNameHdr,
  1143. IN LONG lNumBytes
  1144. );
  1145. NTSTATUS
  1146. WackFromNet(
  1147. IN tDEVICECONTEXT *pDeviceContext,
  1148. IN PVOID pSrcAddress,
  1149. IN tNAMEHDR UNALIGNED *pNameHdr,
  1150. IN LONG lNumBytes
  1151. );
  1152. VOID
  1153. SetupRefreshTtl(
  1154. IN tNAMEHDR UNALIGNED *pNameHdr,
  1155. IN tNAMEADDR *pNameAddr,
  1156. IN LONG lNameSize
  1157. );
  1158. #ifdef MULTIPLE_WINS
  1159. BOOLEAN
  1160. IsNameServerForDevice(
  1161. IN ULONG SrcAddress,
  1162. IN tDEVICECONTEXT *pDevContext
  1163. );
  1164. #endif
  1165. BOOLEAN
  1166. SrcIsNameServer(
  1167. IN ULONG SrcAddress,
  1168. IN USHORT SrcPort
  1169. );
  1170. VOID
  1171. SwitchToBackup(
  1172. IN tDEVICECONTEXT *pDeviceContext
  1173. );
  1174. BOOLEAN
  1175. SrcIsUs(
  1176. IN ULONG SrcAddress
  1177. );
  1178. NTSTATUS
  1179. FindOnPendingList(
  1180. IN PUCHAR pName,
  1181. IN tNAMEHDR UNALIGNED *pNameHdr,
  1182. IN BOOLEAN DontCheckTransactionId,
  1183. IN ULONG BytesToCompare,
  1184. OUT tNAMEADDR **ppNameAddr
  1185. );
  1186. //---------------------------------------------------------------------
  1187. //
  1188. // FROM init.c
  1189. //
  1190. NTSTATUS
  1191. InitNotOs(
  1192. void
  1193. ) ;
  1194. NTSTATUS
  1195. InitTimersNotOs(
  1196. void
  1197. );
  1198. NTSTATUS
  1199. StopInitTimers(
  1200. void
  1201. );
  1202. VOID
  1203. ReadParameters(
  1204. IN tNBTCONFIG *pConfig,
  1205. IN HANDLE ParmHandle
  1206. );
  1207. VOID
  1208. ReadParameters2(
  1209. IN tNBTCONFIG *pConfig,
  1210. IN HANDLE ParmHandle
  1211. );
  1212. //---------------------------------------------------------------------
  1213. //
  1214. // FROM parse.c
  1215. //
  1216. unsigned long
  1217. LmGetIpAddr (
  1218. IN PUCHAR path,
  1219. IN PUCHAR target,
  1220. IN CHAR RecurseDepth,
  1221. OUT BOOLEAN *bFindName
  1222. );
  1223. VOID
  1224. RemovePreloads (
  1225. );
  1226. VOID
  1227. SetNameState(
  1228. IN tNAMEADDR *pNameAddr,
  1229. IN PULONG pIpList,
  1230. IN BOOLEAN IpAddrResolved
  1231. );
  1232. LONG
  1233. PrimeCache(
  1234. IN PUCHAR path,
  1235. IN PUCHAR ignored,
  1236. IN CHAR RecurseDepth,
  1237. OUT BOOLEAN *ignored2
  1238. );
  1239. NTSTATUS
  1240. NtProcessLmHSvcIrp(
  1241. IN tDEVICECONTEXT *pDeviceContext,
  1242. IN PVOID *pBuffer,
  1243. IN LONG Size,
  1244. IN PCTE_IRP pIrp,
  1245. IN enum eNbtLmhRequestType RequestType
  1246. );
  1247. VOID
  1248. NbtCompleteLmhSvcRequest(
  1249. IN NBT_WORK_ITEM_CONTEXT *Context,
  1250. IN ULONG *IpList,
  1251. IN enum eNbtLmhRequestType RequestType,
  1252. IN ULONG lNameLength,
  1253. IN PWSTR pwsName,
  1254. IN BOOLEAN IpAddrResolved
  1255. );
  1256. NTSTATUS
  1257. NbtProcessLmhSvcRequest(
  1258. IN NBT_WORK_ITEM_CONTEXT *Context,
  1259. IN enum eNbtLmhRequestType RequestType
  1260. );
  1261. VOID
  1262. StartLmHostTimer(
  1263. NBT_WORK_ITEM_CONTEXT *pContext,
  1264. IN BOOLEAN fLockedOnEntry
  1265. );
  1266. NTSTATUS
  1267. LmHostQueueRequest(
  1268. IN tDGRAM_SEND_TRACKING *pTracker,
  1269. IN PVOID pClientContext,
  1270. IN PVOID ClientCompletion,
  1271. IN PVOID pDeviceContext
  1272. );
  1273. VOID
  1274. TimeoutLmHRequests(
  1275. IN tTIMERQENTRY *pTimerQEntry,
  1276. IN tDEVICECONTEXT *pDeviceContext,
  1277. IN BOOLEAN fLocked,
  1278. IN CTELockHandle *pJointLockOldIrq
  1279. );
  1280. tNAMEADDR *
  1281. FindInDomainList (
  1282. IN PUCHAR pName,
  1283. IN PLIST_ENTRY pDomainHead
  1284. );
  1285. //---------------------------------------------------------------------
  1286. //
  1287. // Delayed (Non-Dpc) Worker routines:
  1288. //
  1289. typedef
  1290. VOID
  1291. (*PNBT_WORKER_THREAD_ROUTINE)(
  1292. tDGRAM_SEND_TRACKING *pTracker,
  1293. PVOID pClientContext,
  1294. PVOID ClientCompletion,
  1295. tDEVICECONTEXT *pDeviceContext
  1296. );
  1297. //
  1298. // In nbt\hndlrs.c
  1299. //
  1300. VOID
  1301. DelayedAllocLowerConn(
  1302. IN tDGRAM_SEND_TRACKING *pTracker,
  1303. IN PVOID pClientContext,
  1304. IN PVOID ClientCompletion,
  1305. IN tDEVICECONTEXT *pDeviceContext
  1306. );
  1307. VOID
  1308. DelayedAllocLowerConnSpecial(
  1309. IN tDGRAM_SEND_TRACKING *pTracker,
  1310. IN PVOID pClientContext,
  1311. IN PVOID ClientCompletion,
  1312. IN tDEVICECONTEXT *pDeviceContext
  1313. );
  1314. VOID
  1315. DelayedCleanupAfterDisconnect(
  1316. IN tDGRAM_SEND_TRACKING *pTracker,
  1317. IN PVOID pClientContext,
  1318. IN PVOID ClientCompletion,
  1319. IN tDEVICECONTEXT *pDeviceContext
  1320. );
  1321. //
  1322. // In nbt\Inbound.c
  1323. //
  1324. VOID
  1325. ExtractServerNameCompletion(
  1326. IN tDGRAM_SEND_TRACKING *pClientTracker,
  1327. IN NTSTATUS status
  1328. );
  1329. VOID
  1330. CopyNodeStatusResponseCompletion(
  1331. IN tDGRAM_SEND_TRACKING *pTracker,
  1332. IN NTSTATUS status
  1333. );
  1334. //
  1335. // In nbt\Name.c
  1336. //
  1337. VOID
  1338. DelayedReConnect(
  1339. IN tDGRAM_SEND_TRACKING *pTracker,
  1340. IN PVOID pClientContext,
  1341. IN PVOID ClientCompletion,
  1342. IN tDEVICECONTEXT *pDeviceContext
  1343. );
  1344. VOID
  1345. DelayedSendDgramDist (
  1346. IN tDGRAM_SEND_TRACKING *pTracker,
  1347. IN PVOID pClientContext,
  1348. IN PVOID Unused1,
  1349. IN tDEVICECONTEXT *Unused2
  1350. );
  1351. VOID
  1352. DelayedWipeOutLowerconn(
  1353. IN tDGRAM_SEND_TRACKING *pTracker,
  1354. IN PVOID pClientContext,
  1355. IN PVOID ClientCompletion,
  1356. IN tDEVICECONTEXT *pDeviceContext
  1357. );
  1358. //
  1359. // In nbt\NameSrv.c
  1360. //
  1361. VOID
  1362. DelayedNextRefresh(
  1363. IN tDGRAM_SEND_TRACKING *pTracker,
  1364. IN PVOID pClientContext,
  1365. IN PVOID ClientCompletion,
  1366. IN tDEVICECONTEXT *pDeviceContext
  1367. );
  1368. VOID
  1369. DelayedRefreshBegin(
  1370. IN tDGRAM_SEND_TRACKING *pTracker,
  1371. IN PVOID pClientContext,
  1372. IN PVOID ClientCompletion,
  1373. IN tDEVICECONTEXT *pDeviceContext
  1374. );
  1375. VOID
  1376. DelayedSessionKeepAlive(
  1377. IN tDGRAM_SEND_TRACKING *pTracker,
  1378. IN PVOID pClientContext,
  1379. IN PVOID ClientCompletion,
  1380. IN tDEVICECONTEXT *pDeviceContext
  1381. );
  1382. //
  1383. // In nbt\NbtUtils.c
  1384. //
  1385. VOID
  1386. DelayedFreeAddrObj(
  1387. IN tDGRAM_SEND_TRACKING *pTracker,
  1388. IN PVOID pClientContext,
  1389. IN PVOID ClientCompletion,
  1390. IN tDEVICECONTEXT *pDeviceContext
  1391. );
  1392. //
  1393. // In nbt\parse.c
  1394. //
  1395. VOID
  1396. DelayedScanLmHostFile (
  1397. IN tDGRAM_SEND_TRACKING *pTracker,
  1398. IN PVOID pClientContext,
  1399. IN PVOID ClientCompletion,
  1400. IN tDEVICECONTEXT *pDeviceContext
  1401. );
  1402. #ifndef VXD
  1403. //
  1404. // In nt\NtIsol.c
  1405. //
  1406. NTSTATUS
  1407. DelayedNbtProcessConnect(
  1408. IN tDGRAM_SEND_TRACKING *pTracker,
  1409. IN PVOID pClientContext,
  1410. IN PVOID ClientCompletion,
  1411. IN tDEVICECONTEXT *pDeviceContext
  1412. );
  1413. //
  1414. // In nt\NtUtil.c
  1415. //
  1416. VOID
  1417. DelayedNbtDeleteDevice(
  1418. IN tDGRAM_SEND_TRACKING *pTracker,
  1419. IN PVOID pClientContext,
  1420. IN PVOID ClientCompletion,
  1421. IN tDEVICECONTEXT *pDeviceContext
  1422. );
  1423. #endif // !VXD
  1424. #define MIN(x,y) (((x) < (y)) ? (x) : (y))
  1425. #define MAX(x,y) (((x) > (y)) ? (x) : (y))
  1426. int check_unicode_string(IN PUNICODE_STRING str);
  1427. NTSTATUS
  1428. PickBestAddress(
  1429. IN tNAMEADDR *pNameAddr,
  1430. IN tDEVICECONTEXT *pDeviceContext,
  1431. OUT tIPADDRESS *pIpAddress
  1432. );
  1433. #endif // _NBTPROCS_H_