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.
2120 lines
46 KiB
2120 lines
46 KiB
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
smbprocs.h
|
|
|
|
Abstract:
|
|
|
|
Prototypes for routines that cross protocol-selection boundaries
|
|
|
|
Author:
|
|
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _SMBPROCS_H_
|
|
#define _SMBPROCS_H_
|
|
|
|
#include "exsessup.h"
|
|
#include "tdikrnl.h"
|
|
|
|
//cross-referenced internal routines
|
|
|
|
//from rename.c
|
|
MRxSmbRename(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
//from openclos.c
|
|
NTSTATUS
|
|
MRxSmbBuildClose (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildFindClose (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
PSMBCE_TRANSPORT
|
|
SmbCeFindTransport(
|
|
PUNICODE_STRING pTransportName);
|
|
|
|
//paged internal routines
|
|
|
|
|
|
NTSTATUS
|
|
MRxSmbSetConfigurationInformation(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetConfigurationInformation(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetDomainName(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetServerGuid(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbTestDevIoctl(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbExternalStart (
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetStatistics(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDevFcbXXXControlFile (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryEaInformation (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetEaInformation (
|
|
IN OUT struct _RX_CONTEXT * RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQuerySecurityInformation (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetSecurityInformation (
|
|
IN OUT struct _RX_CONTEXT * RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryQuotaInformation (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetQuotaInformation (
|
|
IN OUT struct _RX_CONTEXT * RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbLoadEaList(
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PUCHAR UserEaList,
|
|
IN ULONG UserEaListLength,
|
|
OUT PFEALIST *ServerEaList
|
|
);
|
|
|
|
VOID
|
|
MRxSmbNtGeaListToOs2 (
|
|
IN PFILE_GET_EA_INFORMATION NtGetEaList,
|
|
IN ULONG GeaListLength,
|
|
IN PGEALIST GeaList
|
|
);
|
|
|
|
PGEA
|
|
MRxSmbNtGetEaToOs2 (
|
|
OUT PGEA Gea,
|
|
IN PFILE_GET_EA_INFORMATION NtGetEa
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryEasFromServer(
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PFEALIST ServerEaList,
|
|
IN PVOID Buffer,
|
|
IN OUT PULONG BufferLengthRemaining,
|
|
IN BOOLEAN ReturnSingleEntry,
|
|
IN BOOLEAN UserEaListSupplied
|
|
);
|
|
|
|
ULONG
|
|
MRxSmbNtFullEaSizeToOs2 (
|
|
IN PFILE_FULL_EA_INFORMATION NtFullEa
|
|
);
|
|
|
|
VOID
|
|
MRxSmbNtFullListToOs2 (
|
|
IN PFILE_FULL_EA_INFORMATION NtEaList,
|
|
IN PFEALIST FeaList
|
|
);
|
|
|
|
PVOID
|
|
MRxSmbNtFullEaToOs2 (
|
|
OUT PFEA Fea,
|
|
IN PFILE_FULL_EA_INFORMATION NtFullEa
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetEaList(
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PFEALIST ServerEaList
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreateFileSuccessTail (
|
|
PRX_CONTEXT RxContext,
|
|
PBOOLEAN MustRegainExclusiveResource,
|
|
SMBFCB_HOLDING_STATE *SmbFcbHoldingState,
|
|
RX_FILE_TYPE StorageType,
|
|
SMB_FILE_ID Fid,
|
|
ULONG ServerVersion,
|
|
UCHAR OplockLevel,
|
|
ULONG CreateAction,
|
|
PSMBPSE_FILEINFO_BUNDLE FileInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbCeInitializeExtendedSessionSetupExchange(
|
|
PSMB_EXCHANGE* pExchangePtr,
|
|
PMRX_V_NET_ROOT pVNetRoot);
|
|
|
|
VOID
|
|
SmbCeDiscardExtendedSessionSetupExchange(
|
|
PSMB_EXTENDED_SESSION_SETUP_EXCHANGE pExtSessionSetupExchange);
|
|
|
|
NTSTATUS
|
|
SmbExtSecuritySessionSetupExchangeStart(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbExtSecuritySessionSetupExchangeReceive(
|
|
IN struct _SMB_EXCHANGE *pExchange, // The exchange instance
|
|
IN ULONG BytesIndicated,
|
|
IN ULONG BytesAvailable,
|
|
OUT ULONG *pBytesTaken,
|
|
IN PSMB_HEADER pSmbHeader,
|
|
OUT PMDL *pDataBufferPointer,
|
|
OUT PULONG pDataSize,
|
|
IN ULONG ReceiveFlags);
|
|
|
|
NTSTATUS
|
|
SmbExtSecuritySessionSetupExchangeSendCompletionHandler(
|
|
IN PSMB_EXCHANGE pExchange, // The exchange instance
|
|
IN PMDL pXmitBuffer,
|
|
IN NTSTATUS SendCompletionStatus);
|
|
|
|
NTSTATUS
|
|
SmbConstructNetRootExchangeFinalize(
|
|
PSMB_EXCHANGE pExchange,
|
|
BOOLEAN *pPostFinalize);
|
|
|
|
VOID
|
|
__MRxSmbAllocateSideBuffer(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT PMRX_SMB_FOBX smbFobx,
|
|
IN USHORT Setup
|
|
#if DBG
|
|
,IN PUNICODE_STRING smbtemplate
|
|
#endif
|
|
);
|
|
|
|
VOID
|
|
MRxSmbDeallocateSideBuffer(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT PMRX_SMB_FOBX smbFobx,
|
|
IN PSZ where
|
|
);
|
|
|
|
VOID
|
|
MRxSmbTranslateLanManFindBuffer(
|
|
PRX_CONTEXT RxContext,
|
|
PULONG PreviousReturnedEntry,
|
|
PBYTE ThisEntryInBuffer
|
|
);
|
|
|
|
NTSTATUS
|
|
MrxSmbUnalignedDirEntryCopyTail(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN FILE_INFORMATION_CLASS FileInformationClass,
|
|
IN OUT PVOID pBuffer,
|
|
IN OUT PULONG pLengthRemaining,
|
|
IN OUT PMRX_SMB_FOBX smbFobx
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryDirectory(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryVolumeInformation(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryVolumeInformationWithFullBuffer(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetVolumeInformation(
|
|
IN OUT PRX_CONTEXT pRxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetFileInformation (
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryNamedPipeInformation(
|
|
IN PRX_CONTEXT RxContext,
|
|
IN FILE_INFORMATION_CLASS FileInformationClass,
|
|
IN OUT PVOID pBuffer,
|
|
IN OUT PULONG pLengthRemaining);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetNamedPipeInformation(
|
|
IN PRX_CONTEXT RxContext,
|
|
IN FILE_INFORMATION_CLASS FileInformationClass,
|
|
IN PVOID pBuffer,
|
|
IN ULONG BufferLength);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetFileInformationAtCleanup(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbIsValidDirectory(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN PUNICODE_STRING DirectoryName
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFabricateAttributesOnNetRoot(
|
|
IN OUT PSMBCE_NET_ROOT psmbNetRoot,
|
|
IN PSMBCE_SERVER pServer
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreInformation(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN ULONG InformationClass,
|
|
IN OUT PVOID pBuffer,
|
|
IN OUT PULONG pBufferLength,
|
|
IN SMB_PSE_ORDINARY_EXCHANGE_ENTRYPOINTS EntryPoint
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbLoadCoreFileSearchBuffer(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
VOID MRxSmbCoreFileSeach_AssertFields(void);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreFileSearch(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MrxSmbOemVolumeInfoToUnicode(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
ULONG *VolumeLabelLengthReturned
|
|
);
|
|
|
|
MrxSmbCoreQueryFsVolumeInfo(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MrxSmbQueryFsVolumeInfo(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MrxSmbCoreQueryDiskAttributes(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MrxSmbQueryDiskAttributes(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_CoreInfo(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishSearch (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_SEARCH Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishQueryDiskInfo (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_QUERY_INFORMATION_DISK Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbExtendForCache(
|
|
IN OUT struct _RX_CONTEXT * RxContext,
|
|
IN PLARGE_INTEGER pNewFileSize,
|
|
OUT PLARGE_INTEGER pNewAllocationSize
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbExtendForNonCache(
|
|
IN OUT struct _RX_CONTEXT * RxContext,
|
|
IN PLARGE_INTEGER pNewFileSize,
|
|
OUT PLARGE_INTEGER pNewAllocationSize
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetNtAllocationInfo (
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
__MRxSmbSimpleSyncTransact2(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
IN SMB_PSE_ORDINARY_EXCHANGE_TYPE OEType,
|
|
IN ULONG TransactSetupCode,
|
|
IN PVOID Params,
|
|
IN ULONG ParamsLength,
|
|
IN PVOID Data,
|
|
IN ULONG DataLength,
|
|
IN PSMB_PSE_OE_T2_FIXUP_ROUTINE FixupRoutine
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishTransaction2 (
|
|
IN OUT PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
IN PRESP_TRANSACTION Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFsCtl(
|
|
IN OUT PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbNotifyChangeDirectoryCompletion(
|
|
struct _SMB_NOTIFY_CHANGE_DIRECTORY_CONTEXT_ *pNotificationContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbNotifyChangeDirectory(
|
|
IN OUT PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbNamedPipeFsControl(PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbFsCtlUserTransact(PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbMailSlotFsControl(PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbDfsFsControl(PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbFsControl(PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbIoCtl(
|
|
IN OUT PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
VOID
|
|
MRxSmbInitUnwind(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN enum _MRXSMB_INIT_STATES MRxSmbInitState
|
|
);
|
|
|
|
|
|
VOID
|
|
MRxSmbInitUnwindSmb(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN enum _MRXSMB_INIT_STATES MRxSmbInitState
|
|
);
|
|
|
|
VOID
|
|
MRxSmbInitUnwindBowser(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN enum _MRXSMB_INIT_STATES MRxSmbInitState
|
|
);
|
|
|
|
|
|
VOID
|
|
MRxSmbUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbStart(
|
|
PRX_CONTEXT RxContext,
|
|
IN OUT PRDBSS_DEVICE_OBJECT RxDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbStop(
|
|
PRX_CONTEXT RxContext,
|
|
IN OUT PRDBSS_DEVICE_OBJECT RxDeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeSecurity (VOID);
|
|
|
|
NTSTATUS
|
|
MRxSmbUninitializeSecurity(VOID);
|
|
|
|
VOID
|
|
MRxSmbReadMiscellaneousRegistryParameters();
|
|
|
|
NTSTATUS
|
|
SmbCeGetConfigurationInformation();
|
|
|
|
NTSTATUS
|
|
MRxSmbFsdDispatch (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
MRxSmbPreUnload(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDeallocateForFcb (
|
|
IN OUT PMRX_FCB pFcb
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDeallocateForFobx (
|
|
IN OUT PMRX_FOBX pFobx
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetUlongRegistryParameter(
|
|
HANDLE ParametersHandle,
|
|
PWCHAR ParameterName,
|
|
PULONG ParamUlong,
|
|
BOOLEAN LogFailure
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeTables(void);
|
|
|
|
NTSTATUS
|
|
MRxSmbLocks(
|
|
IN PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildLocksAndX (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildLockAssert (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Locks(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishLocks (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_LOCKING_ANDX Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbUnlockRoutine (
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PFILE_LOCK_INFO LockInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCompleteBufferingStateChangeRequest(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT PMRX_SRV_OPEN SrvOpen,
|
|
IN PVOID pContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildFlush (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFlush(
|
|
IN PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbIsLockRealizable (
|
|
IN OUT PMRX_FCB pFcb,
|
|
IN PLARGE_INTEGER ByteOffset,
|
|
IN PLARGE_INTEGER Length,
|
|
IN ULONG LowIoLockFlags
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishFlush (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_FLUSH Response
|
|
);
|
|
|
|
|
|
VOID
|
|
_InitializeMidMapFreeList(struct _MID_MAP_ *pMidMap);
|
|
|
|
PMID_ATLAS
|
|
FsRtlCreateMidAtlas(
|
|
USHORT MaximumNumberOfMids,
|
|
USHORT MidsAllocatedAtStart);
|
|
|
|
VOID
|
|
_UninitializeMidMap(
|
|
struct _MID_MAP_ *pMidMap,
|
|
PCONTEXT_DESTRUCTOR pContextDestructor);
|
|
|
|
VOID
|
|
FsRtlDestroyMidAtlas(
|
|
PMID_ATLAS pMidAtlas,
|
|
PCONTEXT_DESTRUCTOR pContextDestructor);
|
|
|
|
NTSTATUS
|
|
BuildSessionSetupSecurityInformation(
|
|
PSMB_EXCHANGE pExchange,
|
|
PBYTE pSmbBuffer,
|
|
PULONG pSmbBufferSize);
|
|
|
|
NTSTATUS
|
|
BuildTreeConnectSecurityInformation(
|
|
PSMB_EXCHANGE pExchange,
|
|
PBYTE pBuffer,
|
|
PBYTE pPasswordLength,
|
|
PULONG pSmbBufferSize);
|
|
|
|
VOID
|
|
MRxSmbMungeBufferingIfWriteOnlyHandles (
|
|
ULONG WriteOnlySrvOpenCount,
|
|
PMRX_SRV_OPEN SrvOpen
|
|
);
|
|
|
|
VOID
|
|
MRxSmbCopyAndTranslatePipeState(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN ULONG PipeState
|
|
);
|
|
|
|
BOOLEAN
|
|
IsReconnectRequired(
|
|
PMRX_SRV_CALL SrvCall);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsCreateWithEasSidsOrLongName(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
OUT PULONG DialectFlags
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbShouldTryToCollapseThisOpen (
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreate (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDeferredCreate (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCollapseOpen(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbComputeNewBufferingState(
|
|
IN OUT PMRX_SRV_OPEN pMRxSrvOpen,
|
|
IN PVOID pMRxContext,
|
|
OUT PULONG pNewBufferingState);
|
|
|
|
NTSTATUS
|
|
MRxSmbConstructDeferredOpenContext (
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
VOID
|
|
MRxSmbAdjustCreateParameters (
|
|
PRX_CONTEXT RxContext,
|
|
PMRXSMB_CREATE_PARAMETERS smbcp
|
|
);
|
|
|
|
VOID
|
|
MRxSmbAdjustReturnedCreateAction(
|
|
IN OUT PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildNtCreateAndX (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
PMRXSMB_CREATE_PARAMETERS smbcp
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildOpenAndX (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
PMRXSMB_CREATE_PARAMETERS smbcp
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildOpenPrintFile (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Create(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
VOID
|
|
MRxSmbSetSrvOpenFlags (
|
|
PRX_CONTEXT RxContext,
|
|
RX_FILE_TYPE StorageType,
|
|
PMRX_SRV_OPEN SrvOpen,
|
|
PMRX_SMB_SRV_OPEN smbSrvOpen
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreateFileSuccessTail (
|
|
PRX_CONTEXT RxContext,
|
|
PBOOLEAN MustRegainExclusiveResource,
|
|
SMBFCB_HOLDING_STATE *SmbFcbHoldingState,
|
|
RX_FILE_TYPE StorageType,
|
|
SMB_FILE_ID Fid,
|
|
ULONG ServerVersion,
|
|
UCHAR OplockLevel,
|
|
ULONG CreateAction,
|
|
PSMBPSE_FILEINFO_BUNDLE FileInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishNTCreateAndX (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_NT_CREATE_ANDX Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishOpenAndX (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_OPEN_ANDX Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishCreatePrintFile (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_OPEN_PRINT_FILE Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishT2OpenFile (
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN PRESP_OPEN2 Response,
|
|
IN OUT PBOOLEAN MustRegainExclusiveResource,
|
|
IN OUT SMBFCB_HOLDING_STATE *SmbFcbHoldingState,
|
|
IN ULONG ServerVersion
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbT2OpenFile(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT SMBFCB_HOLDING_STATE *SmbFcbHoldingState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishLongNameCreateFile (
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN PRESP_CREATE_WITH_SD_OR_EA Response,
|
|
IN PBOOLEAN MustRegainExclusiveResource,
|
|
IN OUT SMBFCB_HOLDING_STATE *SmbFcbHoldingState,
|
|
IN ULONG ServerVersion
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreateWithEasSidsOrLongName(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT SMBFCB_HOLDING_STATE *SmbFcbHoldingState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbZeroExtend(
|
|
IN PRX_CONTEXT pRxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbTruncate(
|
|
IN PRX_CONTEXT pRxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbCleanupFobx(
|
|
IN PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbForcedClose(
|
|
IN PMRX_SRV_OPEN pSrvOpen);
|
|
|
|
NTSTATUS
|
|
MRxSmbCloseSrvOpen(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildClose (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildClosePrintFile (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildFindClose (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Close(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishClose (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_CLOSE Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetFileAttributes(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreDeleteForSupercedeOrClose(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
BOOLEAN DeleteDirectory
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreCheckPath(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreOpen(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
ULONG OpenShareMode,
|
|
ULONG Attribute
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetFileAttributes(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
ULONG SmbAttributes
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreCreateDirectory(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreCreate(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
ULONG Attribute,
|
|
BOOLEAN CreateNew
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCloseAfterCoreCreate(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCoreTruncate(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
ULONG Fid,
|
|
ULONG FileTruncationPoint
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDownlevelCreate(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishCoreCreate (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_CREATE Response
|
|
);
|
|
|
|
VOID
|
|
MRxSmbPopulateFileInfoInOE(
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
USHORT FileAttributes,
|
|
ULONG LastWriteTimeInSeconds,
|
|
ULONG FileSize
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishCoreOpen (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_OPEN Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbPseudoOpenTailFromCoreCreateDirectory (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
USHORT Attributes
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbPseudoOpenTailFromFakeGFAResponse (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
RX_FILE_TYPE StorageType
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbPseudoOpenTailFromGFAResponse (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
|
|
);
|
|
|
|
LARGE_INTEGER
|
|
MRxSmbConvertSmbTimeToTime (
|
|
//IN PSMB_EXCHANGE Exchange OPTIONAL,
|
|
IN PSMBCE_SERVER Server OPTIONAL,
|
|
IN SMB_TIME Time,
|
|
IN SMB_DATE Date
|
|
);
|
|
|
|
BOOLEAN
|
|
MRxSmbConvertTimeToSmbTime (
|
|
IN PLARGE_INTEGER InputTime,
|
|
IN PSMB_EXCHANGE Exchange OPTIONAL,
|
|
OUT PSMB_TIME Time,
|
|
OUT PSMB_DATE Date
|
|
);
|
|
|
|
BOOLEAN
|
|
MRxSmbTimeToSecondsSince1970 (
|
|
IN PLARGE_INTEGER CurrentTime,
|
|
IN PSMBCE_SERVER Server OPTIONAL,
|
|
OUT PULONG SecondsSince1970
|
|
);
|
|
|
|
VOID
|
|
MRxSmbSecondsSince1970ToTime (
|
|
IN ULONG SecondsSince1970,
|
|
//IN PSMB_EXCHANGE Exchange OPTIONAL,
|
|
IN PSMBCE_SERVER Server,
|
|
OUT PLARGE_INTEGER CurrentTime
|
|
);
|
|
|
|
ULONG
|
|
MRxSmbMapSmbAttributes (
|
|
IN USHORT SmbAttribs
|
|
);
|
|
|
|
USHORT
|
|
MRxSmbMapDisposition (
|
|
IN ULONG Disposition
|
|
);
|
|
|
|
ULONG
|
|
MRxSmbUnmapDisposition (
|
|
IN USHORT SmbDisposition,
|
|
ULONG Disposition
|
|
);
|
|
|
|
USHORT
|
|
MRxSmbMapDesiredAccess (
|
|
IN ULONG DesiredAccess
|
|
);
|
|
|
|
USHORT
|
|
MRxSmbMapShareAccess (
|
|
IN USHORT ShareAccess
|
|
);
|
|
|
|
USHORT
|
|
MRxSmbMapFileAttributes (
|
|
IN ULONG FileAttributes
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbRead(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildReadAndX (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
PLARGE_INTEGER ByteOffsetAsLI,
|
|
ULONG ByteCount,
|
|
ULONG RemainingBytes
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildCoreRead (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
PLARGE_INTEGER ByteOffsetAsLI,
|
|
ULONG ByteCount,
|
|
ULONG RemainingBytes
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildSmallRead (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
PLARGE_INTEGER ByteOffsetAsLI,
|
|
ULONG ByteCount,
|
|
ULONG RemainingBytes
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Read(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishNoCopyRead (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
|
|
);
|
|
|
|
MRxSmbRename(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildRename (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildDeleteForRename (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Rename(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinishRename (
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PRESP_RENAME Response
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildCheckEmptyDirectory (
|
|
PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_SetDeleteDisposition(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
MRxSmbSetDeleteDisposition(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
VOID
|
|
MRxSmbInitializeRecurrentService(
|
|
PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext,
|
|
PRECURRENT_SERVICE_ROUTINE pServiceRoutine,
|
|
PVOID pServiceRoutineParameter,
|
|
PLARGE_INTEGER pTimeInterval);
|
|
|
|
VOID
|
|
MRxSmbCancelRecurrentService(
|
|
PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext);
|
|
|
|
VOID
|
|
MRxSmbRecurrentServiceDispatcher(
|
|
PVOID pContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbActivateRecurrentService(
|
|
PRECURRENT_SERVICE_CONTEXT pRecurrentServiceContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeRecurrentServices();
|
|
|
|
VOID
|
|
MRxSmbTearDownRecurrentServices();
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeScavengerService(
|
|
PMRXSMB_SCAVENGER_SERVICE_CONTEXT pScavengerServiceContext);
|
|
|
|
VOID
|
|
MRxSmbTearDownScavengerService(
|
|
PMRXSMB_SCAVENGER_SERVICE_CONTEXT pScavengerServiceContext);
|
|
|
|
NTSTATUS
|
|
SmbCeNegotiate(
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
PMRX_SRV_CALL pSrvCall,
|
|
BOOLEAN RemoteBootSession);
|
|
|
|
NTSTATUS
|
|
SmbCeSendEchoProbe(
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
|
|
|
|
NTSTATUS
|
|
SmbCeDisconnect(
|
|
PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
|
|
|
|
NTSTATUS
|
|
SmbCeLogOff(
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
PSMBCEDB_SESSION_ENTRY pSessionEntry);
|
|
|
|
NTSTATUS
|
|
SmbCeInitializeAdminExchange(
|
|
PSMB_ADMIN_EXCHANGE pSmbAdminExchange,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
PSMBCEDB_SESSION_ENTRY pSessionEntry,
|
|
PSMBCEDB_NET_ROOT_ENTRY pNetRootEntry,
|
|
UCHAR SmbCommand);
|
|
|
|
VOID
|
|
SmbCeDiscardAdminExchange(
|
|
PSMB_ADMIN_EXCHANGE pSmbAdminExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeCompleteAdminExchange(
|
|
PSMB_ADMIN_EXCHANGE pSmbAdminExchange);
|
|
|
|
NTSTATUS
|
|
SmbAdminExchangeStart(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
SmbCeCreateSrvCall(
|
|
PMRX_SRVCALL_CALLBACK_CONTEXT pCallbackContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreateSrvCall(
|
|
PMRX_SRV_CALL pSrvCall,
|
|
PMRX_SRVCALL_CALLBACK_CONTEXT pCallbackContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinalizeSrvCall(
|
|
PMRX_SRV_CALL pSrvCall,
|
|
BOOLEAN Force);
|
|
|
|
NTSTATUS
|
|
MRxSmbSrvCallWinnerNotify(
|
|
IN PMRX_SRV_CALL pSrvCall,
|
|
IN BOOLEAN ThisMinirdrIsTheWinner,
|
|
IN OUT PVOID pSrvCallContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeEchoProbeService(
|
|
PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
|
|
|
|
VOID
|
|
MRxSmbTearDownEchoProbeService(
|
|
PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
|
|
|
|
VOID
|
|
MRxSmbMaskNegotiateSmb ();
|
|
|
|
NTSTATUS
|
|
BuildNegotiateSmb(
|
|
PVOID *pSmbBufferPointer,
|
|
PULONG pSmbBufferLength,
|
|
BOOLEAN RemoteBootSession);
|
|
|
|
LARGE_INTEGER
|
|
ConvertSmbTimeToTime (
|
|
IN SMB_TIME Time,
|
|
IN SMB_DATE Date
|
|
);
|
|
|
|
VOID
|
|
__SmbPseDbgCheckOEMdls(
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
PSZ MsgPrefix,
|
|
PSZ File,
|
|
unsigned Line
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseContinueOrdinaryExchange(
|
|
IN OUT PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseOrdinaryExchange(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
IN SMB_PSE_ORDINARY_EXCHANGE_TYPE OEType
|
|
);
|
|
|
|
NTSTATUS
|
|
__SmbPseCreateOrdinaryExchange (
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PMRX_V_NET_ROOT VNetRoot,
|
|
IN SMB_PSE_ORDINARY_EXCHANGE_ENTRYPOINTS EntryPoint,
|
|
IN PSMB_PSE_OE_START_ROUTINE StartRoutine,
|
|
IN OUT SMBFCB_HOLDING_STATE *SmbFcbHoldingState OPTIONAL,
|
|
OUT PSMB_PSE_ORDINARY_EXCHANGE *OrdinaryExchangePtr
|
|
);
|
|
|
|
VOID
|
|
SmbPseFinalizeOETrace(PSZ text,ULONG finalstate);
|
|
|
|
BOOLEAN
|
|
SmbPseFinalizeOrdinaryExchange (
|
|
IN OUT PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeAssociatedExchangeCompletionHandler_default(
|
|
IN OUT PSMB_EXCHANGE pExchange,
|
|
OUT BOOLEAN *pPostFinalize
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_default(
|
|
IN PSMB_EXCHANGE pExchange
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeCopyDataHandler_Read(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PMDL pCopyDataBuffer,
|
|
IN ULONG CopyDataSize
|
|
);
|
|
|
|
VOID
|
|
__SmbPseRMTableEntry(
|
|
UCHAR SmbCommand,
|
|
UCHAR Flags,
|
|
SMBPSE_RECEIVE_HANDLER_TOKEN ReceiveHandlerToken,
|
|
PSMBPSE_RECEIVE_HANDLER ReceiveHandler
|
|
#if DBG
|
|
,
|
|
PBYTE IndicationString,
|
|
SMB_PSE_ORDINARY_EXCHANGE_TYPE LowType,
|
|
SMB_PSE_ORDINARY_EXCHANGE_TYPE HighType
|
|
#endif
|
|
);
|
|
|
|
VOID
|
|
SmbPseInitializeTables(
|
|
void
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryDosVolumeInformation(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT PVOID pBuffer,
|
|
IN OUT PULONG pBufferLength
|
|
);
|
|
|
|
VOID
|
|
MRxSmbSetFixedStufferStateFields (
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
IN PMDL Mdl,
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PRX_CONTEXT RxContext,
|
|
IN PBYTE ActualBufferBase,
|
|
IN PBYTE BufferBase,
|
|
IN PBYTE BufferLimit
|
|
);
|
|
|
|
VOID SMBStuffHexDump(
|
|
IN PBYTE Base,
|
|
IN PBYTE Limit,
|
|
IN ULONG AddressOffset
|
|
);
|
|
|
|
VOID
|
|
MRxSmbFakeUpAnMdl(
|
|
IN OUT PMDL Mdl,
|
|
IN PBYTE Base,
|
|
IN ULONG Length
|
|
);
|
|
|
|
VOID MRxSmbStfTestReadAndWrite();
|
|
|
|
VOID MRxSmbStfTestSessionStuff();
|
|
|
|
VOID MRxSmbStfTestMoreOpenStuff();
|
|
|
|
NTSTATUS
|
|
MRxSmbStufferDebug(
|
|
IN PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildSmbHeaderTestSurrogate(
|
|
PSMB_EXCHANGE pExchange,
|
|
PVOID pBuffer,
|
|
ULONG BufferLength,
|
|
PULONG pBufferConsumed,
|
|
PUCHAR pLastCommandInHeader,
|
|
PUCHAR *pNextCommandPtr);
|
|
|
|
VOID
|
|
SmbStuffWrapRtlAssert(
|
|
IN PVOID FailedAssertion,
|
|
IN PVOID FileName,
|
|
IN ULONG LineNumber,
|
|
IN PCHAR Message
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbMrxFinalizeStufferFacilities(
|
|
void
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbSetInitialSMB (
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState
|
|
STUFFERTRACE_CONTROLPOINT_ARGS
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbStartSMBCommand (
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
IN INITIAL_SMBBUG_DISPOSITION InitialSMBDisposition,
|
|
IN UCHAR Command, //joejoe this next four params could come from a table...2offset and you're smaller
|
|
IN ULONG MaximumBufferUsed,
|
|
IN ULONG MaximumSize,
|
|
IN ULONG InitialAlignment,
|
|
IN ULONG MaximumResponseHeader,
|
|
IN UCHAR Flags,
|
|
IN UCHAR FlagsMask,
|
|
IN USHORT Flags2,
|
|
IN USHORT Flags2Mask
|
|
STUFFERTRACE_CONTROLPOINT_ARGS
|
|
);
|
|
|
|
BOOLEAN
|
|
MrxSMBWillThisFit(
|
|
IN PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
IN ULONG AlignmentUnit,
|
|
IN ULONG DataSize
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbStuffSMB (
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
...
|
|
);
|
|
|
|
VOID
|
|
MRxSmbStuffAppendRawData(
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
IN PMDL Mdl
|
|
);
|
|
|
|
VOID
|
|
MRxSmbStuffAppendSmbData(
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState,
|
|
IN PMDL Mdl
|
|
);
|
|
|
|
VOID
|
|
MRxSmbStuffSetByteCount(
|
|
IN OUT PSMBSTUFFER_BUFFER_STATE StufferState
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbWrite (
|
|
IN PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbWriteMailSlot(
|
|
PRX_CONTEXT RxContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbBuildWriteRequest(
|
|
PSMB_PSE_ORDINARY_EXCHANGE OrdinaryExchange,
|
|
BOOLEAN IsPagingIo,
|
|
UCHAR WriteCommand,
|
|
ULONG ByteCount,
|
|
PLARGE_INTEGER ByteOffsetAsLI,
|
|
PBYTE Buffer,
|
|
PMDL BufferAsMdl);
|
|
|
|
NTSTATUS
|
|
SmbPseExchangeStart_Write (
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE
|
|
);
|
|
|
|
NTSTATUS
|
|
BuildCanonicalNetRootInformation(
|
|
PUNICODE_STRING pServerName,
|
|
PUNICODE_STRING pNetRootName,
|
|
NET_ROOT_TYPE NetRootType,
|
|
BOOLEAN fUnicode,
|
|
BOOLEAN fPostPendServiceString,
|
|
PBYTE *pBufferPointer,
|
|
PULONG pBufferSize);
|
|
|
|
NTSTATUS
|
|
CoreBuildTreeConnectSmb(
|
|
PSMB_EXCHANGE pExchange,
|
|
PGENERIC_ANDX pAndXSmb,
|
|
PULONG pAndXSmbBufferSize);
|
|
|
|
NTSTATUS
|
|
LmBuildTreeConnectSmb(
|
|
PSMB_EXCHANGE pExchange,
|
|
PGENERIC_ANDX pAndXSmb,
|
|
PULONG pAndXSmbBufferSize);
|
|
|
|
NTSTATUS
|
|
NtBuildTreeConnectSmb(
|
|
PSMB_EXCHANGE pExchange,
|
|
PGENERIC_ANDX pAndXSmb,
|
|
PULONG pAndXSmbBufferSize);
|
|
|
|
BOOLEAN
|
|
MRxSmbPackStringIntoConnectInfo(
|
|
IN PUNICODE_STRING String,
|
|
IN PUNICODE_STRING Source,
|
|
IN OUT PCHAR * BufferStart,
|
|
IN OUT PCHAR * BufferEnd,
|
|
IN ULONG BufferDisplacement,
|
|
IN OUT PULONG TotalBytes
|
|
);
|
|
|
|
BOOLEAN
|
|
MRxSmbPackConnectEntry (
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN ULONG Level,
|
|
IN OUT PCHAR *BufferStart,
|
|
IN OUT PCHAR *BufferEnd,
|
|
IN PV_NET_ROOT VNetRoot,
|
|
IN OUT ULONG BufferDisplacement,
|
|
OUT PULONG TotalBytesNeeded
|
|
);
|
|
|
|
VOID
|
|
MRxSmbGetConnectInfoLevel3Fields(
|
|
IN OUT PLMR_CONNECTION_INFO_3 ConnectionInfo,
|
|
IN PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
IN BOOL fAgentCall
|
|
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbEnumerateConnections (
|
|
IN PRX_CONTEXT RxContext,
|
|
OUT PBOOLEAN PostToFsp
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetConnectionInfo (
|
|
IN PRX_CONTEXT RxContext,
|
|
OUT PBOOLEAN PostToFsp
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbDeleteConnection (
|
|
IN PRX_CONTEXT RxContext,
|
|
OUT PBOOLEAN PostToFsp
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxEnumerateTransports(
|
|
IN PRX_CONTEXT RxContext,
|
|
OUT PBOOLEAN pPostToFsp);
|
|
|
|
NTSTATUS
|
|
MRxEnumerateTransportBindings(
|
|
IN PLMR_REQUEST_PACKET pLmrRequestPacket,
|
|
IN ULONG LmrRequestPacketLength,
|
|
OUT PVOID pBindingBuffer,
|
|
IN OUT ULONG BindingBufferLength);
|
|
|
|
VOID
|
|
MRxSmbDbgDumpMdlChain (
|
|
PMDL MdlChain,
|
|
PMDL WatchMdl,
|
|
PSZ Tagstring
|
|
);
|
|
|
|
VOID MRxSmbTestStudCode(void);
|
|
|
|
NTSTATUS
|
|
MRxSmbUpdateNetRootState(
|
|
IN OUT PMRX_NET_ROOT pNetRoot);
|
|
|
|
ULONG
|
|
MRxSmbGetDialectFlagsFromSrvCall(
|
|
PMRX_SRV_CALL SrvCall
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbCreateVNetRoot(
|
|
IN PMRX_CREATENETROOT_CONTEXT pCreateNetRootContext
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinalizeVNetRoot(
|
|
IN PMRX_V_NET_ROOT pVNetRoot,
|
|
IN PBOOLEAN ForceDisconnect);
|
|
|
|
NTSTATUS
|
|
MRxSmbFinalizeNetRoot(
|
|
IN PMRX_NET_ROOT pNetRoot,
|
|
IN PBOOLEAN ForceDisconnect);
|
|
|
|
NTSTATUS
|
|
SmbCeReconnect(
|
|
IN PMRX_V_NET_ROOT pVNetRoot);
|
|
|
|
NTSTATUS
|
|
SmbCeEstablishConnection(
|
|
IN OUT PMRX_V_NET_ROOT pVNetRoot,
|
|
IN PMRX_CREATENETROOT_CONTEXT pCreateNetRootContext,
|
|
IN BOOLEAN fInitializeNetRoot
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbConstructNetRootExchangeStart(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbConstructNetRootExchangeCopyDataHandler(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PMDL pCopyDataBuffer,
|
|
IN ULONG DataSize);
|
|
|
|
NTSTATUS
|
|
SmbConstructNetRootExchangeFinalize(
|
|
PSMB_EXCHANGE pExchange,
|
|
BOOLEAN *pPostFinalize);
|
|
|
|
VOID
|
|
MRxSmbExtractNetRootName(
|
|
IN PUNICODE_STRING FilePathName,
|
|
IN PMRX_SRV_CALL SrvCall,
|
|
OUT PUNICODE_STRING NetRootName,
|
|
OUT PUNICODE_STRING RestOfName OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbInitializeSmbCe();
|
|
|
|
NTSTATUS
|
|
SmbCeReferenceServer(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
SmbCeSerializeSessionSetupRequests(
|
|
PSMBCEDB_SESSION_ENTRY pSessionEntry);
|
|
|
|
VOID
|
|
SmbCeUnblockSerializedSessionSetupRequests(
|
|
PSMBCEDB_SESSION_ENTRY pSessionEntry);
|
|
|
|
NTSTATUS
|
|
SmbCeReferenceSession(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeReferenceNetRoot(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeInitiateExchange(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeInitiateAssociatedExchange(
|
|
PSMB_EXCHANGE pExchange,
|
|
BOOLEAN EnableCompletionHandlerInMasterExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeExchangeAbort(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeBuildSmbHeader(
|
|
IN OUT PSMB_EXCHANGE pExchange,
|
|
IN OUT PVOID pBuffer,
|
|
IN ULONG BufferLength,
|
|
OUT PULONG pBufferConsumed,
|
|
OUT PUCHAR pLastCommandInHeader,
|
|
OUT PUCHAR *pNextCommandPtr);
|
|
|
|
NTSTATUS
|
|
SmbCeResumeExchange(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCepInitializeExchange(
|
|
PSMB_EXCHANGE *pExchangePointer,
|
|
PRX_CONTEXT pRxContext,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
PMRX_V_NET_ROOT pVNetRoot,
|
|
SMB_EXCHANGE_TYPE Type,
|
|
PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
|
|
|
|
NTSTATUS
|
|
SmbCeInitializeAssociatedExchange(
|
|
PSMB_EXCHANGE *pAssociatedExchangePointer,
|
|
PSMB_EXCHANGE pMasterExchange,
|
|
SMB_EXCHANGE_TYPE Type,
|
|
PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
|
|
|
|
NTSTATUS
|
|
SmbCeTransformExchange(
|
|
PSMB_EXCHANGE pExchange,
|
|
SMB_EXCHANGE_TYPE NewType,
|
|
PSMB_EXCHANGE_DISPATCH_VECTOR pDispatchVector);
|
|
|
|
NTSTATUS
|
|
SmbCePrepareExchangeForReuse(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
|
|
NTSTATUS
|
|
SmbCeUpdateSessionEntryAndVNetRootContext(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
SmbCeDiscardExchange(PVOID pExchange);
|
|
|
|
VOID
|
|
SmbCeDiscardExchangeWorkerThreadRoutine(PVOID pExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeCancelExchange(
|
|
PRX_CONTEXT pRxContext);
|
|
|
|
VOID
|
|
SmbCeFinalizeExchangeWorkerThreadRoutine(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
SmbCepFinalizeExchange(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
BOOLEAN
|
|
SmbCeCanExchangeBeFinalized(
|
|
PSMB_EXCHANGE pExchange,
|
|
PSMBCE_EXCHANGE_STATUS pExchangeStatus);
|
|
|
|
VOID
|
|
SmbCeFinalizeExchangeOnDisconnect(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
SmbCeSetExpiryTime(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
BOOLEAN
|
|
SmbCeDetectExpiredExchanges(
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry);
|
|
|
|
NTSTATUS
|
|
DefaultSmbExchangeIndError(
|
|
IN PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
DefaultSmbExchangeIndReceive(
|
|
IN PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
DefaultSmbExchangeIndSendCallback(
|
|
IN PSMB_EXCHANGE pExchange);
|
|
|
|
VOID
|
|
MRxSmbBindTransportCallback(
|
|
IN PUNICODE_STRING pTransportName
|
|
);
|
|
|
|
VOID
|
|
MRxSmbUnbindTransportCallback(
|
|
IN PUNICODE_STRING pTransportName
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbRegisterForPnpNotifications();
|
|
|
|
VOID
|
|
MRxSmbpBindTransportCallback(
|
|
IN struct _TRANSPORT_BIND_CONTEXT_ *pTransportContext);
|
|
|
|
VOID
|
|
MRxSmbpBindTransportWorkerThreadRoutine(
|
|
IN struct _TRANSPORT_BIND_CONTEXT_ *pTransportContext);
|
|
|
|
VOID
|
|
MRxSmbpUnbindTransportCallback(
|
|
PSMBCE_TRANSPORT pTransport);
|
|
|
|
NTSTATUS
|
|
MRxSmbDeregisterForPnpNotifications();
|
|
|
|
NTSTATUS
|
|
SmbCePnpBindBrowser( PUNICODE_STRING pTransportName, BOOLEAN IsBind);
|
|
|
|
NTSTATUS
|
|
SmbCeDereferenceTransportArray(
|
|
PSMBCE_TRANSPORT_ARRAY pTransportArray);
|
|
|
|
NTSTATUS
|
|
SmbCeInitializeTransactionParameters(
|
|
PVOID pSetup,
|
|
USHORT SetupLength,
|
|
PVOID pParam,
|
|
ULONG ParamLength,
|
|
PVOID pData,
|
|
ULONG DataLength,
|
|
PSMB_TRANSACTION_PARAMETERS pTransactionParameters
|
|
);
|
|
|
|
VOID
|
|
SmbCeUninitializeTransactionParameters(
|
|
PSMB_TRANSACTION_PARAMETERS pTransactionParameters
|
|
);
|
|
|
|
VOID
|
|
SmbCeDiscardTransactExchange(PSMB_TRANSACT_EXCHANGE pTransactExchange);
|
|
|
|
NTSTATUS
|
|
SmbCeSubmitTransactionRequest(
|
|
PRX_CONTEXT RxContext,
|
|
PSMB_TRANSACTION_OPTIONS pOptions,
|
|
PSMB_TRANSACTION_PARAMETERS pSendParameters,
|
|
PSMB_TRANSACTION_PARAMETERS pReceiveParameters,
|
|
PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext );
|
|
|
|
NTSTATUS
|
|
_SmbCeTransact(
|
|
PRX_CONTEXT RxContext,
|
|
PSMB_TRANSACTION_OPTIONS pOptions,
|
|
PVOID pInputSetupBuffer,
|
|
ULONG InputSetupBufferLength,
|
|
PVOID pOutputSetupBuffer,
|
|
ULONG OutputSetupBufferLength,
|
|
PVOID pInputParamBuffer,
|
|
ULONG InputParamBufferLength,
|
|
PVOID pOutputParamBuffer,
|
|
ULONG OutputParamBufferLength,
|
|
PVOID pInputDataBuffer,
|
|
ULONG InputDataBufferLength,
|
|
PVOID pOutputDataBuffer,
|
|
ULONG OutputDataBufferLength,
|
|
PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext);
|
|
|
|
NTSTATUS
|
|
SmbTransactBuildHeader(
|
|
PSMB_TRANSACT_EXCHANGE pTransactExchange,
|
|
UCHAR SmbCommand,
|
|
PSMB_HEADER pHeader);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeStart(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeAbort(
|
|
PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeErrorHandler(
|
|
IN PSMB_EXCHANGE pExchange);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeSendCallbackHandler(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PMDL pXmitBuffer,
|
|
IN NTSTATUS SendCompletionStatus);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeCopyDataHandler(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PMDL pDataBuffer,
|
|
IN ULONG DataSize);
|
|
|
|
NTSTATUS
|
|
SmbCeInitializeTransactExchange(
|
|
PSMB_TRANSACT_EXCHANGE pTransactExchange,
|
|
PRX_CONTEXT RxContext,
|
|
PSMB_TRANSACTION_OPTIONS pOptions,
|
|
PSMB_TRANSACTION_SEND_PARAMETERS pSendParameters,
|
|
PSMB_TRANSACTION_RECEIVE_PARAMETERS pReceiveParameters,
|
|
PSMB_TRANSACTION_RESUMPTION_CONTEXT pResumptionContext);
|
|
|
|
NTSTATUS
|
|
SmbTransactExchangeFinalize(
|
|
PSMB_EXCHANGE pExchange,
|
|
BOOLEAN *pPostFinalize);
|
|
|
|
NTSTATUS
|
|
SendSecondaryRequests(PVOID pContext);
|
|
|
|
NTSTATUS SmbMmInit();
|
|
|
|
VOID SmbMmTearDown();
|
|
|
|
VOID
|
|
SmbCeCompleteVNetRootContextInitialization(
|
|
PVOID pContext);
|
|
|
|
VOID
|
|
SmbCepDereferenceVNetRootContext(
|
|
PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
|
|
|
|
NTSTATUS
|
|
SmbCeDestroyAssociatedVNetRootContext(
|
|
PMRX_V_NET_ROOT pVNetRoot);
|
|
|
|
VOID
|
|
SmbCeTearDownVNetRootContext(
|
|
PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext);
|
|
|
|
VOID
|
|
SmbCeDecrementNumberOfActiveVNetRootOnSession(
|
|
PSMBCE_V_NET_ROOT_CONTEXT pVNetRootContext
|
|
);
|
|
|
|
NTSTATUS
|
|
SmbCeScavenger(
|
|
PVOID pContext);
|
|
|
|
NTSTATUS
|
|
SmbCeScavengeRelatedContexts(
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry);
|
|
|
|
NTSTATUS
|
|
SmbCeRemoteBootReconnect(
|
|
PSMB_EXCHANGE pExchange,
|
|
PRX_CONTEXT RxContext);
|
|
|
|
BOOLEAN
|
|
SmbCeIsReconnectionRequired(
|
|
PSMB_EXCHANGE pExchange,
|
|
PRX_CONTEXT pRxContext);
|
|
|
|
NTSTATUS
|
|
SmbCeSyncExchangeForSecuritySignature(
|
|
PSMB_EXCHANGE pExchange
|
|
);
|
|
|
|
VOID
|
|
SmbCheckSecuritySignature(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PSMBCE_SERVER Server,
|
|
IN ULONG MessageLength,
|
|
IN PVOID pBuffer
|
|
);
|
|
|
|
BOOLEAN
|
|
SmbCheckSecuritySignaturePartial(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PSMBCE_SERVER Server,
|
|
IN ULONG DataLength,
|
|
IN PVOID pBuffer
|
|
);
|
|
|
|
BOOLEAN
|
|
SmbCheckSecuritySignatureWithMdl(
|
|
IN PSMB_EXCHANGE pExchange,
|
|
IN PSMBCE_SERVER Server,
|
|
IN ULONG DataLength,
|
|
IN PMDL Mdl);
|
|
|
|
NTSTATUS
|
|
SmbCepRemoteBootReconnect(
|
|
PSMB_EXCHANGE pExchange,
|
|
PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
SmbCeRemoteBootReconnect(
|
|
PSMB_EXCHANGE pExchange,
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbCreateFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
PSMBPSE_FILEINFO_BUNDLE FileInfo,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbCreateBasicFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_BASIC_INFORMATION Basic,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbCreateStandardFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_STANDARD_INFORMATION Standard,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbCreateInternalFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_INTERNAL_INFORMATION Internal,
|
|
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbUpdateFileInfoCacheStatus(
|
|
PRX_CONTEXT RxContext,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbUpdateBasicFileInfoCacheStatus(
|
|
PRX_CONTEXT RxContext,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbUpdateStandardFileInfoCacheStatus(
|
|
PRX_CONTEXT RxContext,
|
|
NTSTATUS Status);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFileInfoCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbInvalidateBasicFileInfoCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbInvalidateInternalFileInfoCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbInvalidateStandardFileInfoCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbUpdateFileInfoCacheFileSize(
|
|
PRX_CONTEXT RxContext,
|
|
PLARGE_INTEGER FileSize);
|
|
|
|
VOID
|
|
MRxSmbUpdateBasicFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
ULONG FileAttributes,
|
|
PLARGE_INTEGER pLastWriteTime);
|
|
|
|
VOID
|
|
MRxSmbUpdateBasicFileInfoCacheAll(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_BASIC_INFORMATION Basic);
|
|
|
|
VOID
|
|
MRxSmbUpdateStandardFileInfoCache(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_STANDARD_INFORMATION Standard,
|
|
BOOLEAN IsDirectory);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsFileInfoCacheFound(
|
|
PRX_CONTEXT RxContext,
|
|
PSMBPSE_FILEINFO_BUNDLE FileInfo,
|
|
NTSTATUS *Status,
|
|
PUNICODE_STRING OriginalFileName);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsBasicFileInfoCacheFound(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_BASIC_INFORMATION Basic,
|
|
NTSTATUS *Status,
|
|
PUNICODE_STRING OriginalFileName);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsStandardFileInfoCacheFound(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_STANDARD_INFORMATION Standard,
|
|
NTSTATUS *Status,
|
|
PUNICODE_STRING OriginalFileName);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsInternalFileInfoCacheFound(
|
|
PRX_CONTEXT RxContext,
|
|
PFILE_INTERNAL_INFORMATION Internal,
|
|
NTSTATUS *Status,
|
|
PUNICODE_STRING OriginalFileName);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetFileInfoCacheStatus(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsFileNotFoundCached(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbCacheFileNotFound(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFileNotFoundCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFileNotFoundCacheForRename(
|
|
PRX_CONTEXT RxContext
|
|
);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsStreamFile(
|
|
PUNICODE_STRING FileName,
|
|
PUNICODE_STRING AdjustFileName);
|
|
|
|
VOID
|
|
MRxSmbUpdateFileInfoCacheFromDelete(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
NTSTATUS
|
|
MRxSmbQueryFileInformationFromPseudoOpen(
|
|
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE,
|
|
FILE_INFORMATION_CLASS FileInformationClass);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsLongFileName(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
VOID
|
|
SmbInitializeSmbSecuritySignature(
|
|
IN OUT PSMBCE_SERVER Server,
|
|
IN PUCHAR SessionKey,
|
|
IN PUCHAR ChallengeResponse,
|
|
IN ULONG ChallengeResponseLength);
|
|
|
|
NTSTATUS
|
|
MRxSmbAreFilesAliased(
|
|
IN PFCB Fcb1,
|
|
IN PFCB Fcb2);
|
|
|
|
NTSTATUS
|
|
MRxSmbPreparseName(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN PUNICODE_STRING Name
|
|
);
|
|
|
|
NTSTATUS
|
|
MRxSmbGetConnectionId(
|
|
IN OUT PRX_CONTEXT RxContext,
|
|
IN OUT PRX_CONNECTION_ID RxConnectionId
|
|
);
|
|
|
|
VOID
|
|
MRxSmbCacheFullDirectory(
|
|
PRX_CONTEXT RxContext,
|
|
IN PVOID Contents,
|
|
IN ULONG Length,
|
|
IN OUT PMRX_SMB_FOBX smbFobx);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFullDirectoryCache(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsFullDirectoryCached(
|
|
PRX_CONTEXT RxContext,
|
|
OUT PVOID Contents,
|
|
OUT PULONG Length,
|
|
IN OUT PMRX_SMB_FOBX smbFobx,
|
|
OUT NTSTATUS *Status);
|
|
|
|
VOID
|
|
MRxSmbCreateParentFullDirPrefix(
|
|
IN PUNICODE_STRING Source,
|
|
IN OUT PUNICODE_STRING Target);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFullDirectoryCacheParent(
|
|
PRX_CONTEXT RxContext,
|
|
BOOLEAN Benign);
|
|
|
|
VOID
|
|
MRxSmbInvalidateFullDirectoryCacheParentForRename(
|
|
PRX_CONTEXT RxContext,
|
|
BOOLEAN Benign);
|
|
|
|
VOID
|
|
MRxSmbCreateSuffix(
|
|
PUNICODE_STRING Source,
|
|
PUNICODE_STRING Target);
|
|
|
|
VOID
|
|
MRxSmbCreateTargetFullDirPrefix(
|
|
IN PUNICODE_STRING Source,
|
|
IN OUT PUNICODE_STRING Target);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsFileInFullDirectoryCache(
|
|
PRX_CONTEXT RxContext,
|
|
PBOOLEAN FileFound,
|
|
PFILE_BASIC_INFORMATION pBuffer
|
|
);
|
|
|
|
BOOLEAN
|
|
MRxSmbIsFileInPartialDirectoryCache (
|
|
PNAME_CACHE NameCache,
|
|
PUNICODE_STRING OriginalFileName,
|
|
PBOOLEAN CacheValid,
|
|
PFILE_BASIC_INFORMATION pBuffer);
|
|
|
|
BOOLEAN
|
|
MRxSmbNonTrivialFileName(
|
|
PRX_CONTEXT RxContext);
|
|
|
|
|
|
#if DBG
|
|
#define MRxSmbAllocateSideBuffer(a,b,c,d) __MRxSmbAllocateSideBuffer(a,b,c,d)
|
|
#else
|
|
#define MRxSmbAllocateSideBuffer(a,b,c,d) __MRxSmbAllocateSideBuffer(a,b,c)
|
|
#endif
|
|
|
|
|
|
#endif // _SMBMRX_H_
|