'\" t
.\" Title: nvme-id-ctrl
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 02/16/2026
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: Persian
.\"
.TH "NVME\-ID\-CTRL" "1" "02/16/2026" "NVMe" "راهنمای NVMe"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "نام (NAME)"
nvme-id-ctrl \- ارسال دستور شناسایی کنترلر NVMe و بازگرداندن نتیجه و ساختار
.SH "خلاصه دستور (SYNOPSIS)"
.sp
.nf
\fInvme id\-ctrl\fR [\-\-vendor\-specific | \-V] [\-\-raw\-binary | \-b]
[\-\-output\-format= | \-o ] [\-\-verbose | \-v]
.fi
.SH "توضیحات (DESCRIPTION)"
.sp
برای دستگاه NVMe دادهشده، یک دستور شناسایی کنترلر (identify controller) ارسال میکند و نتیجه و ساختار بازگرداندهشده را ارائه میدهد\&.
.sp
پارامتر الزامی است و میتواند دستگاه کاراکتری NVMe (مانند: /dev/nvme0) یا یک دستگاه بلوکی فضاینام (مانند: /dev/nvme0n1) باشد\&.
.sp
در صورت موفقیت، بسته به فلگهای گزینه، ساختار ممکن است به یکی از چندین روش بازگردانده شود؛ ساختار میتواند توسط برنامه تجزیه شود یا بافر خام در stdout چاپ شود\&.
.SH "گزینهها (OPTIONS)"
.PP
\-b, \-\-raw\-binary
.RS 4
چاپ بافر خام در خروجی استاندارد (stdout)\&. ساختار توسط برنامه تجزیه نمیشود\&. این گزینه بر گزینههای vendor specific و human readable تقدم دارد و آنها را لغو میکند\&.
.RE
.PP
\-V, \-\-vendor\-specific
.RS 4
علاوه بر تجزیه فیلدهای شناختهشده، این گزینه بخش اختصاصی سازنده (vendor specific) ساختار را به صورت هگزادسیمال همراه با تفسیر اسکی دامپ میکند\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
این گزینه بسیاری از فیلدهای بیتی را تجزیه کرده و در قالبهای خوانا برای انسان قالببندی میکند\&.
.RE
.PP
\-o , \-\-output\-format=
.RS 4
تنظیم قالب گزارش به
\fInormal\fR،
\fIjson\fR
یا
\fIbinary\fR\&. در هر زمان تنها یک قالب خروجی قابل استفاده است\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
افزایش جزئیات اطلاعات در خروجی\&.
.RE
.SH "مثالها (EXAMPLES)"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
تفسیر بافر بازگرداندهشده توسط برنامه و نمایش فیلدهای شناختهشده در قالبی خوانا برای انسان:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
علاوه بر نمایش فیلدهای شناختهشده، برنامه فیلد منحصربهفرد سازنده را نیز نمایش دهد:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-vendor\-specific
# nvme id\-ctrl /dev/nvme0 \-V
.fi
.if n \{\
.RE
.\}
.sp
دستور فوق بافر
\fIvs\fR
را به صورت هگزادسیمال دامپ میکند، زیرا نحوه تفسیر آن را نمیداند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
بازگرداندن ساختار خام به صورت دودویی (binary) توسط برنامه:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-raw\-binary > id_ctrl\&.raw
# nvme id\-ctrl /dev/nvme0 \-b > id_ctrl\&.raw
.fi
.if n \{\
.RE
.\}
.sp
عدم تغییر مسیر خروجی استاندارد (stdout) هنگام استفاده از این حالت احتمالاً ایده خوبی نیست\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
همچنین ممکن است بخواهید دادهها را به برنامه دیگری ارسال کنید که بتواند بافر خام را تجزیه کند\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-raw\-binary | nvme_parse_id_ctrl
.fi
.if n \{\
.RE
.\}
.sp
برنامه تجزیهکننده در مثال بالا میتواند برنامهای باشد که ساختار را به شیوه دلخواه شما نشان دهد\&. برنامه زیر نمونهای از این دست است که آن را تجزیه میکند و میتواند خروجی را از طریق لوله (pipe)،
\*(Aq|\*(Aq،
همانطور که در مثال بالا نشان داده شده دریافت کند، یا میتوانید با
\*(Aqcat\*(Aq
یک بافر خروجی ذخیرهشده را به آن هدایت کنید\&.
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
/* File: nvme_parse_id_ctrl\&.c */
#include
#include
#include
int main(int argc, char **argv)
{
unsigned char buf[sizeof(struct nvme_id_ctrl)];
struct nvme_id_ctrl *ctrl = (struct nvme_id_ctrl *)buf;
if (read(STDIN_FILENO, buf, sizeof(buf)))
return 1;
printf("vid : %#x\en", ctrl\->vid);
printf("ssvid : %#x\en", ctrl\->ssvid);
return 0;
}
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
بخشی از مجموعه nvme\-user
.SH "همچنین ببینید (SEE ALSO)"
.BR nvme (1)