WDF_PTR_ADD_OFFSET - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// wdfcore.h

PVOID WDF_PTR_ADD_OFFSET(
    _ptr,
    _offset
);
View the official Windows hardware development documentation

NtDoc

No description available.

Windows hardware development documentation (wdf-ptr-add-offset)

WDF_PTR_ADD_OFFSET macro

The WDF_PTR_ADD_OFFSET macro adds an offset value to an address and returns the resulting address.

Parameters

_ptr Specifies an address.

_offset Specifies the offset value in bytes.

Return value

Returns a pointer to the resulting address.

Remarks

This macro invokes WDF_PTR_ADD_OFFSET_TYPE with the _type parameter set to PVOID.

The macro is defined as follows:

#define WDF_PTR_ADD_OFFSET(_ptr, _offset) \
        WDF_PTR_ADD_OFFSET_TYPE(_ptr, _offset, PVOID)

Here is an example from the Toaster sample (toaster\func\featured\wmi.c). In the example, the driver calls WDF_PTR_ADD_OFFSET to add an offset to an address to determine a destination buffer address to pass to the WDF_WMI_BUFFER_APPEND_STRING function.

        //
        // Write the instance name
        //
        size -= wnodeSize;
        status = WDF_WMI_BUFFER_APPEND_STRING(
            WDF_PTR_ADD_OFFSET(wnode, wnode->OffsetInstanceName),
            size,
            &deviceName,
            &length
            );

        //
        // Size was precomputed, this should never fail
        //
        ASSERT(NT_SUCCESS(status));

        //
        // Write the data, which is the model name as a string
        //
        size -= wnodeInstanceNameSize;
        WDF_WMI_BUFFER_APPEND_STRING(
            WDF_PTR_ADD_OFFSET(wnode,  wnode->DataBlockOffset),
            size,
            &modelName,
            &length
            );

Requirements

Target platform Universal
Minimum KMDF version 1.5
Minimum UMDF version 2.0
Header Wdfcore.h (include Wdf.h)