InitializeFastIo

BOOL CNdisApi::InitializeFastIo ( PFAST_IO_SECTION pFastIo, DWORD dwSize );

Initializes Fast I/O to fetch packets from the driver through the shared memory section. Once initialized, the filter driver writes intercepted packets into this section until memory space is available (and application read operation not in progress). Otherwise, packets are queued into the internal packets queue and can be retrieved from the driver using ReadPacketsUnsorted.

Return Value:
TRUE if call was successful, FALSE otherwise

Parameters:
pFastIo
Memory buffer allocated for the Fast I/O.

dwSize
Size of the memory buffer above.

Available starting version 3.2.20. Fast I/O is supported for Windows Vista and later. WOW64 mode is not supported.

Example:

using fast_io_storage_type_t = std::aligned_storage_t<fast_io_size, 0x1000>;
const auto fast_io_ptr = std::make_unique<fast_io_storage_type_t>();
const auto fast_io_section = reinterpret_cast<PFAST_IO_SECTION>(fast_io_ptr.get());
		
if (InitializeFastIo(fast_io_section, fast_io_size))
{
    std::cout << std::endl << "Successfully initialized fast I/O functionality" << std::endl;
}
else
{
    std::cout << std::endl << "Failed tp initialize fast I/O functionality" << std::endl;
}

This member calls the filter driver with IOCTL_NDISRD_INITIALIZE_FAST_IO control code (see details below).

IOCTL_NDISRD_INITIALIZE_FAST_IO

Input BufferINITIALIZE_FAST_IO_PARAMS
Input Buffer Sizesizeof (INITIALIZE_FAST_IO_PARAMS)
Output BufferNone
Output Buffer Size0