They're pagable in NT6, I don't know whether that's the case in NT5.

Change looks good to me, I'm not really sure why Alex used NNP? 
Perhaps our kernel does/did things slightly differently back when he wrote the 
Null driver?

Ged.

-----Original Message-----
From: Ros-dev <ros-dev-boun...@reactos.org> On Behalf Of Thomas Faber
Sent: Monday, 23 April 2018 07:49
To: Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
Cc: ros-dev@reactos.org
Subject: Re: [ros-dev] [ros-diffs] 01/01: [NULL] Additions for the Null driver.

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

_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev


_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to