0
我在OS X上遇到了一個問題,如果在斷電時插入驅動器,然後打開電源,我不會收到有關出現新磁盤的通知。如果插入已打開電源的驅動器,我確實收到通知。如何獲取正在啓動的驅動器的通知?
目前,我正在爲磁盤出現,消失或通過磁盤仲裁(DARegisterDiskAppearedCallback
等)更改描述時註冊回調。我沒有看到任何其他可能涵蓋驅動器開啓情況的回調。
如何在已插入驅動器的情況下接收通知?
我在OS X上遇到了一個問題,如果在斷電時插入驅動器,然後打開電源,我不會收到有關出現新磁盤的通知。如果插入已打開電源的驅動器,我確實收到通知。如何獲取正在啓動的驅動器的通知?
目前,我正在爲磁盤出現,消失或通過磁盤仲裁(DARegisterDiskAppearedCallback
等)更改描述時註冊回調。我沒有看到任何其他可能涵蓋驅動器開啓情況的回調。
如何在已插入驅動器的情況下接收通知?
NSWorkspace
當安裝磁盤時提供通知,NSWorkspaceDidMountNotification
。概括地聲明瞭一個通知處理程序,例如:
- (void) mountNotify:(NSNotification *)notification
{
// extract details from notification
NSDictionary *userInfo = notification.userInfo;
NSString *volumeMounted = userInfo[@"NSDevicePath"];
NSString *volumeDisplayName = userInfo[@"NSWorkspaceVolumeLocalizedNameKey"];
if (volumeMounted != nil)
{
// volume has been mounted
}
}
和註冊通知:
[[[NSWorkspace sharedWorkspace] notificationCenter]
addObserver:self
selector:@selector(mountNotify:)
name:NSWorkspaceDidMountNotification
object:nil
];
也有類似的通知,NSWorkspaceDidUnmountNotification
,用於當磁盤卸載。
欲瞭解更多詳情,請參閱Apple的NSWorkspace
documentation。
HTH。
有什麼辦法可以在C++中完成這個任務嗎? –
@dauphic - 很好Objective-C++顯然是一個答案。如果你想要一個C函數級接口,那麼你正在使用的就是它。但是,你會得到一個奇怪的錯誤。連接到計算機時磁盤是否已打開或關閉,應該沒有任何區別。連接設備和安裝設備是有區別的,儘管兩者通常是連接的。如果您尚未使用批准或其他回調進行測試,則可能需要查看該回調。 – CRD