The purpose of this API is two-fold:
- Pokes the underlying driver to continue IO processing
- Waits on the underlying driver until IO is available
//
// XskNotifyAsync
//
// The purpose of this API is two-fold:
// 1) Pokes the underlying driver to continue IO processing
// 2) Waits on the underlying driver until IO is available
//
//
XDP_STATUS
XskNotifyAsync(
_In_ HANDLE Socket,
_In_ XSK_NOTIFY_FLAGS Flags,
_Inout_ XDP_OVERLAPPED *Overlapped
);
Flags
One or more XSK_NOTIFY_FLAGS
flags.
TODO
Apps will commonly need to perform both of these actions at once, so a single API is offered to handle both in a single syscall.
When performing both actions, the poke is executed first. If the poke fails, the API ignores the wait and returns immediately with a failure result. If the poke succeeds, then the wait is executed.
Unlike XskNotifySocket
, this routine does not perform the wait inline. Instead, if a wait was requested and could not be immediately satisfied, the routine returns HRESULT_FROM_WIN32(ERROR_IO_PENDING) and the overlapped IO will be completed asynchronously. Once the IO has completed, the XskGetNotifyAsyncResult
routine may be used to retrieve the result flags.