[dpdk-dev] [PATCH 1/1] virt2phys: virtual to physical address translator for Windows
Ranjit Menon
ranjit.menon at intel.com
Fri Apr 10 21:39:13 CEST 2020
On 4/9/2020 7:50 PM, Dmitry Kozlyuk wrote:
>>> +
>>> +_Use_decl_annotations_
>>> +VOID
>>> +virt2phys_device_EvtIoInCallerContext(
>>> + IN WDFDEVICE device, IN WDFREQUEST request)
>>> +{
>>> + WDF_REQUEST_PARAMETERS params;
>>> + ULONG code;
>>> + PVOID *virt;
>>
>> Should this be PVOID virt; (instead of PVOID *virt)?
>> If so, changes will be required to parameters passed in to
>> WdfRequestRetrieveInputBuffer() call.
>
> This should be PVOID *virt (pointer to an untyped pointer). User-mode passes
> a virtual address as a PVOID value, WdfRequestRetrieveInputBuffer() fills
> virt with the address of that parameter, so that *virt is the virtual address
> user-mode wants to translate into a physical one.
>
Makes sense. Thanks for the explanation, Dmitry.
>>
>>> + PHYSICAL_ADDRESS *phys;
>>> + size_t size;
>>> + NTSTATUS status;
>>> +
> [snip]
>>> +
>>> + status = WdfRequestRetrieveOutputBuffer(
>>> + request, sizeof(*phys), &phys, &size);
>>
>> Better to put a (PVOID *)typecast for &phys here:
>> status = WdfRequestRetrieveOutputBuffer(
>> request, sizeof(*phys), (PVOID *)&phys, &size);
>
> What do you mean? Without a typecast the built-in static analyzer emits a
> warning (and all warnings are treated as errors for a driver):
>
> virt2phys.c(108,46): error C2220: the following warning is treated as an error
> virt2phys.c(108,46): warning C4047: 'function': 'PVOID *' differs in levels of indirection from 'PVOID **'
> virt2phys.c(108,46): warning C4022: 'WdfRequestRetrieveInputBuffer': pointer mismatch for actual parameter 3
>
>>> + if (!NT_SUCCESS(status)) {
>>> + KdPrint(("WdfRequestRetrieveOutputBuffer() failed, "
>>> + "status=%08x\n", status));
>>> + WdfRequestComplete(request, status);
>>> + return;
>>> + }
>>> +
>>> + *phys = MmGetPhysicalAddress(*virt);
>>> +
>>> + WdfRequestCompleteWithInformation(
>>> + request, STATUS_SUCCESS, sizeof(*phys));
>>> +}
>>
>> <Snip!>
>>
>> Co-installers are no longer required (and discouraged) as per Microsoft.
>> So you can remove the lines indicated below from the .inf file.
>
> Thanks, will remove in v2. They were generated by WDK solution template.
>
I see the above changes in v2. Thanks!
ranjit m.
More information about the dev
mailing list