Windows NT 4.0 source code leak
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.

489 lines
7.0 KiB

4 years ago
  1. /*++
  2. Copyright (c) 1989 Microsoft Corporation
  3. Module Name:
  4. nbprocs.h
  5. Abstract:
  6. Private include file for the NB (NetBIOS) component of the NTOS project.
  7. Author:
  8. Colin Watson (ColinW) 13-Mar-1991
  9. Revision History:
  10. --*/
  11. //
  12. // address.c
  13. //
  14. NTSTATUS
  15. NbSetEventHandler (
  16. IN PDEVICE_OBJECT DeviceObject,
  17. IN PFILE_OBJECT FileObject,
  18. IN ULONG EventType,
  19. IN PVOID EventHandler,
  20. IN PVOID Context
  21. );
  22. NTSTATUS
  23. NbAddName(
  24. IN PDNCB pdncb,
  25. IN PIO_STACK_LOCATION IrpSp
  26. );
  27. NTSTATUS
  28. NbDeleteName(
  29. IN PDNCB pdncb,
  30. IN PIO_STACK_LOCATION IrpSp
  31. );
  32. NTSTATUS
  33. NbOpenAddress (
  34. OUT PHANDLE FileHandle,
  35. OUT PVOID *Object,
  36. IN PFCB pfcb,
  37. IN UCHAR LanNumber,
  38. IN PDNCB pdncb OPTIONAL
  39. );
  40. PAB
  41. NewAb(
  42. IN PIO_STACK_LOCATION IrpSp,
  43. IN PDNCB pdncb
  44. );
  45. VOID
  46. CleanupAb(
  47. IN PPAB ppab,
  48. IN BOOLEAN CloseAddress
  49. );
  50. VOID
  51. NbAddressClose(
  52. IN HANDLE AddressHandle,
  53. IN PVOID Object
  54. );
  55. PPAB
  56. FindAb(
  57. IN PFCB pfcb,
  58. IN PDNCB pdncb,
  59. IN BOOLEAN IncrementUsers
  60. );
  61. PPAB
  62. FindAbUsingNum(
  63. IN PFCB pfcb,
  64. IN PDNCB pdncb,
  65. IN UCHAR NameNumber
  66. );
  67. BOOL
  68. FindActiveSession(
  69. IN PFCB pfcb,
  70. IN PDNCB pdncb,
  71. IN PPAB ppab
  72. );
  73. VOID
  74. CloseListens(
  75. IN PFCB pfcb,
  76. IN PPAB ppab
  77. );
  78. NTSTATUS
  79. SubmitTdiRequest (
  80. IN PFILE_OBJECT FileObject,
  81. IN PIRP Irp
  82. );
  83. //
  84. // connect.c
  85. //
  86. NTSTATUS
  87. NbCall(
  88. IN PDNCB pdncb,
  89. IN PIRP Irp,
  90. IN PIO_STACK_LOCATION IrpSp
  91. );
  92. NTSTATUS
  93. NbCallCompletion(
  94. IN PDEVICE_OBJECT DeviceObject,
  95. IN PIRP Irp,
  96. IN PVOID Context
  97. );
  98. NTSTATUS
  99. NbListen(
  100. IN PDNCB pdncb,
  101. IN PIRP Irp,
  102. IN PIO_STACK_LOCATION IrpSp
  103. );
  104. NTSTATUS
  105. NbListenCompletion(
  106. IN PDEVICE_OBJECT DeviceObject,
  107. IN PIRP Irp,
  108. IN PVOID Context
  109. );
  110. NTSTATUS
  111. NbAcceptCompletion(
  112. IN PDEVICE_OBJECT DeviceObject,
  113. IN PIRP Irp,
  114. IN PVOID Context
  115. );
  116. PPCB
  117. NbCallCommon(
  118. IN PDNCB pdncb,
  119. IN PIO_STACK_LOCATION IrpSp
  120. );
  121. NTSTATUS
  122. NbHangup(
  123. IN PDNCB pdncb,
  124. IN PIRP Irp,
  125. IN PIO_STACK_LOCATION IrpSp
  126. );
  127. NTSTATUS
  128. NbOpenConnection (
  129. OUT PHANDLE FileHandle,
  130. OUT PVOID *Object,
  131. IN PFCB pfcb,
  132. IN PVOID ConnectionContext,
  133. IN PDNCB pdncb
  134. );
  135. PPCB
  136. NewCb(
  137. IN PIO_STACK_LOCATION IrpSp,
  138. IN OUT PDNCB pdncb
  139. );
  140. NTSTATUS
  141. CleanupCb(
  142. IN PPCB ppcb,
  143. IN PDNCB pdncb OPTIONAL
  144. );
  145. VOID
  146. AbandonConnection(
  147. IN PPCB ppcb
  148. );
  149. VOID
  150. CloseConnection(
  151. IN PPCB ppcb
  152. );
  153. PPCB
  154. FindCb(
  155. IN PFCB pfcb,
  156. IN PDNCB pdncb,
  157. IN BOOLEAN IgnoreState
  158. );
  159. NTSTATUS
  160. NbTdiDisconnectHandler (
  161. PVOID EventContext,
  162. PVOID ConnectionContext,
  163. ULONG DisconnectDataLength,
  164. PVOID DisconnectData,
  165. ULONG DisconnectInformationLength,
  166. PVOID DisconnectInformation,
  167. ULONG DisconnectIndicators
  168. );
  169. PPCB
  170. FindCallCb(
  171. IN PFCB pfcb,
  172. IN PNCB pncb
  173. );
  174. PPCB
  175. FindReceiveIndicated(
  176. IN PFCB pfcb,
  177. IN PDNCB pdncb,
  178. IN PPAB ppab
  179. );
  180. #if DBG
  181. //
  182. // debug.c
  183. //
  184. VOID
  185. NbDisplayNcb(
  186. IN PDNCB pdncb
  187. );
  188. VOID
  189. NbFormattedDump(
  190. PCHAR far_p,
  191. LONG len
  192. );
  193. #endif
  194. //
  195. // devobj.c
  196. //
  197. NTSTATUS
  198. NbCreateDeviceContext(
  199. IN PDRIVER_OBJECT DriverObject,
  200. IN PUNICODE_STRING DeviceName,
  201. IN OUT PDEVICE_CONTEXT *DeviceContext,
  202. IN PUNICODE_STRING RegistryPath
  203. );
  204. //
  205. // error.c
  206. //
  207. unsigned char
  208. NbMakeNbError(
  209. IN NTSTATUS Error
  210. );
  211. NTSTATUS
  212. NbLanStatusAlert(
  213. IN PDNCB pdncb,
  214. IN PIRP Irp,
  215. IN PIO_STACK_LOCATION IrpSp
  216. );
  217. VOID
  218. CancelLanAlert(
  219. IN PFCB pfcb,
  220. IN PDNCB pdncb
  221. );
  222. NTSTATUS
  223. NbTdiErrorHandler (
  224. IN PVOID Context,
  225. IN NTSTATUS Status
  226. );
  227. //
  228. // file.c
  229. //
  230. NTSTATUS
  231. NewFcb(
  232. IN PDEVICE_CONTEXT DeviceContext,
  233. IN PIO_STACK_LOCATION IrpSp
  234. );
  235. VOID
  236. CleanupFcb(
  237. IN PIO_STACK_LOCATION IrpSp,
  238. IN PFCB pfcb
  239. );
  240. VOID
  241. OpenLana(
  242. IN PDNCB pdncb,
  243. IN PIRP Irp,
  244. IN PIO_STACK_LOCATION IrpSp
  245. );
  246. VOID
  247. CleanupLana(
  248. IN PFCB pfcb,
  249. IN ULONG lana_index,
  250. IN BOOLEAN delete
  251. );
  252. //
  253. // nb.c
  254. //
  255. NTSTATUS
  256. NbCompletionEvent(
  257. IN PDEVICE_OBJECT DeviceObject,
  258. IN PIRP Irp,
  259. IN PVOID Context
  260. );
  261. NTSTATUS
  262. NbCompletionPDNCB(
  263. IN PDEVICE_OBJECT DeviceObject,
  264. IN PIRP Irp,
  265. IN PVOID Context
  266. );
  267. NTSTATUS
  268. NbClose(
  269. IN PIO_STACK_LOCATION IrpSp
  270. );
  271. NTSTATUS
  272. NbDeviceControl(
  273. IN PDEVICE_OBJECT DeviceObject,
  274. IN PIRP Irp,
  275. IN PIO_STACK_LOCATION IrpSp
  276. );
  277. NTSTATUS
  278. NbDispatch(
  279. IN PDEVICE_OBJECT DeviceObject,
  280. IN PIRP Irp
  281. );
  282. NTSTATUS
  283. NbOpen(
  284. IN PDEVICE_CONTEXT DeviceContext,
  285. IN PIO_STACK_LOCATION IrpSp
  286. );
  287. VOID
  288. QueueRequest(
  289. IN PLIST_ENTRY List,
  290. IN PDNCB pdncb,
  291. IN PIRP Irp,
  292. IN PFCB pfcb,
  293. IN KIRQL OldIrql,
  294. IN BOOLEAN Head);
  295. PDNCB
  296. DequeueRequest(
  297. IN PLIST_ENTRY List
  298. );
  299. //
  300. // receive.c
  301. //
  302. NTSTATUS
  303. NbReceive(
  304. IN PDNCB pdncb,
  305. IN PIRP Irp,
  306. IN PIO_STACK_LOCATION IrpSp,
  307. IN ULONG Buffer2Length,
  308. IN BOOLEAN Locked,
  309. IN KIRQL LockedIrql
  310. );
  311. NTSTATUS
  312. NbReceiveAny(
  313. IN PDNCB pdncb,
  314. IN PIRP Irp,
  315. IN PIO_STACK_LOCATION IrpSp,
  316. IN ULONG Buffer2Length
  317. );
  318. NTSTATUS
  319. NbTdiReceiveHandler (
  320. IN PVOID ReceiveEventContext,
  321. IN PVOID ConnectionContext,
  322. IN USHORT ReceiveFlags,
  323. IN ULONG BytesIndicated,
  324. IN ULONG BytesAvailable,
  325. OUT PULONG BytesTaken,
  326. IN PVOID Tsdu,
  327. OUT PIRP *IoRequestPacket
  328. );
  329. PIRP
  330. BuildReceiveIrp (
  331. IN PCB pcb
  332. );
  333. NTSTATUS
  334. NbReceiveDatagram(
  335. IN PDNCB pdncb,
  336. IN PIRP Irp,
  337. IN PIO_STACK_LOCATION IrpSp,
  338. IN ULONG Buffer2Length
  339. );
  340. NTSTATUS
  341. NbTdiDatagramHandler(
  342. IN PVOID TdiEventContext, // the event context - pab
  343. IN int SourceAddressLength, // length of the originator of the datagram
  344. IN PVOID SourceAddress, // string describing the originator of the datagram
  345. IN int OptionsLength, // options for the receive
  346. IN PVOID Options, //
  347. IN ULONG ReceiveDatagramFlags, //
  348. IN ULONG BytesIndicated, // number of bytes this indication
  349. IN ULONG BytesAvailable, // number of bytes in complete Tsdu
  350. OUT ULONG *BytesTaken, // number of bytes used
  351. IN PVOID Tsdu, // pointer describing this TSDU, typically a lump of bytes
  352. OUT PIRP *IoRequestPacket // TdiReceive IRP if MORE_PROCESSING_REQUIRED.
  353. );
  354. //
  355. // registry.c
  356. //
  357. CCHAR
  358. GetIrpStackSize(
  359. IN PUNICODE_STRING RegistryPath,
  360. IN CCHAR DefaultValue
  361. );
  362. NTSTATUS
  363. ReadRegistry(
  364. IN PDEVICE_CONTEXT DeviceContext,
  365. IN PFCB NewFcb
  366. );
  367. VOID
  368. NbFreeRegistryInfo (
  369. IN PFCB pfcb
  370. );
  371. //
  372. // send.c
  373. //
  374. NTSTATUS
  375. NbSend(
  376. IN PDNCB pdncb,
  377. IN PIRP Irp,
  378. IN PIO_STACK_LOCATION IrpSp,
  379. IN ULONG Buffer2Length
  380. );
  381. NTSTATUS
  382. NbSendDatagram(
  383. IN PDNCB pdncb,
  384. IN PIRP Irp,
  385. IN PIO_STACK_LOCATION IrpSp,
  386. IN ULONG Buffer2Length
  387. );
  388. //
  389. // timer.c
  390. //
  391. VOID
  392. NbStartTimer(
  393. IN PFCB pfcb
  394. );
  395. VOID
  396. NbTimerDPC(
  397. IN PKDPC Dpc,
  398. IN PVOID Context,
  399. IN PVOID SystemArgument1,
  400. IN PVOID SystemArgument2
  401. );
  402. VOID
  403. NbTimer(
  404. PVOID Context
  405. ) ;