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.
|
|
/*++
Module Name:
flush.c
Environment:
Kernel mode
Revision History :
--*/
#include "precomp.h"
NTSTATUS MoxaFlush( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { PMOXA_DEVICE_EXTENSION extension = DeviceObject->DeviceExtension;
MoxaKdPrint(MX_DBG_TRACE,("Leaving MoxaFlush\n")); if ((extension->ControlDevice == TRUE)||(extension->DeviceIsOpened == FALSE)) { Irp->IoStatus.Status = STATUS_CANCELLED; Irp->IoStatus.Information=0L; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_CANCELLED; }
if (MoxaIRPPrologue(Irp, extension) != STATUS_SUCCESS) { MoxaCompleteRequest(extension, Irp, IO_NO_INCREMENT); return STATUS_CANCELLED; }
if (MoxaCompleteIfError( DeviceObject, Irp ) != STATUS_SUCCESS) {
return STATUS_CANCELLED;
}
Irp->IoStatus.Information = 0L;
return MoxaStartOrQueue( extension, Irp, &extension->WriteQueue, &extension->CurrentWriteIrp, MoxaStartFlush );
}
NTSTATUS MoxaStartFlush( IN PMOXA_DEVICE_EXTENSION Extension ) {
PIRP newIrp;
Extension->CurrentWriteIrp->IoStatus.Status = STATUS_SUCCESS;
MoxaGetNextWrite( &Extension->CurrentWriteIrp, &Extension->WriteQueue, &newIrp, TRUE, Extension );
if (newIrp)
MoxaStartWrite(Extension);
return STATUS_SUCCESS;
}
|