171 lines
3.3 KiB
C
171 lines
3.3 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1989 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
locks.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module implements the mini redirector call down routines pertaining to locks
|
|||
|
of file system objects.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Balan Sethu Raman [SethuR] 7-March-1995
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "precomp.h"
|
|||
|
#pragma hdrstop
|
|||
|
#pragma warning(error:4101) // Unreferenced local variable
|
|||
|
|
|||
|
//
|
|||
|
// The local debug trace level
|
|||
|
//
|
|||
|
|
|||
|
#define Dbg (DEBUG_TRACE_LOCKCTRL)
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
MRxProxyLocks(
|
|||
|
IN PRX_CONTEXT RxContext)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine handles network requests for filelocks
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
RxContext - the RDBSS context
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
RXSTATUS - The return status for the operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status = STATUS_SUCCESS;
|
|||
|
|
|||
|
RxCaptureFcb;
|
|||
|
RxCaptureFobx;
|
|||
|
|
|||
|
PMRX_SRV_OPEN SrvOpen = capFobx->pSrvOpen;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
|
|||
|
RxDbgTrace(+1, Dbg, ("MRxProxyLocks\n", 0 ));
|
|||
|
|
|||
|
ASSERT( NodeType(capFobx->pSrvOpen) == RDBSS_NTC_SRVOPEN );
|
|||
|
|
|||
|
Status = STATUS_NOT_IMPLEMENTED;
|
|||
|
|
|||
|
|
|||
|
RxDbgTrace(-1, Dbg, ("MRxProxyLocks exit with status=%08lx\n", Status ));
|
|||
|
return(Status);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#if 0
|
|||
|
NTSTATUS
|
|||
|
MRxProxyUnlockRoutine (
|
|||
|
IN PRX_CONTEXT RxContext,
|
|||
|
IN PFILE_LOCK_INFO LockInfo
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called from the RDBSS whenever the fsrtl lock package calls the rdbss unlock routine.
|
|||
|
CODE.IMPROVEMENT what should really happen is that this should only be called for unlockall and unlockbykey;
|
|||
|
the other cases should be handled in the rdbss.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
Context - the RxContext associated with this request
|
|||
|
LockInfo - gives information about the particular range being unlocked
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
RXSTATUS - The return status for the operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
PLOWIO_CONTEXT LowIoContext = &RxContext->LowIoContext;
|
|||
|
|
|||
|
switch (LowIoContext->Operation) {
|
|||
|
case LOWIO_OP_SHAREDLOCK:
|
|||
|
case LOWIO_OP_EXCLUSIVELOCK:
|
|||
|
case LOWIO_OP_UNLOCK:
|
|||
|
return STATUS_SUCCESS;
|
|||
|
case LOWIO_OP_UNLOCKALL:
|
|||
|
case LOWIO_OP_UNLOCKALLBYKEY:
|
|||
|
default:
|
|||
|
return STATUS_NOT_IMPLEMENTED;
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
MRxProxyCompleteBufferingStateChangeRequest(
|
|||
|
IN OUT PRX_CONTEXT RxContext,
|
|||
|
IN OUT PMRX_SRV_OPEN SrvOpen,
|
|||
|
IN PVOID pContext
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called to assert the locks that the wrapper has buffered. currently, it is synchronous!
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
RxContext - the open instance
|
|||
|
SrvOpen - tells which fcb is to be used. CODE.IMPROVEMENT this param is redundant if the rxcontext is filled out completely
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
RXSTATUS - The return status for the operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status;
|
|||
|
PMRX_FCB Fcb = SrvOpen->pFcb;
|
|||
|
|
|||
|
PMRX_PROXY_SRV_OPEN proxySrvOpen = MRxProxyGetSrvOpenExtension(SrvOpen);
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
|
|||
|
RxDbgTrace(+1, Dbg, ("MRxProxyCompleteBufferingStateChangeRequest\n", 0 ));
|
|||
|
|
|||
|
ASSERT( NodeType(SrvOpen) == RDBSS_NTC_SRVOPEN );
|
|||
|
|
|||
|
RxDbgTrace(0,Dbg,("-->Context %lx\n",pContext));
|
|||
|
|
|||
|
Status = STATUS_SUCCESS;
|
|||
|
|
|||
|
RxDbgTrace(-1, Dbg, ("MRxProxyAssertBufferedFileLocks exit with status=%08lx\n", Status ));
|
|||
|
return(Status);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
MRxProxyIsLockRealizable (
|
|||
|
IN OUT PMRX_FCB pFcb,
|
|||
|
IN PLARGE_INTEGER ByteOffset,
|
|||
|
IN PLARGE_INTEGER Length,
|
|||
|
IN ULONG LowIoLockFlags
|
|||
|
)
|
|||
|
{
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
return(STATUS_SUCCESS);
|
|||
|
}
|
|||
|
|
|||
|
|