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.
 
 
 
 
 
 

159 lines
3.6 KiB

/*++
Copyright (c) 1989 - 1999 Microsoft Corporation
Module Name:
fsctl.c
Abstract:
This module implements the mini redirector call down routines pertaining to
file system control(FSCTL) and Io Device Control (IOCTL) operations on file
system objects.
--*/
#include "precomp.h"
#pragma hdrstop
#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, MRxSmbFsCtl)
#pragma alloc_text(PAGE, MRxSmbNotifyChangeDirectory)
#pragma alloc_text(PAGE, MRxSmbIoCtl)
#endif
//
// The local debug trace level
//
RXDT_DefineCategory(FSCTRL);
#define Dbg (DEBUG_TRACE_FSCTRL)
NTSTATUS
MRxSmbCoreIoCtl(
SMBPSE_ORDINARY_EXCHANGE_ARGUMENT_SIGNATURE);
NTSTATUS
MRxSmbFsCtl(
IN OUT PRX_CONTEXT RxContext)
/*++
Routine Description:
This routine performs an FSCTL operation (remote) on a file across the network
Arguments:
RxContext - the RDBSS context
Return Value:
RXSTATUS - The return status for the operation
Notes:
The FSCTL's handled by a mini rdr can be classified into one of two categories.
In the first category are those FSCTL's whose implementation are shared between
RDBSS and the mini rdr's and in the second category are those FSCTL's which
are totally implemented by the mini rdr's. To this a third category can be
added, i.e., those FSCTL's which should never be seen by the mini rdr's. The
third category is solely intended as a debugging aid.
The FSCTL's handled by a mini rdr can be classified based on functionality
--*/
{
RxCaptureFobx;
RxCaptureFcb;
NTSTATUS Status = STATUS_INVALID_DEVICE_REQUEST;
PLOWIO_CONTEXT pLowIoContext = &RxContext->LowIoContext;
ULONG FsControlCode = pLowIoContext->ParamsFor.FsCtl.FsControlCode;
PAGED_CODE();
RxDbgTrace(+1, Dbg, ("MRxSmbFsCtl...\n", 0));
RxDbgTrace( 0, Dbg, ("MRxSmbFsCtl = %08lx\n", FsControlCode));
RxDbgTrace(-1, Dbg, ("MRxSmbFsCtl -> %08lx\n", Status ));
return Status;
}
NTSTATUS
MRxSmbNotifyChangeDirectory(
IN OUT PRX_CONTEXT RxContext)
/*++
Routine Description:
This routine performs a directory change notification operation
Arguments:
RxContext - the RDBSS context
Return Value:
RXSTATUS - The return status for the operation
Notes:
A directory change notification opertaion is an asychronous operation. It
consists of sending a SMB requesting change notification whose response is
obtained when the desired change is affected on the server.
--*/
{
NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
RxDbgTrace(+1, Dbg, ("MRxNotifyChangeDirectory...Entry\n", 0));
RxDbgTrace(-1, Dbg, ("MRxSmbNotifyChangeDirectory -> %08lx\n", Status ));
return Status;
}
NTSTATUS
MRxSmbIoCtl(
IN OUT PRX_CONTEXT RxContext)
/*++
Routine Description:
This routine performs an IOCTL operation. Currently, no calls are remoted; in
fact, the only call accepted is for debugging.
Arguments:
RxContext - the RDBSS context
Return Value:
RXSTATUS - The return status for the operation
Notes:
--*/
{
NTSTATUS Status = STATUS_INVALID_DEVICE_REQUEST;
PLOWIO_CONTEXT pLowIoContext = &RxContext->LowIoContext;
ULONG IoControlCode = pLowIoContext->ParamsFor.IoCtl.IoControlCode;
PAGED_CODE();
RxDbgTrace(+1, Dbg, ("MRxSmbIoCtl...\n", 0));
RxDbgTrace( 0, Dbg, ("MRxSmbIoCtl IOCTL: = %08lx\n", IoControlCode));
RxDbgTrace(-1, Dbg, ("MRxSmbIoCtl Status -> %08lx\n", Status ));
return Status;
}