(1)
结束了get_device_info,我们继续沿着storage_probe一步一步地走下去。继续,这就是我们前面提到过的三个函数,get_transport、get_protocol和get_pipes。一旦结束了这三个函数,我们就将进入本故事的高潮部分。
usb_stor_probe1(){
/* Get standard transport and protocol settings */
get_transport(us);
get_protocol(us);
}
static void get_transport(struct us_data *us)
{
case USB_PR_BULK:
us->transport_name = "Bulk";
us->transport = usb_stor_Bulk_transport;
us->transport_reset = usb_stor_Bulk_reset;
break;
//us的transport_name被赋值为“Bulk”
transport被赋值为usb_stor_Bulk_transport
transport_reset被赋值为usb_stor_Bulk_reset。其中我们最需要记住us的成员transport和transport_reset是两个函数指针。这两个函数叫“钩子”函数。这两个赋值我们需要牢记,日后我们一定会用到它们,因为这正是我们真正的数据传输时调用的东西。
}