簡體   English   中英

IOKit驅動程序,用於創建/注冊虛擬存儲設備

[英]IOKit Driver to create/register virtual storage device

我目前正在學習如何在Xcode中編寫os x內核擴展,所以抱歉,如果我有任何錯誤的事實。 我正在尋找一個示例,說明如何編寫IOKit驅動程序,該驅動程序可以在系統中注冊虛擬存儲設備(例如USB硬盤驅動器,USB記憶棒或SD卡等)。查找程序,我相信它會在IOMedia區域周圍並使用IOBlockStorageDevice類,但我不確定。 我希望內核能夠處理所有功能,例如讀取和寫入操作,安裝和彈出等。

最后,我想創建設備驅動程序以檢測android設備(使用MTP)並將其安裝為存儲設備,以允許用戶在finder中對其進行讀寫,而該驅動程序將處理將數據發送到硬盤的讀寫操作。電話。 (我知道那里可能還有其他驅動程序可以執行此操作,但是我想自己做)。但是現在,我只想知道如何制作可以生成虛擬USB驅動器的驅動程序。

謝謝你支持我

例如,關於虛擬磁盤的代碼,由Ole Henry Halvorsen和Douglas Clarke 撰寫的 “ OS X和iOS內核編程” 一書示例代碼的第14章中的“ Ramdisk”項目是一個合理的起點。

IOMedia類的實例通常由存儲子系統自動創建。 您通常不需要繼承它。 子類化IOBlockStorageDevice通常是塊存儲設備驅動程序的方式,無論它們是虛擬的還是物理的。 (例如,MACOS的磁盤映像(DMG)處理在實施IODiskImageBlockStorageDeviceOutKernel ,也是一個子類IOBlockStorageDevice ,而USB大容量存儲驅動程序基於SCSI,所以IOSCSIPeripheralDeviceType00創建IOBlockStorageServices其依次的子類IOBlockStorageDevice

但是,我要指出,對於您的最終目標,塊存儲設備可能不是一個好的解決方案。 據我所知,MTP是基於文件的,並不代表塊設備。 因此,要使應用程序查看塊設備上的文件,您需要在虛擬塊設備驅動程序內模擬某種文件系統后端,即使您選擇了FAT之類的東西,也會變得不必要地復雜。

將其實現為文件系統驅動程序可能是更好的方法。 保險絲可能是一個很好的起點。 如果發現過度限制,則始終可以將其轉換為基於“真正”內核的VFS kext。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM