[ros-dev] [ros-diffs] 01/01: [NULL] Additions for the Null driver.
Thomas Faber
thomas.faber at reactos.org
Mon Apr 23 06:48:49 UTC 2018
On 2018-04-22 22:23, Hermès Bélusca-Maïto wrote:
> diff --git a/drivers/base/null/null.c b/drivers/base/null/null.c
> index 610e886ddd..0d4ed541de 100644
> --- a/drivers/base/null/null.c
> +++ b/drivers/base/null/null.c
> @@ -181,26 +199,16 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject,
> DriverObject->MajorFunction[IRP_MJ_READ] = NullDispatch;
> DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = NullDispatch;
> DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NullDispatch;
> + DriverObject->DriverUnload = NullUnload;
>
> - /* Allocate the fast I/O dispatch table */
> - FastIoDispatch = ExAllocatePoolWithTag(NonPagedPool,
> - sizeof(FAST_IO_DISPATCH),
> - 'llun');
> - if (!FastIoDispatch)
> - {
> - /* Failed, cleanup */
> - IoDeleteDevice(DeviceObject);
> - return STATUS_INSUFFICIENT_RESOURCES;
> - }
> -
> - /* Initialize it */
> - RtlZeroMemory(FastIoDispatch, sizeof(FAST_IO_DISPATCH));
> - FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
> + /* Initialize the fast I/O dispatch table */
> + RtlZeroMemory(&FastIoDispatch, sizeof(FastIoDispatch));
> + FastIoDispatch.SizeOfFastIoDispatch = sizeof(FastIoDispatch);
>
> /* Setup our pointers */
> - FastIoDispatch->FastIoRead = NullRead;
> - FastIoDispatch->FastIoWrite = NullWrite;
> - DriverObject->FastIoDispatch = FastIoDispatch;
> + FastIoDispatch.FastIoRead = NullRead;
> + FastIoDispatch.FastIoWrite = NullWrite;
> + DriverObject->FastIoDispatch = &FastIoDispatch;
Are you sure FAST_IO_DISPATCH is allowed to be pageable? It seems to
only be used at low IRQLs, so it seems logical. However I see it
allocated nonpaged everywhere else and can't seem to find definitive
documentation on the subject.
(And yes, most filesystem drivers use a static structure, but those
drivers don't use MmPageEntireDriver)
Thanks,
Thomas
More information about the Ros-dev
mailing list