我正在開發一個內核擴展,它處理每個套接字都在系統上構建,並在用戶空間等待以獲取來自用戶的確認以允許或拒絕該套接字。 我正在使用IOSleep應用我上面提到的等待,但它加載內核擴展時會出現此錯誤。在套接字過濾內核擴展中使用IOSleep
「下面的符號是沒有解決這個驅動: _IOSleep」
首先,我想知道我是正確有關使用IOSleep使等待? 如果不是,我應該如何應用期望的等待來覆蓋時間間隔,我需要獲得用戶關於允許還是拒絕特定套接字連接的確認?
在此先感謝您的任何有用的回覆。
我正在開發一個內核擴展,它處理每個套接字都在系統上構建,並在用戶空間等待以獲取來自用戶的確認以允許或拒絕該套接字。 我正在使用IOSleep應用我上面提到的等待,但它加載內核擴展時會出現此錯誤。在套接字過濾內核擴展中使用IOSleep
「下面的符號是沒有解決這個驅動: _IOSleep」
首先,我想知道我是正確有關使用IOSleep使等待? 如果不是,我應該如何應用期望的等待來覆蓋時間間隔,我需要獲得用戶關於允許還是拒絕特定套接字連接的確認?
在此先感謝您的任何有用的回覆。
IOSleep
在內核擴展中是非常好的。你看到的錯誤是因爲庫在加載時鏈接到kexts,而不是編譯時。
當您的代碼中需要鏈接新庫的函數時,必須在編譯後的二進制文件上調用kextlibs
,以便找出需要添加到plist文件的內容。這在Generic Kernel Extension tutorial in the Mac Developer Library的Add Library Declarations section中有解釋,但在第一次後很容易忘記這麼做。
的基本步驟是:
kextlibs -xml MyKext.kext
從上面的打印輸出替換您的KEXT的的Info.plist文件的<key>OSBundleLibraries</key><dict>...</dict>
部分當您使用kextload
加載它時,它現在應該正確鏈接。