mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 20:25:39 +00:00
[UDFS]
Misc fixes by Thomas. CORE-4375 svn path=/trunk/; revision=74925
This commit is contained in:
parent
3767fcf5cc
commit
c91b3835c5
8 changed files with 16 additions and 11 deletions
|
@ -96,7 +96,7 @@ extern OSSTATUS UDFGetBlockSize(PDEVICE_OBJECT DeviceObject, // the target devic
|
||||||
extern OSSTATUS UDFGetDiskInfo(IN PDEVICE_OBJECT DeviceObject, // the target device object
|
extern OSSTATUS UDFGetDiskInfo(IN PDEVICE_OBJECT DeviceObject, // the target device object
|
||||||
IN PVCB Vcb); // Volume control block from this DevObj
|
IN PVCB Vcb); // Volume control block from this DevObj
|
||||||
|
|
||||||
extern VOID UDFEjectReqWaiter(IN PVOID Context);
|
extern VOID NTAPI UDFEjectReqWaiter(IN PVOID Context);
|
||||||
|
|
||||||
extern VOID UDFStopEjectWaiter(PVCB Vcb);
|
extern VOID UDFStopEjectWaiter(PVCB Vcb);
|
||||||
|
|
||||||
|
|
|
@ -686,6 +686,7 @@ UDFDoDelayedClose(
|
||||||
It operates until reach lower threshold
|
It operates until reach lower threshold
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI
|
||||||
UDFDelayedClose(
|
UDFDelayedClose(
|
||||||
PVOID unused
|
PVOID unused
|
||||||
)
|
)
|
||||||
|
|
|
@ -900,7 +900,7 @@ UDFStartEjectWaiter(
|
||||||
// terminates automatically
|
// terminates automatically
|
||||||
ASSERT(!(Vcb->VCBFlags & UDF_VCB_FLAGS_STOP_WAITER_EVENT));
|
ASSERT(!(Vcb->VCBFlags & UDF_VCB_FLAGS_STOP_WAITER_EVENT));
|
||||||
Vcb->VCBFlags |= UDF_VCB_FLAGS_STOP_WAITER_EVENT;
|
Vcb->VCBFlags |= UDF_VCB_FLAGS_STOP_WAITER_EVENT;
|
||||||
ExInitializeWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), (PWORKER_THREAD_ROUTINE)UDFEjectReqWaiter, Vcb->EjectWaiter);
|
ExInitializeWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), UDFEjectReqWaiter, Vcb->EjectWaiter);
|
||||||
UDFPrint(("UDFStartEjectWaiter: create thread\n"));
|
UDFPrint(("UDFStartEjectWaiter: create thread\n"));
|
||||||
ExQueueWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), DelayedWorkQueue);
|
ExQueueWorkItem(&(Vcb->EjectWaiter->EjectReqWorkQueueItem), DelayedWorkQueue);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1174,7 +1174,7 @@ UDFPostRequest(
|
||||||
KeReleaseSpinLock( &(Vcb->OverflowQueueSpinLock), SavedIrql );
|
KeReleaseSpinLock( &(Vcb->OverflowQueueSpinLock), SavedIrql );
|
||||||
|
|
||||||
// queue up the request
|
// queue up the request
|
||||||
ExInitializeWorkItem(&(PtrIrpContext->WorkQueueItem), (PWORKER_THREAD_ROUTINE)UDFCommonDispatch, PtrIrpContext);
|
ExInitializeWorkItem(&(PtrIrpContext->WorkQueueItem), UDFCommonDispatch, PtrIrpContext);
|
||||||
|
|
||||||
ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), CriticalWorkQueue);
|
ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), CriticalWorkQueue);
|
||||||
// ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), DelayedWorkQueue);
|
// ExQueueWorkItem(&(PtrIrpContext->WorkQueueItem), DelayedWorkQueue);
|
||||||
|
@ -1204,6 +1204,7 @@ UDFPostRequest(
|
||||||
*
|
*
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI
|
||||||
UDFCommonDispatch(
|
UDFCommonDispatch(
|
||||||
IN PVOID Context // actually is a pointer to IRPContext structure
|
IN PVOID Context // actually is a pointer to IRPContext structure
|
||||||
)
|
)
|
||||||
|
|
|
@ -87,7 +87,7 @@ extern ULONG UDFCleanUpFcbChain(IN PVCB Vcb,
|
||||||
|
|
||||||
extern VOID UDFCloseAllDelayed(PVCB Vcb);
|
extern VOID UDFCloseAllDelayed(PVCB Vcb);
|
||||||
|
|
||||||
extern VOID UDFDelayedClose(PVOID unused = NULL);
|
extern VOID NTAPI UDFDelayedClose(PVOID unused = NULL);
|
||||||
|
|
||||||
extern NTSTATUS UDFCloseAllXXXDelayedInDir(IN PVCB Vcb,
|
extern NTSTATUS UDFCloseAllXXXDelayedInDir(IN PVCB Vcb,
|
||||||
IN PUDF_FILE_INFO FileInfo,
|
IN PUDF_FILE_INFO FileInfo,
|
||||||
|
@ -642,7 +642,7 @@ extern NTSTATUS UDFPostRequest(
|
||||||
PtrUDFIrpContext PtrIrpContext,
|
PtrUDFIrpContext PtrIrpContext,
|
||||||
PIRP Irp);
|
PIRP Irp);
|
||||||
|
|
||||||
extern VOID UDFCommonDispatch(
|
extern VOID NTAPI UDFCommonDispatch(
|
||||||
VOID *Context); // actually an IRPContext structure
|
VOID *Context); // actually an IRPContext structure
|
||||||
|
|
||||||
extern NTSTATUS UDFInitializeVCB(
|
extern NTSTATUS UDFInitializeVCB(
|
||||||
|
@ -756,7 +756,7 @@ extern OSSTATUS UDFGetBlockSize(PDEVICE_OBJECT DeviceObject, // the target devic
|
||||||
extern OSSTATUS UDFGetDiskInfo(IN PDEVICE_OBJECT DeviceObject, // the target device object
|
extern OSSTATUS UDFGetDiskInfo(IN PDEVICE_OBJECT DeviceObject, // the target device object
|
||||||
IN PVCB Vcb); // Volume control block from this DevObj
|
IN PVCB Vcb); // Volume control block from this DevObj
|
||||||
|
|
||||||
extern VOID UDFEjectReqWaiter(IN PVOID Context);
|
extern VOID NTAPI UDFEjectReqWaiter(IN PVOID Context);
|
||||||
|
|
||||||
extern VOID UDFStopEjectWaiter(PVCB Vcb);
|
extern VOID UDFStopEjectWaiter(PVCB Vcb);
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ UDFKeyWaiter(
|
||||||
This routine checks for User Eject request & initiates Dismount
|
This routine checks for User Eject request & initiates Dismount
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
|
NTAPI
|
||||||
UDFEjectReqWaiter(
|
UDFEjectReqWaiter(
|
||||||
IN void* Context
|
IN void* Context
|
||||||
)
|
)
|
||||||
|
|
|
@ -537,10 +537,12 @@ UDFVForget(
|
||||||
} // end UDFVForget()
|
} // end UDFVForget()
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI
|
||||||
UDFVWorkItem(
|
UDFVWorkItem(
|
||||||
PUDF_VERIFY_REQ VerifyReq
|
PVOID Context
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
PUDF_VERIFY_REQ VerifyReq = (PUDF_VERIFY_REQ)Context;
|
||||||
PVCB Vcb = VerifyReq->Vcb;
|
PVCB Vcb = VerifyReq->Vcb;
|
||||||
ULONG ReadBytes;
|
ULONG ReadBytes;
|
||||||
// OSSTATUS RC;
|
// OSSTATUS RC;
|
||||||
|
@ -703,7 +705,7 @@ UDFVVerify(
|
||||||
InterlockedIncrement((PLONG)&(VerifyCtx->QueuedCount));
|
InterlockedIncrement((PLONG)&(VerifyCtx->QueuedCount));
|
||||||
#ifndef _CONSOLE
|
#ifndef _CONSOLE
|
||||||
ExInitializeWorkItem( &(VerifyReq->VerifyItem),
|
ExInitializeWorkItem( &(VerifyReq->VerifyItem),
|
||||||
(PWORKER_THREAD_ROUTINE) UDFVWorkItem,
|
UDFVWorkItem,
|
||||||
VerifyReq );
|
VerifyReq );
|
||||||
ExQueueWorkItem( &(VerifyReq->VerifyItem), CriticalWorkQueue );
|
ExQueueWorkItem( &(VerifyReq->VerifyItem), CriticalWorkQueue );
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -179,7 +179,7 @@ DriverEntry(
|
||||||
InitializeListHead( &UDFGlobalData.DirDelayedCloseQueue );
|
InitializeListHead( &UDFGlobalData.DirDelayedCloseQueue );
|
||||||
|
|
||||||
ExInitializeWorkItem( &UDFGlobalData.CloseItem,
|
ExInitializeWorkItem( &UDFGlobalData.CloseItem,
|
||||||
(PWORKER_THREAD_ROUTINE) UDFDelayedClose,
|
UDFDelayedClose,
|
||||||
NULL );
|
NULL );
|
||||||
|
|
||||||
UDFGlobalData.DelayedCloseCount = 0;
|
UDFGlobalData.DelayedCloseCount = 0;
|
||||||
|
@ -312,7 +312,7 @@ DriverEntry(
|
||||||
FsRegistered = TRUE;
|
FsRegistered = TRUE;
|
||||||
|
|
||||||
UDFPrint(("UDF: IoRegisterFsRegistrationChange()\n"));
|
UDFPrint(("UDF: IoRegisterFsRegistrationChange()\n"));
|
||||||
IoRegisterFsRegistrationChange( DriverObject, (PDRIVER_FS_NOTIFICATION)UDFFsNotification );
|
IoRegisterFsRegistrationChange( DriverObject, UDFFsNotification );
|
||||||
|
|
||||||
// delay.QuadPart = -10000000;
|
// delay.QuadPart = -10000000;
|
||||||
// KeDelayExecutionThread(KernelMode, FALSE, &delay); //10 microseconds
|
// KeDelayExecutionThread(KernelMode, FALSE, &delay); //10 microseconds
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue