A client application sends message data and confirms publication with the IOCTL_NFP_SET_PAYLOAD request.

Major Code


Input Buffer

The input buffer contains the message data to transmit.

Input Buffer Length

Output Buffer


Output Buffer Length

Input / Output Buffer

Input / Output Buffer Length

Status Block

Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.

Otherwise, Status to the appropriate error condition as a NTSTATUS code.

For more information, see NTSTATUS Values.


The following actions are required when using this IOCTL:

  • If this IOCTL is sent on a handle that hasn’t previously been opened on a “Pubs...” filename, the driver MUST complete it with STATUS_INVALID_DEVICE_STATE.

  • The message data is write-once. If this IOCTL succeeds once, any subsequent IOCTL_NFP_SET_PAYLOAD received on the same handle MUST be completed with STATUS_INVALID_DEVICE_STATE.

  • If the IOCTL contains an output buffer, the driver MUST complete the IOCTL with STATUS_INVALID_PARAMETER.

  • If the input buffer is larger than the driver’s maximum message size, the driver MUST complete the IOCTL with STATUS_INVALID_BUFFER_SIZE.

  • If any device becomes proximate after this IOCTL succeeds, and before the handle is closed, then the message data (along with its type) MUST be transmitted only once to the proximate device.

  • If the same (or different) device becomes proximate again before the handle is closed, the message MUST be transmitted once again.

  • If a device is currently proximate when this IOCTL is successfully completed, then the message data (along with its type) MUST be transmitted (only once) to the proximate device. This applies even if the handle is immediately closed.


Windows version Windows 8 Windows 8
Header nfpdev.h

See Also

Near field communication (NFC) overall design guide

Near field proximity design guide (Tap and Do, NFP provider model, driver requirements)