{
NTSTATUS ntStatus = STATUS_SUCCESS;
- AFSDeviceExt *pDeviceExt = (AFSDeviceExt *)DeviceObject->DeviceExtension;
IO_STACK_LOCATION *pIrpSp = IoGetCurrentIrpStackLocation( Irp);
__try
//
AFSCleanupIrpPool();
+
+ //
+ // And reset the Service PID
+ //
+ AFSDeregisterService();
+
}
if( FlagOn( (ULONG_PTR)pIrpSp->FileObject->FsContext, AFS_REDIRECTOR_INSTANCE))
NOTHING;
}
- __except( AFSExceptionFilter( GetExceptionCode(), GetExceptionInformation()) )
+ __except( AFSExceptionFilter( __FUNCTION__, GetExceptionCode(), GetExceptionInformation()) )
{
AFSDbgLogMsg( 0,
0,
"EXCEPTION - AFSCleanup\n");
+
+ AFSDumpTraceFilesFnc();
}
return ntStatus;
AFSCommonCleanup( IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
-
+ UNREFERENCED_PARAMETER(DeviceObject);
NTSTATUS ntStatus = STATUS_SUCCESS;
- AFSDeviceExt *pDeviceExt = (AFSDeviceExt *)DeviceObject->DeviceExtension;
IO_STACK_LOCATION *pIrpSp = IoGetCurrentIrpStackLocation( Irp);
PFILE_OBJECT pFileObject = NULL;
AFSDeviceExt *pControlDeviceExt = (AFSDeviceExt *)AFSDeviceObject->DeviceExtension;
BOOLEAN bCompleteRequest = TRUE;
-
+ AFSFcb* pFcb = NULL;
__Enter
{
pFileObject = pIrpSp->FileObject;
- if( pIrpSp->FileObject->FsContext == NULL)
+ pFcb = (AFSFcb*) pIrpSp->FileObject->FsContext;
+
+ if( pFcb == NULL ||
+ pFcb->Header.NodeTypeCode == AFS_REDIRECTOR_FCB)
{
//