ioctl VIDIOC_QUERYBUF
&manvol;

# VIDIOC_QUERYBUF

Query the status of a buffer

    	int ioctl
    	int fd
    	int request
    	struct v4l2_buffer *argp

## Arguments

`fd`

  &fd;

`request`

  VIDIOC_QUERYBUF

`argp`

## Description

This ioctl is part of the memory mapping I/O method. It can be used to query the status of a buffer at any time after buffers have been allocated with the &VIDIOC-REQBUFS; ioctl.

Applications set the type field of a &v4l2-buffer; to the same buffer type as was previously used with &v4l2-format; type and &v4l2-requestbuffers; type, and the index field. Valid index numbers range from zero to the number of buffers allocated with &VIDIOC-REQBUFS; (&v4l2-requestbuffers; count) minus one. The reserved field should to set to 0. When using the multi-planar API, the m.planes field must contain a userspace pointer to an array of &v4l2-plane; and the length field has to be set to the number of elements in that array. After calling `VIDIOC_QUERYBUF` with a pointer to this structure drivers return an error code or fill the rest of the structure.

In the flags field the `V4L2_BUF_FLAG_MAPPED`, `V4L2_BUF_FLAG_QUEUED` and `V4L2_BUF_FLAG_DONE` flags will be valid. The memory field will be set to the current I/O method. For the single-planar API, the m.offset contains the offset of the buffer from the start of the device memory, the length field its size. For the multi-planar API, fields m.mem_offset and length in the m.planes array elements will be used instead. The driver may or may not set the remaining fields and flags, they are meaningless in this context.

The v4l2_buffer structure is specified in .

&return-value;

EINVAL

  The buffer type is not supported, or the index is out of bounds.