Leaked source code of windows server 2003
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.

569 lines
8.9 KiB

  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 PUNICODE_STRING pusDeviceName,
  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. IN DWORD dwTimeOutinMS
  153. );
  154. PPCB
  155. FindCb(
  156. IN PFCB pfcb,
  157. IN PDNCB pdncb,
  158. IN BOOLEAN IgnoreState
  159. );
  160. NTSTATUS
  161. NbTdiDisconnectHandler (
  162. PVOID EventContext,
  163. PVOID ConnectionContext,
  164. ULONG DisconnectDataLength,
  165. PVOID DisconnectData,
  166. ULONG DisconnectInformationLength,
  167. PVOID DisconnectInformation,
  168. ULONG DisconnectIndicators
  169. );
  170. PPCB
  171. FindCallCb(
  172. IN PFCB pfcb,
  173. IN PNCB pncb,
  174. IN UCHAR ucLana
  175. );
  176. PPCB
  177. FindReceiveIndicated(
  178. IN PFCB pfcb,
  179. IN PDNCB pdncb,
  180. IN PPAB ppab
  181. );
  182. #if DBG
  183. //
  184. // debug.c
  185. //
  186. VOID
  187. NbDisplayNcb(
  188. IN PDNCB pdncb
  189. );
  190. VOID
  191. NbFormattedDump(
  192. PCHAR far_p,
  193. LONG len
  194. );
  195. #endif
  196. //
  197. // devobj.c
  198. //
  199. NTSTATUS
  200. NbCreateDeviceContext(
  201. IN PDRIVER_OBJECT DriverObject,
  202. IN PUNICODE_STRING DeviceName,
  203. IN OUT PDEVICE_CONTEXT *DeviceContext,
  204. IN PUNICODE_STRING RegistryPath
  205. );
  206. //
  207. // error.c
  208. //
  209. unsigned char
  210. NbMakeNbError(
  211. IN NTSTATUS Error
  212. );
  213. NTSTATUS
  214. NbLanStatusAlert(
  215. IN PDNCB pdncb,
  216. IN PIRP Irp,
  217. IN PIO_STACK_LOCATION IrpSp
  218. );
  219. VOID
  220. CancelLanAlert(
  221. IN PFCB pfcb,
  222. IN PDNCB pdncb
  223. );
  224. NTSTATUS
  225. NbTdiErrorHandler (
  226. IN PVOID Context,
  227. IN NTSTATUS Status
  228. );
  229. //
  230. // file.c
  231. //
  232. NTSTATUS
  233. NewFcb(
  234. IN PDEVICE_CONTEXT DeviceContext,
  235. IN PIO_STACK_LOCATION IrpSp
  236. );
  237. VOID
  238. CleanupFcb(
  239. IN PIO_STACK_LOCATION IrpSp,
  240. IN PFCB pfcb
  241. );
  242. VOID
  243. OpenLana(
  244. IN PDNCB pdncb,
  245. IN PIRP Irp,
  246. IN PIO_STACK_LOCATION IrpSp
  247. );
  248. VOID
  249. CleanupLana(
  250. IN PFCB pfcb,
  251. IN ULONG lana_index,
  252. IN BOOLEAN delete
  253. );
  254. VOID
  255. NbBindHandler(
  256. IN TDI_PNP_OPCODE PnpOpcode,
  257. IN PUNICODE_STRING DeviceName,
  258. IN PWSTR MultiSzBindList
  259. );
  260. NTSTATUS
  261. NbPowerHandler(
  262. IN PUNICODE_STRING pusDeviceName,
  263. IN PNET_PNP_EVENT pnpeEvent,
  264. IN PTDI_PNP_CONTEXT ptpcContext1,
  265. IN PTDI_PNP_CONTEXT ptpcContext2
  266. );
  267. VOID
  268. NbTdiBindHandler(
  269. IN PUNICODE_STRING pusDeviceName,
  270. IN PWSTR pwszMultiSZBindList
  271. );
  272. VOID
  273. NbTdiUnbindHandler(
  274. IN PUNICODE_STRING pusDeviceName
  275. );
  276. //
  277. // nb.c
  278. //
  279. NTSTATUS
  280. NbCompletionEvent(
  281. IN PDEVICE_OBJECT DeviceObject,
  282. IN PIRP Irp,
  283. IN PVOID Context
  284. );
  285. NTSTATUS
  286. NbCompletionPDNCB(
  287. IN PDEVICE_OBJECT DeviceObject,
  288. IN PIRP Irp,
  289. IN PVOID Context
  290. );
  291. NTSTATUS
  292. NbClose(
  293. IN PIO_STACK_LOCATION IrpSp
  294. );
  295. VOID
  296. NbDriverUnload(
  297. IN PDRIVER_OBJECT DriverObject
  298. );
  299. NTSTATUS
  300. NbDeviceControl(
  301. IN PDEVICE_OBJECT DeviceObject,
  302. IN PIRP Irp,
  303. IN PIO_STACK_LOCATION IrpSp
  304. );
  305. NTSTATUS
  306. NbDispatch(
  307. IN PDEVICE_OBJECT DeviceObject,
  308. IN PIRP Irp
  309. );
  310. NTSTATUS
  311. NbOpen(
  312. IN PDEVICE_CONTEXT DeviceContext,
  313. IN PIO_STACK_LOCATION IrpSp
  314. );
  315. VOID
  316. QueueRequest(
  317. IN PLIST_ENTRY List,
  318. IN PDNCB pdncb,
  319. IN PIRP Irp,
  320. IN PFCB pfcb,
  321. IN KIRQL OldIrql,
  322. IN BOOLEAN Head);
  323. PDNCB
  324. DequeueRequest(
  325. IN PLIST_ENTRY List
  326. );
  327. NTSTATUS
  328. AllocateAndCopyUnicodeString(
  329. IN OUT PUNICODE_STRING pusDest,
  330. IN PUNICODE_STRING pusSource
  331. );
  332. //
  333. // receive.c
  334. //
  335. NTSTATUS
  336. NbReceive(
  337. IN PDNCB pdncb,
  338. IN PIRP Irp,
  339. IN PIO_STACK_LOCATION IrpSp,
  340. IN ULONG Buffer2Length,
  341. IN BOOLEAN Locked,
  342. IN KIRQL LockedIrql
  343. );
  344. NTSTATUS
  345. NbReceiveAny(
  346. IN PDNCB pdncb,
  347. IN PIRP Irp,
  348. IN PIO_STACK_LOCATION IrpSp,
  349. IN ULONG Buffer2Length
  350. );
  351. NTSTATUS
  352. NbTdiReceiveHandler (
  353. IN PVOID ReceiveEventContext,
  354. IN PVOID ConnectionContext,
  355. IN USHORT ReceiveFlags,
  356. IN ULONG BytesIndicated,
  357. IN ULONG BytesAvailable,
  358. OUT PULONG BytesTaken,
  359. IN PVOID Tsdu,
  360. OUT PIRP *IoRequestPacket
  361. );
  362. PIRP
  363. BuildReceiveIrp (
  364. IN PCB pcb
  365. );
  366. NTSTATUS
  367. NbReceiveDatagram(
  368. IN PDNCB pdncb,
  369. IN PIRP Irp,
  370. IN PIO_STACK_LOCATION IrpSp,
  371. IN ULONG Buffer2Length
  372. );
  373. NTSTATUS
  374. NbTdiDatagramHandler(
  375. IN PVOID TdiEventContext, // the event context - pab
  376. IN int SourceAddressLength, // length of the originator of the datagram
  377. IN PVOID SourceAddress, // string describing the originator of the datagram
  378. IN int OptionsLength, // options for the receive
  379. IN PVOID Options, //
  380. IN ULONG ReceiveDatagramFlags, //
  381. IN ULONG BytesIndicated, // number of bytes this indication
  382. IN ULONG BytesAvailable, // number of bytes in complete Tsdu
  383. OUT ULONG *BytesTaken, // number of bytes used
  384. IN PVOID Tsdu, // pointer describing this TSDU, typically a lump of bytes
  385. OUT PIRP *IoRequestPacket // TdiReceive IRP if MORE_PROCESSING_REQUIRED.
  386. );
  387. //
  388. // registry.c
  389. //
  390. CCHAR
  391. GetIrpStackSize(
  392. IN PUNICODE_STRING RegistryPath,
  393. IN CCHAR DefaultValue
  394. );
  395. NTSTATUS
  396. ReadRegistry(
  397. IN PUNICODE_STRING pucRegistryPath,
  398. IN PFCB NewFcb,
  399. IN BOOLEAN bCreateDevice
  400. );
  401. NTSTATUS
  402. GetLanaMap(
  403. IN PUNICODE_STRING pusRegistryPath,
  404. IN OUT PKEY_VALUE_FULL_INFORMATION * ppkvfi
  405. );
  406. NTSTATUS
  407. GetMaxLana(
  408. IN PUNICODE_STRING pusRegistryPath,
  409. IN OUT PULONG pulMaxLana
  410. );
  411. VOID
  412. NbFreeRegistryInfo (
  413. IN PFCB pfcb
  414. );
  415. BOOLEAN
  416. NbCheckLana (
  417. PUNICODE_STRING DeviceName
  418. );
  419. //
  420. // send.c
  421. //
  422. NTSTATUS
  423. NbSend(
  424. IN PDNCB pdncb,
  425. IN PIRP Irp,
  426. IN PIO_STACK_LOCATION IrpSp,
  427. IN ULONG Buffer2Length
  428. );
  429. NTSTATUS
  430. NbSendDatagram(
  431. IN PDNCB pdncb,
  432. IN PIRP Irp,
  433. IN PIO_STACK_LOCATION IrpSp,
  434. IN ULONG Buffer2Length
  435. );
  436. //
  437. // timer.c
  438. //
  439. VOID
  440. NbStartTimer(
  441. IN PFCB pfcb
  442. );
  443. VOID
  444. NbTimerDPC(
  445. IN PKDPC Dpc,
  446. IN PVOID Context,
  447. IN PVOID SystemArgument1,
  448. IN PVOID SystemArgument2
  449. );
  450. VOID
  451. NbTimer(
  452. PDEVICE_OBJECT DeviceObject,
  453. PVOID Context
  454. ) ;
  455. #if defined(_WIN64)
  456. //
  457. // nb32.c
  458. //
  459. NTSTATUS
  460. NbThunkNcb(
  461. IN PNCB32 Ncb32,
  462. OUT PDNCB Dncb);
  463. NTSTATUS
  464. NbCompleteIrp32(
  465. IN OUT PIRP Irp
  466. );
  467. #endif