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.

1703 lines
37 KiB

  1. /*++
  2. Copyright (c) 1989 - 1999 Microsoft Corporation
  3. Module Name:
  4. smbprocs.h
  5. Abstract:
  6. Prototypes for routines that cross protocol-selection boundaries
  7. --*/
  8. #ifndef _SMBPROCS_H_
  9. #define _SMBPROCS_H_
  10. #include "tdikrnl.h"
  11. //cross-referenced internal routines
  12. //from rename.c
  13. MRxSmbRename(
  14. IN PRX_CONTEXT RxContext
  15. );
  16. //from openclos.c
  17. NTSTATUS
  18. MRxSmbBuildClose (
  19. PSMBSTUFFER_BUFFER_STATE StufferState
  20. );
  21. NTSTATUS
  22. MRxSmbBuildFindClose (
  23. PSMBSTUFFER_BUFFER_STATE StufferState
  24. );
  25. PSMBCE_TRANSPORT
  26. SmbCeFindTransport(
  27. PUNICODE_STRING pTransportName);
  28. //paged internal routines
  29. NTSTATUS
  30. MRxSmbGetStatistics(
  31. IN OUT PRX_CONTEXT RxContext
  32. );
  33. NTSTATUS
  34. MRxSmbDevFcbXXXControlFile (
  35. IN OUT PRX_CONTEXT RxContext
  36. );
  37. NTSTATUS
  38. MRxSmbQueryEaInformation (
  39. IN OUT PRX_CONTEXT RxContext
  40. );
  41. NTSTATUS
  42. MRxSmbSetEaInformation (
  43. IN OUT struct _RX_CONTEXT * RxContext
  44. );
  45. NTSTATUS
  46. MRxSmbQuerySecurityInformation (
  47. IN OUT PRX_CONTEXT RxContext
  48. );
  49. NTSTATUS
  50. MRxSmbSetSecurityInformation (
  51. IN OUT struct _RX_CONTEXT * RxContext
  52. );
  53. NTSTATUS
  54. MRxSmbQueryQuotaInformation (
  55. IN OUT PRX_CONTEXT RxContext
  56. );
  57. NTSTATUS
  58. MRxSmbSetQuotaInformation (
  59. IN OUT struct _RX_CONTEXT * RxContext
  60. );
  61. NTSTATUS
  62. MRxSmbLoadEaList(
  63. IN PRX_CONTEXT RxContext,
  64. IN PUCHAR UserEaList,
  65. IN ULONG UserEaListLength,
  66. OUT PFEALIST *ServerEaList
  67. );
  68. VOID
  69. MRxSmbNtGeaListToOs2 (
  70. IN PFILE_GET_EA_INFORMATION NtGetEaList,
  71. IN ULONG GeaListLength,
  72. IN PGEALIST GeaList
  73. );
  74. PGEA
  75. MRxSmbNtGetEaToOs2 (
  76. OUT PGEA Gea,
  77. IN PFILE_GET_EA_INFORMATION NtGetEa
  78. );
  79. NTSTATUS
  80. MRxSmbQueryEasFromServer(
  81. IN PRX_CONTEXT RxContext,
  82. IN PFEALIST ServerEaList,
  83. IN PVOID Buffer,
  84. IN OUT PULONG BufferLengthRemaining,
  85. IN BOOLEAN ReturnSingleEntry,
  86. IN BOOLEAN UserEaListSupplied
  87. );
  88. ULONG
  89. MRxSmbNtFullEaSizeToOs2 (
  90. IN PFILE_FULL_EA_INFORMATION NtFullEa
  91. );
  92. VOID
  93. MRxSmbNtFullListToOs2 (
  94. IN PFILE_FULL_EA_INFORMATION NtEaList,
  95. IN PFEALIST FeaList
  96. );
  97. PVOID
  98. MRxSmbNtFullEaToOs2 (
  99. OUT PFEA Fea,
  100. IN PFILE_FULL_EA_INFORMATION NtFullEa
  101. );
  102. NTSTATUS
  103. MRxSmbSetEaList(
  104. IN PRX_CONTEXT RxContext,
  105. IN PFEALIST ServerEaList
  106. );
  107. NTSTATUS
  108. MRxSmbCreateFileSuccessTail (
  109. PRX_CONTEXT RxContext,
  110. PBOOLEAN MustRegainExclusiveResource,
  111. RX_FILE_TYPE StorageType,
  112. SMB_FILE_ID Fid,
  113. ULONG ServerVersion,
  114. UCHAR OplockLevel,
  115. ULONG CreateAction,
  116. PSMBPSE_FILEINFO_BUNDLE FileInfo
  117. );
  118. NTSTATUS
  119. SmbConstructNetRootExchangeFinalize(
  120. PSMB_EXCHANGE pExchange,
  121. BOOLEAN *pPostFinalize);
  122. VOID
  123. __MRxSmbAllocateSideBuffer(
  124. IN OUT PRX_CONTEXT RxContext,
  125. IN OUT PMRX_SMB_FOBX smbFobx,
  126. IN USHORT Setup
  127. #if DBG
  128. ,IN PUNICODE_STRING smbtemplate
  129. #endif
  130. );
  131. VOID
  132. MRxSmbDeallocateSideBuffer(
  133. IN OUT PRX_CONTEXT RxContext,
  134. IN OUT PMRX_SMB_FOBX smbFobx,
  135. IN PSZ where
  136. );
  137. VOID
  138. MRxSmbTranslateLanManFindBuffer(
  139. PRX_CONTEXT RxContext,
  140. PULONG PreviousReturnedEntry,
  141. PBYTE ThisEntryInBuffer
  142. );
  143. NTSTATUS
  144. MrxSmbUnalignedDirEntryCopyTail(
  145. IN OUT PRX_CONTEXT RxContext,
  146. IN FILE_INFORMATION_CLASS FileInformationClass,
  147. IN OUT PVOID pBuffer,
  148. IN OUT PULONG pLengthRemaining,
  149. IN OUT PMRX_SMB_FOBX smbFobx
  150. );
  151. NTSTATUS
  152. MRxSmbQueryDirectory(
  153. IN OUT PRX_CONTEXT RxContext
  154. );
  155. NTSTATUS
  156. MRxSmbQueryVolumeInformation(
  157. IN OUT PRX_CONTEXT RxContext
  158. );
  159. NTSTATUS
  160. MRxSmbQueryVolumeInformationWithFullBuffer(
  161. IN OUT PRX_CONTEXT RxContext
  162. );
  163. NTSTATUS
  164. MRxSmbSetVolumeInformation(
  165. IN OUT PRX_CONTEXT pRxContext
  166. );
  167. NTSTATUS
  168. MRxSmbSetFileInformation (
  169. IN PRX_CONTEXT RxContext
  170. );
  171. NTSTATUS
  172. MRxSmbSetFileInformationAtCleanup(
  173. IN PRX_CONTEXT RxContext
  174. );
  175. NTSTATUS
  176. MRxSmbIsValidDirectory(
  177. IN OUT PRX_CONTEXT RxContext,
  178. IN PUNICODE_STRING DirectoryName
  179. );
  180. NTSTATUS
  181. MRxSmbFabricateAttributesOnNetRoot(
  182. IN OUT PSMBCE_NET_ROOT psmbNetRoot,
  183. IN PSMBCE_SERVER pServer
  184. );
  185. NTSTATUS
  186. MRxSmbCoreInformation(
  187. IN OUT PRX_CONTEXT RxContext,
  188. IN ULONG InformationClass,
  189. IN OUT PVOID pBuffer,
  190. IN OUT PULONG pBufferLength,
  191. IN SMB_PSE_ORDINARY_EXCHANGE_ENTRYPOINTS EntryPoint
  192. );
  193. NTSTATUS
  194. MRxSmbLoadCoreFileSearchBuffer(
  195. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  196. );
  197. VOID MRxSmbCoreFileSeach_AssertFields(void);
  198. NTSTATUS
  199. MRxSmbCoreFileSearch(
  200. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  201. );
  202. NTSTATUS
  203. MrxSmbOemVolumeInfoToUnicode(
  204. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  205. ULONG *VolumeLabelLengthReturned
  206. );
  207. MrxSmbCoreQueryFsVolumeInfo(
  208. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  209. );
  210. NTSTATUS
  211. MrxSmbQueryFsVolumeInfo(
  212. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  213. );
  214. NTSTATUS
  215. MrxSmbCoreQueryDiskAttributes(
  216. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  217. );
  218. NTSTATUS
  219. MrxSmbQueryDiskAttributes(
  220. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  221. );
  222. NTSTATUS
  223. SmbPseExchangeStart_CoreInfo(
  224. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  225. );
  226. NTSTATUS
  227. MRxSmbFinishSearch (
  228. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  229. PRESP_SEARCH Response
  230. );
  231. NTSTATUS
  232. MRxSmbFinishQueryDiskInfo (
  233. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  234. PRESP_QUERY_INFORMATION_DISK Response
  235. );
  236. NTSTATUS
  237. MRxSmbExtendForCache(
  238. IN OUT struct _RX_CONTEXT * RxContext,
  239. IN PLARGE_INTEGER pNewFileSize,
  240. OUT PLARGE_INTEGER pNewAllocationSize
  241. );
  242. NTSTATUS
  243. MRxSmbExtendForNonCache(
  244. IN OUT struct _RX_CONTEXT * RxContext,
  245. IN PLARGE_INTEGER pNewFileSize,
  246. OUT PLARGE_INTEGER pNewAllocationSize
  247. );
  248. NTSTATUS
  249. MRxSmbGetNtAllocationInfo (
  250. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  251. );
  252. NTSTATUS
  253. __MRxSmbSimpleSyncTransact2(
  254. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  255. IN SMB_PSE_ORDINARY_EXCHANGE_TYPE OEType,
  256. IN ULONG TransactSetupCode,
  257. IN PVOID Params,
  258. IN ULONG ParamsLength,
  259. IN PVOID Data,
  260. IN ULONG DataLength,
  261. IN PSMB_PSE_OE_T2_FIXUP_ROUTINE FixupRoutine
  262. );
  263. NTSTATUS
  264. MRxSmbFinishTransaction2 (
  265. IN OUT PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  266. IN PRESP_TRANSACTION Response
  267. );
  268. NTSTATUS
  269. MRxSmbFsCtl(
  270. IN OUT PRX_CONTEXT RxContext);
  271. NTSTATUS
  272. MRxSmbNotifyChangeDirectory(
  273. IN OUT PRX_CONTEXT RxContext);
  274. NTSTATUS
  275. MRxSmbIoCtl(
  276. IN OUT PRX_CONTEXT RxContext);
  277. NTSTATUS
  278. DriverEntry(
  279. IN PDRIVER_OBJECT DriverObject,
  280. IN PUNICODE_STRING RegistryPath
  281. );
  282. VOID
  283. MRxSmbInitUnwind(
  284. IN PDRIVER_OBJECT DriverObject,
  285. IN enum _MRXSMB_INIT_STATES MRxSmbInitState
  286. );
  287. VOID
  288. MRxSmbUnload(
  289. IN PDRIVER_OBJECT DriverObject
  290. );
  291. NTSTATUS
  292. MRxSmbStart(
  293. PRX_CONTEXT RxContext,
  294. IN OUT PRDBSS_DEVICE_OBJECT RxDeviceObject
  295. );
  296. NTSTATUS
  297. MRxSmbStop(
  298. PRX_CONTEXT RxContext,
  299. IN OUT PRDBSS_DEVICE_OBJECT RxDeviceObject
  300. );
  301. NTSTATUS
  302. MRxSmbInitializeSecurity (VOID);
  303. NTSTATUS
  304. MRxSmbUninitializeSecurity(VOID);
  305. NTSTATUS
  306. SmbCeGetConfigurationInformation();
  307. NTSTATUS
  308. MRxSmbFsdDispatch (
  309. IN PDEVICE_OBJECT DeviceObject,
  310. IN PIRP Irp
  311. );
  312. NTSTATUS
  313. MRxSmbDeallocateForFcb (
  314. IN OUT PMRX_FCB pFcb
  315. );
  316. NTSTATUS
  317. MRxSmbDeallocateForFobx (
  318. IN OUT PMRX_FOBX pFobx
  319. );
  320. NTSTATUS
  321. MRxSmbGetUlongRegistryParameter(
  322. HANDLE ParametersHandle,
  323. PWCHAR ParameterName,
  324. PULONG ParamUlong,
  325. BOOLEAN LogFailure
  326. );
  327. NTSTATUS
  328. MRxSmbInitializeTables(void);
  329. NTSTATUS
  330. MRxSmbLocks(
  331. IN PRX_CONTEXT RxContext);
  332. NTSTATUS
  333. MRxSmbBuildLocksAndX (
  334. PSMBSTUFFER_BUFFER_STATE StufferState);
  335. NTSTATUS
  336. MRxSmbBuildLockAssert (
  337. PSMBSTUFFER_BUFFER_STATE StufferState
  338. );
  339. NTSTATUS
  340. SmbPseExchangeStart_Locks(
  341. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  342. );
  343. NTSTATUS
  344. MRxSmbFinishLocks (
  345. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  346. PRESP_LOCKING_ANDX Response
  347. );
  348. NTSTATUS
  349. MRxSmbUnlockRoutine (
  350. IN PRX_CONTEXT RxContext,
  351. IN PFILE_LOCK_INFO LockInfo
  352. );
  353. NTSTATUS
  354. MRxSmbCompleteBufferingStateChangeRequest(
  355. IN OUT PRX_CONTEXT RxContext,
  356. IN OUT PMRX_SRV_OPEN SrvOpen,
  357. IN PVOID pContext
  358. );
  359. NTSTATUS
  360. MRxSmbBuildFlush (
  361. PSMBSTUFFER_BUFFER_STATE StufferState
  362. );
  363. NTSTATUS
  364. MRxSmbFlush(
  365. IN PRX_CONTEXT RxContext);
  366. NTSTATUS
  367. MRxSmbIsLockRealizable (
  368. IN OUT PMRX_FCB pFcb,
  369. IN PLARGE_INTEGER ByteOffset,
  370. IN PLARGE_INTEGER Length,
  371. IN ULONG LowIoLockFlags
  372. );
  373. NTSTATUS
  374. MRxSmbFinishFlush (
  375. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  376. PRESP_FLUSH Response
  377. );
  378. VOID
  379. _InitializeMidMapFreeList(struct _MID_MAP_ *pMidMap);
  380. PMID_ATLAS
  381. FsRtlCreateMidAtlas(
  382. USHORT MaximumNumberOfMids,
  383. USHORT MidsAllocatedAtStart);
  384. VOID
  385. _UninitializeMidMap(
  386. struct _MID_MAP_ *pMidMap,
  387. PCONTEXT_DESTRUCTOR pContextDestructor);
  388. VOID
  389. FsRtlDestroyMidAtlas(
  390. PMID_ATLAS pMidAtlas,
  391. PCONTEXT_DESTRUCTOR pContextDestructor);
  392. NTSTATUS
  393. BuildSessionSetupSecurityInformation(
  394. PSMB_EXCHANGE pExchange,
  395. PBYTE pSmbBuffer,
  396. PULONG pSmbBufferSize);
  397. NTSTATUS
  398. BuildTreeConnectSecurityInformation(
  399. PSMB_EXCHANGE pExchange,
  400. PBYTE pBuffer,
  401. PBYTE pPasswordLength,
  402. PULONG pSmbBufferSize);
  403. VOID
  404. MRxSmbMungeBufferingIfWriteOnlyHandles (
  405. ULONG WriteOnlySrvOpenCount,
  406. PMRX_SRV_OPEN SrvOpen
  407. );
  408. BOOLEAN
  409. IsReconnectRequired(
  410. PMRX_SRV_CALL SrvCall);
  411. BOOLEAN
  412. MRxSmbIsCreateWithEasSidsOrLongName(
  413. IN OUT PRX_CONTEXT RxContext,
  414. OUT PULONG DialectFlags
  415. );
  416. NTSTATUS
  417. MRxSmbShouldTryToCollapseThisOpen (
  418. IN PRX_CONTEXT RxContext
  419. );
  420. NTSTATUS
  421. MRxSmbCreate (
  422. IN OUT PRX_CONTEXT RxContext
  423. );
  424. NTSTATUS
  425. MRxSmbDeferredCreate (
  426. IN OUT PRX_CONTEXT RxContext
  427. );
  428. NTSTATUS
  429. MRxSmbCollapseOpen(
  430. IN OUT PRX_CONTEXT RxContext
  431. );
  432. NTSTATUS
  433. MRxSmbComputeNewBufferingState(
  434. IN OUT PMRX_SRV_OPEN pMRxSrvOpen,
  435. IN PVOID pMRxContext,
  436. OUT PULONG pNewBufferingState);
  437. NTSTATUS
  438. MRxSmbConstructDeferredOpenContext (
  439. IN OUT PRX_CONTEXT RxContext
  440. );
  441. VOID
  442. MRxSmbAdjustCreateParameters (
  443. PRX_CONTEXT RxContext,
  444. PMRXSMB_CREATE_PARAMETERS smbcp
  445. );
  446. VOID
  447. MRxSmbAdjustReturnedCreateAction(
  448. IN OUT PRX_CONTEXT RxContext
  449. );
  450. NTSTATUS
  451. MRxSmbBuildNtCreateAndX (
  452. PSMBSTUFFER_BUFFER_STATE StufferState,
  453. PMRXSMB_CREATE_PARAMETERS smbcp
  454. );
  455. NTSTATUS
  456. MRxSmbBuildOpenAndX (
  457. PSMBSTUFFER_BUFFER_STATE StufferState,
  458. PMRXSMB_CREATE_PARAMETERS smbcp
  459. );
  460. NTSTATUS
  461. SmbPseExchangeStart_Create(
  462. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  463. );
  464. VOID
  465. MRxSmbSetSrvOpenFlags (
  466. PRX_CONTEXT RxContext,
  467. RX_FILE_TYPE StorageType,
  468. PMRX_SRV_OPEN SrvOpen,
  469. PMRX_SMB_SRV_OPEN smbSrvOpen
  470. );
  471. NTSTATUS
  472. MRxSmbCreateFileSuccessTail (
  473. PRX_CONTEXT RxContext,
  474. PBOOLEAN MustRegainExclusiveResource,
  475. RX_FILE_TYPE StorageType,
  476. SMB_FILE_ID Fid,
  477. ULONG ServerVersion,
  478. UCHAR OplockLevel,
  479. ULONG CreateAction,
  480. PSMBPSE_FILEINFO_BUNDLE FileInfo
  481. );
  482. NTSTATUS
  483. MRxSmbFinishNTCreateAndX (
  484. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  485. PRESP_NT_CREATE_ANDX Response
  486. );
  487. NTSTATUS
  488. MRxSmbFinishOpenAndX (
  489. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  490. PRESP_OPEN_ANDX Response
  491. );
  492. NTSTATUS
  493. MRxSmbFinishT2OpenFile (
  494. IN OUT PRX_CONTEXT RxContext,
  495. IN PRESP_OPEN2 Response,
  496. IN OUT PBOOLEAN MustRegainExclusiveResource,
  497. IN ULONG ServerVersion
  498. );
  499. NTSTATUS
  500. MRxSmbT2OpenFile(
  501. IN OUT PRX_CONTEXT RxContext
  502. );
  503. NTSTATUS
  504. MRxSmbFinishLongNameCreateFile (
  505. IN OUT PRX_CONTEXT RxContext,
  506. IN PRESP_CREATE_WITH_SD_OR_EA Response,
  507. IN PBOOLEAN MustRegainExclusiveResource,
  508. IN ULONG ServerVersion
  509. );
  510. NTSTATUS
  511. MRxSmbCreateWithEasSidsOrLongName(
  512. IN OUT PRX_CONTEXT RxContext
  513. );
  514. NTSTATUS
  515. MRxSmbZeroExtend(
  516. IN PRX_CONTEXT pRxContext);
  517. NTSTATUS
  518. MRxSmbTruncate(
  519. IN PRX_CONTEXT pRxContext);
  520. NTSTATUS
  521. MRxSmbCleanupFobx(
  522. IN PRX_CONTEXT RxContext);
  523. NTSTATUS
  524. MRxSmbForcedClose(
  525. IN PMRX_SRV_OPEN pSrvOpen);
  526. NTSTATUS
  527. MRxSmbCloseSrvOpen(
  528. IN PRX_CONTEXT RxContext
  529. );
  530. NTSTATUS
  531. MRxSmbBuildClose (
  532. PSMBSTUFFER_BUFFER_STATE StufferState
  533. );
  534. NTSTATUS
  535. MRxSmbBuildFindClose (
  536. PSMBSTUFFER_BUFFER_STATE StufferState
  537. );
  538. NTSTATUS
  539. SmbPseExchangeStart_Close(
  540. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  541. );
  542. NTSTATUS
  543. MRxSmbFinishClose (
  544. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  545. PRESP_CLOSE Response
  546. );
  547. NTSTATUS
  548. MRxSmbGetFileAttributes(
  549. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  550. );
  551. NTSTATUS
  552. MRxSmbCoreDeleteForSupercedeOrClose(
  553. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  554. BOOLEAN DeleteDirectory
  555. );
  556. NTSTATUS
  557. MRxSmbCoreCheckPath(
  558. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  559. );
  560. NTSTATUS
  561. MRxSmbCoreOpen(
  562. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  563. ULONG OpenShareMode,
  564. ULONG Attribute
  565. );
  566. NTSTATUS
  567. MRxSmbSetFileAttributes(
  568. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  569. ULONG SmbAttributes
  570. );
  571. NTSTATUS
  572. MRxSmbCoreCreateDirectory(
  573. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  574. );
  575. NTSTATUS
  576. MRxSmbCoreCreate(
  577. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  578. ULONG Attribute,
  579. BOOLEAN CreateNew
  580. );
  581. NTSTATUS
  582. MRxSmbCloseAfterCoreCreate(
  583. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  584. );
  585. NTSTATUS
  586. MRxSmbCoreTruncate(
  587. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  588. ULONG Fid,
  589. ULONG FileTruncationPoint
  590. );
  591. NTSTATUS
  592. MRxSmbDownlevelCreate(
  593. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  594. );
  595. NTSTATUS
  596. MRxSmbFinishCoreCreate (
  597. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  598. PRESP_CREATE Response
  599. );
  600. VOID
  601. MRxSmbPopulateFileInfoInOE(
  602. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  603. USHORT FileAttributes,
  604. ULONG LastWriteTimeInSeconds,
  605. ULONG FileSize
  606. );
  607. NTSTATUS
  608. MRxSmbFinishCoreOpen (
  609. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  610. PRESP_OPEN Response
  611. );
  612. NTSTATUS
  613. MRxSmbPseudoOpenTailFromCoreCreateDirectory (
  614. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  615. USHORT Attributes
  616. );
  617. NTSTATUS
  618. MRxSmbPseudoOpenTailFromFakeGFAResponse (
  619. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  620. RX_FILE_TYPE StorageType
  621. );
  622. NTSTATUS
  623. MRxSmbPseudoOpenTailFromGFAResponse (
  624. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
  625. );
  626. LARGE_INTEGER
  627. MRxSmbConvertSmbTimeToTime (
  628. //IN PSMB_EXCHANGE Exchange OPTIONAL,
  629. IN PSMBCE_SERVER Server OPTIONAL,
  630. IN SMB_TIME Time,
  631. IN SMB_DATE Date
  632. );
  633. BOOLEAN
  634. MRxSmbConvertTimeToSmbTime (
  635. IN PLARGE_INTEGER InputTime,
  636. IN PSMB_EXCHANGE Exchange OPTIONAL,
  637. OUT PSMB_TIME Time,
  638. OUT PSMB_DATE Date
  639. );
  640. BOOLEAN
  641. MRxSmbTimeToSecondsSince1970 (
  642. IN PLARGE_INTEGER CurrentTime,
  643. IN PSMBCE_SERVER Server OPTIONAL,
  644. OUT PULONG SecondsSince1970
  645. );
  646. VOID
  647. MRxSmbSecondsSince1970ToTime (
  648. IN ULONG SecondsSince1970,
  649. //IN PSMB_EXCHANGE Exchange OPTIONAL,
  650. IN PSMBCE_SERVER Server,
  651. OUT PLARGE_INTEGER CurrentTime
  652. );
  653. ULONG
  654. MRxSmbMapSmbAttributes (
  655. IN USHORT SmbAttribs
  656. );
  657. USHORT
  658. MRxSmbMapDisposition (
  659. IN ULONG Disposition
  660. );
  661. ULONG
  662. MRxSmbUnmapDisposition (
  663. IN USHORT SmbDisposition,
  664. ULONG Disposition
  665. );
  666. USHORT
  667. MRxSmbMapDesiredAccess (
  668. IN ULONG DesiredAccess
  669. );
  670. USHORT
  671. MRxSmbMapShareAccess (
  672. IN USHORT ShareAccess
  673. );
  674. USHORT
  675. MRxSmbMapFileAttributes (
  676. IN ULONG FileAttributes
  677. );
  678. NTSTATUS
  679. MRxSmbRead(
  680. IN PRX_CONTEXT RxContext
  681. );
  682. NTSTATUS
  683. MRxSmbBuildReadAndX (
  684. PSMBSTUFFER_BUFFER_STATE StufferState,
  685. PLARGE_INTEGER ByteOffsetAsLI,
  686. ULONG ByteCount,
  687. ULONG RemainingBytes
  688. );
  689. NTSTATUS
  690. MRxSmbBuildCoreRead (
  691. PSMBSTUFFER_BUFFER_STATE StufferState,
  692. PLARGE_INTEGER ByteOffsetAsLI,
  693. ULONG ByteCount,
  694. ULONG RemainingBytes
  695. );
  696. NTSTATUS
  697. MRxSmbBuildSmallRead (
  698. PSMBSTUFFER_BUFFER_STATE StufferState,
  699. PLARGE_INTEGER ByteOffsetAsLI,
  700. ULONG ByteCount,
  701. ULONG RemainingBytes
  702. );
  703. NTSTATUS
  704. SmbPseExchangeStart_Read(
  705. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  706. );
  707. NTSTATUS
  708. MRxSmbFinishNoCopyRead (
  709. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
  710. );
  711. MRxSmbRename(
  712. IN PRX_CONTEXT RxContext
  713. );
  714. NTSTATUS
  715. MRxSmbBuildRename (
  716. PSMBSTUFFER_BUFFER_STATE StufferState
  717. );
  718. NTSTATUS
  719. MRxSmbBuildDeleteForRename (
  720. PSMBSTUFFER_BUFFER_STATE StufferState
  721. );
  722. NTSTATUS
  723. SmbPseExchangeStart_Rename(
  724. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  725. );
  726. NTSTATUS
  727. MRxSmbFinishRename (
  728. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  729. PRESP_RENAME Response
  730. );
  731. NTSTATUS
  732. MRxSmbBuildCheckEmptyDirectory (
  733. PSMBSTUFFER_BUFFER_STATE StufferState
  734. );
  735. NTSTATUS
  736. SmbPseExchangeStart_SetDeleteDisposition(
  737. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  738. );
  739. MRxSmbSetDeleteDisposition(
  740. IN PRX_CONTEXT RxContext
  741. );
  742. VOID
  743. MRxSmbInitializeRecurrentService(
  744. PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext,
  745. PRECURRENT_SERVICE_ROUTINE pServiceRoutine,
  746. PVOID pServiceRoutineParameter,
  747. PLARGE_INTEGER pTimeInterval);
  748. VOID
  749. MRxSmbCancelRecurrentService(
  750. PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext);
  751. VOID
  752. MRxSmbRecurrentServiceDispatcher(
  753. PVOID pContext);
  754. NTSTATUS
  755. MRxSmbActivateRecurrentService(
  756. PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext);
  757. NTSTATUS
  758. MRxSmbInitializeRecurrentServices();
  759. VOID
  760. MRxSmbTearDownRecurrentServices();
  761. NTSTATUS
  762. MRxSmbInitializeScavengerService(
  763. PMRXSMB_SCAVENGER_SERVICE_CONTEXT pScavengerServiceContext);
  764. VOID
  765. MRxSmbTearDownScavengerService(
  766. PMRXSMB_SCAVENGER_SERVICE_CONTEXT pScavengerServiceContext);
  767. NTSTATUS
  768. SmbCeNegotiate(
  769. PSMBCEDB_SERVER_ENTRY pServerEntry,
  770. PMRX_SRV_CALL pSrvCall);
  771. NTSTATUS
  772. SmbCeSendEchoProbe(
  773. PSMBCEDB_SERVER_ENTRY pServerEntry,
  774. PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
  775. NTSTATUS
  776. SmbCeDisconnect(
  777. PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
  778. NTSTATUS
  779. SmbCeLogOff(
  780. PSMBCEDB_SERVER_ENTRY pServerEntry,
  781. PSMBCEDB_SESSION_ENTRY pSessionEntry);
  782. NTSTATUS
  783. SmbCeInitializeAdminExchange(
  784. PSMB_ADMIN_EXCHANGE pSmbAdminExchange,
  785. PSMBCEDB_SERVER_ENTRY pServerEntry,
  786. PSMBCEDB_SESSION_ENTRY pSessionEntry,
  787. PSMBCEDB_NET_ROOT_ENTRY pNetRootEntry,
  788. UCHAR SmbCommand);
  789. VOID
  790. SmbCeDiscardAdminExchange(
  791. PSMB_ADMIN_EXCHANGE pSmbAdminExchange);
  792. NTSTATUS
  793. SmbCeCompleteAdminExchange(
  794. PSMB_ADMIN_EXCHANGE pSmbAdminExchange);
  795. NTSTATUS
  796. SmbAdminExchangeStart(
  797. PSMB_EXCHANGE pExchange);
  798. VOID
  799. SmbCeCreateSrvCall(
  800. PMRX_SRVCALL_CALLBACK_CONTEXT pCallbackContext);
  801. NTSTATUS
  802. MRxSmbCreateSrvCall(
  803. PMRX_SRV_CALL pSrvCall,
  804. PMRX_SRVCALL_CALLBACK_CONTEXT pCallbackContext);
  805. NTSTATUS
  806. MRxSmbFinalizeSrvCall(
  807. PMRX_SRV_CALL pSrvCall,
  808. BOOLEAN Force);
  809. NTSTATUS
  810. MRxSmbSrvCallWinnerNotify(
  811. IN PMRX_SRV_CALL pSrvCall,
  812. IN BOOLEAN ThisMinirdrIsTheWinner,
  813. IN OUT PVOID pSrvCallContext);
  814. NTSTATUS
  815. MRxSmbInitializeEchoProbeService(
  816. PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
  817. VOID
  818. MRxSmbTearDownEchoProbeService(
  819. PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
  820. NTSTATUS
  821. BuildNegotiateSmb(
  822. PVOID *pSmbBufferPointer,
  823. PULONG pSmbBufferLength);
  824. LARGE_INTEGER
  825. ConvertSmbTimeToTime (
  826. IN SMB_TIME Time,
  827. IN SMB_DATE Date
  828. );
  829. VOID
  830. __SmbPseDbgCheckOEMdls(
  831. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  832. PSZ MsgPrefix,
  833. PSZ File,
  834. unsigned Line
  835. );
  836. NTSTATUS
  837. SmbPseContinueOrdinaryExchange(
  838. IN OUT PRX_CONTEXT RxContext
  839. );
  840. NTSTATUS
  841. SmbPseOrdinaryExchange(
  842. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
  843. IN SMB_PSE_ORDINARY_EXCHANGE_TYPE OEType
  844. );
  845. NTSTATUS
  846. __SmbPseCreateOrdinaryExchange (
  847. IN PRX_CONTEXT RxContext,
  848. IN PMRX_V_NET_ROOT VNetRoot,
  849. IN SMB_PSE_ORDINARY_EXCHANGE_ENTRYPOINTS EntryPoint,
  850. IN PSMB_PSE_OE_START_ROUTINE StartRoutine,
  851. OUT PSMB_PSE_ORDINARY_EXCHANGE *OrdinaryExchangePtr
  852. );
  853. VOID
  854. SmbPseFinalizeOETrace(PSZ text,ULONG finalstate);
  855. BOOLEAN
  856. SmbPseFinalizeOrdinaryExchange (
  857. IN OUT PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
  858. );
  859. NTSTATUS
  860. SmbPseExchangeAssociatedExchangeCompletionHandler_default(
  861. IN OUT PSMB_EXCHANGE pExchange,
  862. OUT BOOLEAN *pPostFinalize
  863. );
  864. NTSTATUS
  865. SmbPseExchangeStart_default(
  866. IN PSMB_EXCHANGE pExchange
  867. );
  868. NTSTATUS
  869. SmbPseExchangeCopyDataHandler_Read(
  870. IN PSMB_EXCHANGE pExchange,
  871. IN PMDL pCopyDataBuffer,
  872. IN ULONG CopyDataSize
  873. );
  874. VOID
  875. __SmbPseRMTableEntry(
  876. UCHAR SmbCommand,
  877. UCHAR Flags,
  878. SMBPSE_RECEIVE_HANDLER_TOKEN ReceiveHandlerToken,
  879. PSMBPSE_RECEIVE_HANDLER ReceiveHandler
  880. #if DBG
  881. ,
  882. PBYTE IndicationString,
  883. SMB_PSE_ORDINARY_EXCHANGE_TYPE LowType,
  884. SMB_PSE_ORDINARY_EXCHANGE_TYPE HighType
  885. #endif
  886. );
  887. VOID
  888. SmbPseInitializeTables(
  889. void
  890. );
  891. NTSTATUS
  892. SmbMrxFinalizeStufferFacilities(
  893. void
  894. );
  895. NTSTATUS
  896. MRxSmbSetInitialSMB (
  897. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState
  898. STUFFERTRACE_CONTROLPOINT_ARGS
  899. );
  900. NTSTATUS
  901. MRxSmbStartSMBCommand (
  902. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
  903. IN INITIAL_SMBBUG_DISPOSITION InitialSMBDisposition,
  904. IN UCHAR Command,
  905. IN ULONG MaximumBufferUsed,
  906. IN ULONG MaximumSize,
  907. IN ULONG InitialAlignment,
  908. IN ULONG MaximumResponseHeader,
  909. IN UCHAR Flags,
  910. IN UCHAR FlagsMask,
  911. IN USHORT Flags2,
  912. IN USHORT Flags2Mask
  913. STUFFERTRACE_CONTROLPOINT_ARGS
  914. );
  915. BOOLEAN
  916. MrxSMBWillThisFit(
  917. IN PSMBSTUFFER_BUFFER_STATE StufferState,
  918. IN ULONG AlignmentUnit,
  919. IN ULONG DataSize
  920. );
  921. NTSTATUS
  922. MRxSmbStuffSMB (
  923. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
  924. ...
  925. );
  926. VOID
  927. MRxSmbStuffAppendRawData(
  928. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
  929. IN PMDL Mdl
  930. );
  931. VOID
  932. MRxSmbStuffAppendSmbData(
  933. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
  934. IN PMDL Mdl
  935. );
  936. VOID
  937. MRxSmbStuffSetByteCount(
  938. IN OUT PSMBSTUFFER_BUFFER_STATE StufferState
  939. );
  940. NTSTATUS
  941. MRxSmbWrite (
  942. IN PRX_CONTEXT RxContext);
  943. NTSTATUS
  944. MRxSmbBuildWriteRequest(
  945. PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
  946. BOOLEAN IsPagingIo,
  947. UCHAR WriteCommand,
  948. ULONG ByteCount,
  949. PLARGE_INTEGER ByteOffsetAsLI,
  950. PBYTE Buffer,
  951. PMDL BufferAsMdl);
  952. NTSTATUS
  953. SmbPseExchangeStart_Write (
  954. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
  955. );
  956. NTSTATUS
  957. BuildCanonicalNetRootInformation(
  958. PUNICODE_STRING pServerName,
  959. PUNICODE_STRING pNetRootName,
  960. NET_ROOT_TYPE NetRootType,
  961. BOOLEAN fUnicode,
  962. BOOLEAN fPostPendServiceString,
  963. PBYTE *pBufferPointer,
  964. PULONG pBufferSize);
  965. NTSTATUS
  966. CoreBuildTreeConnectSmb(
  967. PSMB_EXCHANGE pExchange,
  968. PGENERIC_ANDX pAndXSmb,
  969. PULONG pAndXSmbBufferSize);
  970. NTSTATUS
  971. LmBuildTreeConnectSmb(
  972. PSMB_EXCHANGE pExchange,
  973. PGENERIC_ANDX pAndXSmb,
  974. PULONG pAndXSmbBufferSize);
  975. NTSTATUS
  976. NtBuildTreeConnectSmb(
  977. PSMB_EXCHANGE pExchange,
  978. PGENERIC_ANDX pAndXSmb,
  979. PULONG pAndXSmbBufferSize);
  980. NTSTATUS
  981. MRxSmbUpdateNetRootState(
  982. IN OUT PMRX_NET_ROOT pNetRoot);
  983. ULONG
  984. MRxSmbGetDialectFlagsFromSrvCall(
  985. PMRX_SRV_CALL SrvCall
  986. );
  987. NTSTATUS
  988. MRxSmbCreateVNetRoot(
  989. IN PMRX_CREATENETROOT_CONTEXT pCreateNetRootContext
  990. );
  991. NTSTATUS
  992. MRxSmbFinalizeVNetRoot(
  993. IN PMRX_V_NET_ROOT pVNetRoot,
  994. IN PBOOLEAN ForceDisconnect);
  995. NTSTATUS
  996. MRxSmbFinalizeNetRoot(
  997. IN PMRX_NET_ROOT pNetRoot,
  998. IN PBOOLEAN ForceDisconnect);
  999. NTSTATUS
  1000. SmbCeReconnect(
  1001. IN PMRX_V_NET_ROOT pVNetRoot);
  1002. NTSTATUS
  1003. SmbCeEstablishConnection(
  1004. IN OUT PMRX_V_NET_ROOT pVNetRoot,
  1005. IN PMRX_CREATENETROOT_CONTEXT pCreateNetRootContext,
  1006. IN BOOLEAN fInitializeNetRoot
  1007. );
  1008. NTSTATUS
  1009. SmbConstructNetRootExchangeStart(
  1010. PSMB_EXCHANGE pExchange);
  1011. NTSTATUS
  1012. SmbConstructNetRootExchangeCopyDataHandler(
  1013. IN PSMB_EXCHANGE pExchange,
  1014. IN PMDL pCopyDataBuffer,
  1015. IN ULONG DataSize);
  1016. NTSTATUS
  1017. SmbConstructNetRootExchangeFinalize(
  1018. PSMB_EXCHANGE pExchange,
  1019. BOOLEAN *pPostFinalize);
  1020. VOID
  1021. MRxSmbExtractNetRootName(
  1022. IN PUNICODE_STRING FilePathName,
  1023. IN PMRX_SRV_CALL SrvCall,
  1024. OUT PUNICODE_STRING NetRootName,
  1025. OUT PUNICODE_STRING RestOfName OPTIONAL
  1026. );
  1027. NTSTATUS
  1028. MRxSmbInitializeSmbCe();
  1029. NTSTATUS
  1030. SmbCeReferenceServer(
  1031. PSMB_EXCHANGE pExchange);
  1032. NTSTATUS
  1033. SmbCeReferenceSession(
  1034. PSMB_EXCHANGE pExchange);
  1035. NTSTATUS
  1036. SmbCeReferenceNetRoot(
  1037. PSMB_EXCHANGE pExchange);
  1038. NTSTATUS
  1039. SmbCeInitiateExchange(
  1040. PSMB_EXCHANGE pExchange);
  1041. NTSTATUS
  1042. SmbCeInitiateAssociatedExchange(
  1043. PSMB_EXCHANGE pExchange,
  1044. BOOLEAN EnableCompletionHandlerInMasterExchange);
  1045. NTSTATUS
  1046. SmbCeExchangeAbort(
  1047. PSMB_EXCHANGE pExchange);
  1048. NTSTATUS
  1049. SmbCeBuildSmbHeader(
  1050. IN OUT PSMB_EXCHANGE pExchange,
  1051. IN OUT PVOID pBuffer,
  1052. IN ULONG BufferLength,
  1053. OUT PULONG pBufferConsumed,
  1054. OUT PUCHAR pLastCommandInHeader,
  1055. OUT PUCHAR *pNextCommandPtr);
  1056. NTSTATUS
  1057. SmbCeResumeExchange(
  1058. PSMB_EXCHANGE pExchange);
  1059. NTSTATUS
  1060. SmbCepInitializeExchange(
  1061. PSMB_EXCHANGE *pExchangePointer,
  1062. PRX_CONTEXT pRxContext,
  1063. PSMBCEDB_SERVER_ENTRY pServerEntry,
  1064. PMRX_V_NET_ROOT pVNetRoot,
  1065. SMB_EXCHANGE_TYPE Type,
  1066. PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
  1067. NTSTATUS
  1068. SmbCeInitializeAssociatedExchange(
  1069. PSMB_EXCHANGE *pAssociatedExchangePointer,
  1070. PSMB_EXCHANGE pMasterExchange,
  1071. SMB_EXCHANGE_TYPE Type,
  1072. PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
  1073. NTSTATUS
  1074. SmbCeTransformExchange(
  1075. PSMB_EXCHANGE pExchange,
  1076. SMB_EXCHANGE_TYPE NewType,
  1077. PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
  1078. NTSTATUS
  1079. SmbCePrepareExchangeForReuse(
  1080. PSMB_EXCHANGE pExchange);
  1081. VOID
  1082. SmbCeDiscardExchange(PVOID pExchange);
  1083. VOID
  1084. SmbCeDiscardExchangeWorkerThreadRoutine(PVOID pExchange);
  1085. NTSTATUS
  1086. SmbCeCancelExchange(
  1087. PRX_CONTEXT pRxContext);
  1088. VOID
  1089. SmbCeFinalizeExchangeWorkerThreadRoutine(
  1090. PSMB_EXCHANGE pExchange);
  1091. VOID
  1092. SmbCepFinalizeExchange(
  1093. PSMB_EXCHANGE pExchange);
  1094. BOOLEAN
  1095. SmbCeCanExchangeBeFinalized(
  1096. PSMB_EXCHANGE pExchange,
  1097. PSMBCE_EXCHANGE_STATUS pExchangeStatus);
  1098. VOID
  1099. SmbCeFinalizeExchangeOnDisconnect(
  1100. PSMB_EXCHANGE pExchange);
  1101. VOID
  1102. SmbCeSetExpiryTime(
  1103. PSMB_EXCHANGE pExchange);
  1104. BOOLEAN
  1105. SmbCeDetectExpiredExchanges(
  1106. PSMBCEDB_SERVER_ENTRY pServerEntry);
  1107. NTSTATUS
  1108. DefaultSmbExchangeIndError(
  1109. IN PSMB_EXCHANGE pExchange);
  1110. NTSTATUS
  1111. DefaultSmbExchangeIndReceive(
  1112. IN PSMB_EXCHANGE pExchange);
  1113. NTSTATUS
  1114. DefaultSmbExchangeIndSendCallback(
  1115. IN PSMB_EXCHANGE pExchange);
  1116. VOID
  1117. MRxSmbBindTransportCallback(
  1118. IN PUNICODE_STRING pTransportName
  1119. );
  1120. VOID
  1121. MRxSmbUnbindTransportCallback(
  1122. IN PUNICODE_STRING pTransportName
  1123. );
  1124. NTSTATUS
  1125. MRxSmbRegisterForPnpNotifications();
  1126. VOID
  1127. MRxSmbpBindTransportCallback(
  1128. IN struct _TRANSPORT_BIND_CONTEXT_ *pTransportContext);
  1129. VOID
  1130. MRxSmbpBindTransportWorkerThreadRoutine(
  1131. IN struct _TRANSPORT_BIND_CONTEXT_ *pTransportContext);
  1132. VOID
  1133. MRxSmbpUnbindTransportCallback(
  1134. PSMBCE_TRANSPORT pTransport);
  1135. NTSTATUS
  1136. MRxSmbDeregisterForPnpNotifications();
  1137. NTSTATUS
  1138. SmbCeDereferenceTransportArray(
  1139. PSMBCE_TRANSPORT_ARRAY pTransportArray);
  1140. NTSTATUS
  1141. SmbCeInitializeTransactionParameters(
  1142. PVOID pSetup,
  1143. USHORT SetupLength,
  1144. PVOID pParam,
  1145. ULONG ParamLength,
  1146. PVOID pData,
  1147. ULONG DataLength,
  1148. PSMB_TRANSACTION_PARAMETERS pTransactionParameters
  1149. );
  1150. VOID
  1151. SmbCeUninitializeTransactionParameters(
  1152. PSMB_TRANSACTION_PARAMETERS pTransactionParameters
  1153. );
  1154. VOID
  1155. SmbCeDiscardTransactExchange(PSMB_TRANSACT_EXCHANGE pTransactExchange);
  1156. NTSTATUS
  1157. SmbCeSubmitTransactionRequest(
  1158. PRX_CONTEXT RxContext,
  1159. PSMB_TRANSACTION_OPTIONS pOptions,
  1160. PSMB_TRANSACTION_PARAMETERS pSendParameters,
  1161. PSMB_TRANSACTION_PARAMETERS pReceiveParameters,
  1162. PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext );
  1163. NTSTATUS
  1164. _SmbCeTransact(
  1165. PRX_CONTEXT RxContext,
  1166. PSMB_TRANSACTION_OPTIONS pOptions,
  1167. PVOID pInputSetupBuffer,
  1168. ULONG InputSetupBufferLength,
  1169. PVOID pOutputSetupBuffer,
  1170. ULONG OutputSetupBufferLength,
  1171. PVOID pInputParamBuffer,
  1172. ULONG InputParamBufferLength,
  1173. PVOID pOutputParamBuffer,
  1174. ULONG OutputParamBufferLength,
  1175. PVOID pInputDataBuffer,
  1176. ULONG InputDataBufferLength,
  1177. PVOID pOutputDataBuffer,
  1178. ULONG OutputDataBufferLength,
  1179. PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext);
  1180. NTSTATUS
  1181. SmbTransactBuildHeader(
  1182. PSMB_TRANSACT_EXCHANGE pTransactExchange,
  1183. UCHAR SmbCommand,
  1184. PSMB_HEADER pHeader);
  1185. NTSTATUS
  1186. SmbTransactExchangeStart(
  1187. PSMB_EXCHANGE pExchange);
  1188. NTSTATUS
  1189. SmbTransactExchangeAbort(
  1190. PSMB_EXCHANGE pExchange);
  1191. NTSTATUS
  1192. SmbTransactExchangeErrorHandler(
  1193. IN PSMB_EXCHANGE pExchange);
  1194. NTSTATUS
  1195. SmbTransactExchangeSendCallbackHandler(
  1196. IN PSMB_EXCHANGE pExchange,
  1197. IN PMDL pXmitBuffer,
  1198. IN NTSTATUS SendCompletionStatus);
  1199. NTSTATUS
  1200. SmbTransactExchangeCopyDataHandler(
  1201. IN PSMB_EXCHANGE pExchange,
  1202. IN PMDL pDataBuffer,
  1203. IN ULONG DataSize);
  1204. NTSTATUS
  1205. SmbCeInitializeTransactExchange(
  1206. PSMB_TRANSACT_EXCHANGE pTransactExchange,
  1207. PRX_CONTEXT RxContext,
  1208. PSMB_TRANSACTION_OPTIONS pOptions,
  1209. PSMB_TRANSACTION_SEND_PARAMETERS pSendParameters,
  1210. PSMB_TRANSACTION_RECEIVE_PARAMETERS pReceiveParameters,
  1211. PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext);
  1212. NTSTATUS
  1213. SmbTransactExchangeFinalize(
  1214. PSMB_EXCHANGE pExchange,
  1215. BOOLEAN *pPostFinalize);
  1216. NTSTATUS
  1217. SendSecondaryRequests(PVOID pContext);
  1218. NTSTATUS SmbMmInit();
  1219. VOID SmbMmTearDown();
  1220. VOID
  1221. SmbCeCompleteVNetRootContextInitialization(
  1222. PVOID pContext);
  1223. VOID
  1224. SmbCepDereferenceVNetRootContext(
  1225. PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
  1226. NTSTATUS
  1227. SmbCeDestroyAssociatedVNetRootContext(
  1228. PMRX_V_NET_ROOT pVNetRoot);
  1229. VOID
  1230. SmbCeTearDownVNetRootContext(
  1231. PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
  1232. VOID
  1233. SmbCeDecrementNumberOfActiveVNetRootOnSession(
  1234. PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext
  1235. );
  1236. NTSTATUS
  1237. SmbCeScavenger(
  1238. PVOID pContext);
  1239. NTSTATUS
  1240. SmbCeScavengeRelatedContexts(
  1241. PSMBCEDB_SERVER_ENTRY pServerEntry);
  1242. BOOLEAN
  1243. SmbCeIsReconnectionRequired(
  1244. PSMB_EXCHANGE pExchange,
  1245. PRX_CONTEXT pRxContext);
  1246. VOID
  1247. MRxSmbCreateFileInfoCache(
  1248. PRX_CONTEXT RxContext,
  1249. PSMBPSE_FILEINFO_BUNDLE FileInfo,
  1250. NTSTATUS Status);
  1251. VOID
  1252. MRxSmbCreateBasicFileInfoCache(
  1253. PRX_CONTEXT RxContext,
  1254. PFILE_BASIC_INFORMATION Basic,
  1255. NTSTATUS Status);
  1256. VOID
  1257. MRxSmbCreateStandardFileInfoCache(
  1258. PRX_CONTEXT RxContext,
  1259. PFILE_STANDARD_INFORMATION Standard,
  1260. NTSTATUS Status);
  1261. VOID
  1262. MRxSmbUpdateFileInfoCacheStatus(
  1263. PRX_CONTEXT RxContext,
  1264. NTSTATUS Status);
  1265. VOID
  1266. MRxSmbUpdateBasicFileInfoCacheStatus(
  1267. PRX_CONTEXT RxContext,
  1268. NTSTATUS Status);
  1269. VOID
  1270. MRxSmbUpdateStandardFileInfoCacheStatus(
  1271. PRX_CONTEXT RxContext,
  1272. NTSTATUS Status);
  1273. VOID
  1274. MRxSmbInvalidateFileInfoCache(
  1275. PRX_CONTEXT RxContext);
  1276. VOID
  1277. MRxSmbInvalidateBasicFileInfoCache(
  1278. PRX_CONTEXT RxContext);
  1279. VOID
  1280. MRxSmbInvalidateStandardFileInfoCache(
  1281. PRX_CONTEXT RxContext);
  1282. VOID
  1283. MRxSmbUpdateFileInfoCacheFileSize(
  1284. PRX_CONTEXT RxContext,
  1285. PLARGE_INTEGER FileSize);
  1286. VOID
  1287. MRxSmbUpdateBasicFileInfoCache(
  1288. PRX_CONTEXT RxContext,
  1289. ULONG FileAttributes,
  1290. PLARGE_INTEGER pLastWriteTime);
  1291. VOID
  1292. MRxSmbUpdateBasicFileInfoCacheAll(
  1293. PRX_CONTEXT RxContext,
  1294. PFILE_BASIC_INFORMATION Basic);
  1295. VOID
  1296. MRxSmbUpdateStandardFileInfoCache(
  1297. PRX_CONTEXT RxContext,
  1298. PFILE_STANDARD_INFORMATION Standard,
  1299. BOOLEAN IsDirectory);
  1300. BOOLEAN
  1301. MRxSmbIsFileInfoCacheFound(
  1302. PRX_CONTEXT RxContext,
  1303. PSMBPSE_FILEINFO_BUNDLE FileInfo,
  1304. NTSTATUS *Status,
  1305. PUNICODE_STRING OriginalFileName);
  1306. BOOLEAN
  1307. MRxSmbIsBasicFileInfoCacheFound(
  1308. PRX_CONTEXT RxContext,
  1309. PFILE_BASIC_INFORMATION Basic,
  1310. NTSTATUS *Status,
  1311. PUNICODE_STRING OriginalFileName);
  1312. BOOLEAN
  1313. MRxSmbIsStandardFileInfoCacheFound(
  1314. PRX_CONTEXT RxContext,
  1315. PFILE_STANDARD_INFORMATION Standard,
  1316. NTSTATUS *Status,
  1317. PUNICODE_STRING OriginalFileName);
  1318. NTSTATUS
  1319. MRxSmbGetFileInfoCacheStatus(
  1320. PRX_CONTEXT RxContext);
  1321. BOOLEAN
  1322. MRxSmbIsFileNotFoundCached(
  1323. PRX_CONTEXT RxContext);
  1324. VOID
  1325. MRxSmbCacheFileNotFound(
  1326. PRX_CONTEXT RxContext);
  1327. VOID
  1328. MRxSmbInvalidateFileNotFoundCache(
  1329. PRX_CONTEXT RxContext);
  1330. BOOLEAN
  1331. MRxSmbIsStreamFile(
  1332. PUNICODE_STRING FileName,
  1333. PUNICODE_STRING AdjustFileName);
  1334. VOID
  1335. MRxSmbUpdateFileInfoCacheFromDelete(
  1336. PRX_CONTEXT RxContext);
  1337. NTSTATUS
  1338. MRxSmbQueryFileInformationFromPseudoOpen(
  1339. SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE);
  1340. BOOLEAN
  1341. MRxSmbIsLongFileName(
  1342. PRX_CONTEXT RxContext);
  1343. PVOID
  1344. SmbMmAllocateObject(SMBCEDB_OBJECT_TYPE ObjectType);
  1345. VOID
  1346. SmbMmFreeObject(PVOID pObject);
  1347. PSMBCEDB_SESSION_ENTRY
  1348. SmbMmAllocateSessionEntry(PSMBCEDB_SERVER_ENTRY pServerEntry );
  1349. VOID
  1350. SmbMmFreeSessionEntry(PSMBCEDB_SESSION_ENTRY pSessionEntry);
  1351. PVOID
  1352. SmbMmAllocateExchange(
  1353. SMB_EXCHANGE_TYPE ExchangeType,
  1354. PVOID pv);
  1355. VOID
  1356. SmbMmFreeExchange(PVOID pExchange);
  1357. PVOID
  1358. SmbMmAllocateServerTransport(SMBCE_SERVER_TRANSPORT_TYPE ServerTransportType);
  1359. VOID
  1360. SmbMmFreeServerTransport(PSMBCE_SERVER_TRANSPORT);
  1361. NTSTATUS
  1362. BuildSessionSetupSecurityInformation(
  1363. PSMB_EXCHANGE pExchange,
  1364. PBYTE pSmbBuffer,
  1365. PULONG pSmbBufferSize);
  1366. NTSTATUS
  1367. BuildNtLanmanResponsePrologue(
  1368. PSMB_EXCHANGE pExchange,
  1369. PUNICODE_STRING pUserName,
  1370. PUNICODE_STRING pDomainName,
  1371. PSTRING pCaseSensitiveResponse,
  1372. PSTRING pCaseInsensitiveResponse,
  1373. PSECURITY_RESPONSE_CONTEXT pResponseContext);
  1374. NTSTATUS
  1375. BuildNtLanmanResponseEpilogue(
  1376. PSMB_EXCHANGE pExchange,
  1377. PSECURITY_RESPONSE_CONTEXT pResponseContext);
  1378. #define SmbMmInitializeHeader(pHeader) \
  1379. RtlZeroMemory((pHeader),sizeof(SMBCE_OBJECT_HEADER))
  1380. #endif // _SMBPROCS_H_
  1381.