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.
|
|
#include "pch.h"
NTSTATUS PptFdoClose( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { PFDO_EXTENSION fdx = DeviceObject->DeviceExtension;
PAGED_CODE();
//
// Always succeed an IRP_MJ_CLOSE.
//
//
// Keep running count of CREATE requests vs CLOSE requests.
//
ExAcquireFastMutex( &fdx->OpenCloseMutex ); if( fdx->OpenCloseRefCount > 0 ) { //
// prevent rollover - strange as it may seem, it is perfectly
// legal for us to receive more closes than creates - this
// info came directly from Mr. PnP himself
//
if( ((LONG)InterlockedDecrement( &fdx->OpenCloseRefCount )) < 0 ) { // handle underflow
InterlockedIncrement( &fdx->OpenCloseRefCount ); } } ExReleaseFastMutex( &fdx->OpenCloseMutex ); DD((PCE)fdx,DDT,"PptFdoClose - OpenCloseRefCount after close = %d\n", fdx->OpenCloseRefCount);
return P4CompleteRequest( Irp, STATUS_SUCCESS, 0 ); }
|