【请教】 资源管理器处理_IO_READ消息 的问题

在help中资源管理器一节中讲到处理_IO_READ 消息时,样本例子中有以下代码:

nleft = ocb->attr->nbytes - ocb->offset;
nbytes = min (msg->i.nbytes, nleft);

if (nbytes > 0) {
/* set up the return data IOV */
SETIOV (ctp->iov, buffer + ocb->offset, nbytes);

/* set up the number of bytes (returned by client’s read()) */
_IO_SET_READ_NBYTES (ctp, nbytes);

……

其中nleft的意思应该是计算设备中还有多少字节。但是后面的ocb->offset偏移量具体应该是什么值呢?

ocb->attr->nbytes 应该是attr.nbytes的值吧?那样的话应该是 14 吧?程序运行起来后打印出的nleft的值为13.那么这个13是怎么计算出来的呢?


谢谢!