我是使用IOKit的新手,並且注意到我認爲沙箱使其失敗。在Sandbox中不允許IOKit?
這裏是我試圖(在帕斯卡爾)的測試,它在沙箱外運行良好,但是當我啓用它時,IOServiceOpen每次都會返回錯誤kIOReturnNotPermitted。
是由於IOKit未在沙盤某些服務安全嗎?我試圖獲得一些風扇速度/ CPU溫度,我發現AppStore中有一些應用程序(沙盒)會這樣做,所以我相信這是可能的。我可以確認的唯一一個似乎有與應用程序捆綁在一起的XPC服務作爲幫手,所以也許這是使IOKit工作的線索?我基本上嘗試了所有的權利,而他們似乎沒有任何幫助。
感謝您的任何想法。
procedure TestIOKit;
var
err: kern_return_t;
masterPort: mach_port_t;
iterator: io_iterator_t;
device: io_object_t;
matchingDictionary: CFMutableDictionaryRef;
conn: io_connect_t;
begin
IOMasterPort(0, masterPort);
matchingDictionary := IOServiceMatching('AppleSMC');
err := IOServiceGetMatchingServices(masterPort, matchingDictionary, iterator);
if err <> kIOReturnSuccess then
writeln('IOServiceGetMatchingServices: ', err);
device := IOIteratorNext(iterator);
IOObjectRelease(iterator);
if device = 0 then
writeln('no smc found');
err := IOServiceOpen(device, mach_task_self_, 0, conn);
if err <> kIOReturnSuccess then
writeln('IOServiceOpen: ', err);
end;
如果你還沒有,彈出打開'Console'應用,然後搜索'sandbox'添加幾行。每次遇到沙箱侵害時,您都應該收到帶有回溯的郵件。 – gaige