Mac OS 里面如何识别磁盘。
void hello_disk(DADiskRef disk, void *context){
printf("disk %s appeared\n", DADiskGetBSDName(disk));
}
void goodbye_disk(DADiskRef disk, void *context){
printf("disk %s disappeared\n", DADiskGetBSDName(disk));
}
DADissenterRef hello_diskmount(DADiskRef disk, void *context){
printf("disk %s 磁盘卷中\n", DADiskGetBSDName(disk));
returnNULL;
}
DADissenterRef goodbye_diskmount(DADiskRef disk, void *context){
printf("disk %s 磁盘卷卸载中\n", DADiskGetBSDName(disk));
returnNULL;
}
void hello_diskpeek(DADiskRef disk, void *context){
printf("disk %s 磁盘安装卷中\n", DADiskGetBSDName(disk));
}
DASessionRef session;
session = DASessionCreate(kCFAllocatorDefault);//创建一个新的会话//kCFAllocatorDefault=null;
DARegisterDiskAppearedCallback(session, NULL, hello_disk, NULL);//注册一个回调函数称为每当一个磁盘已经出现了。
DARegisterDiskDisappearedCallback(session, NULL, goodbye_disk, NULL);//注册一个回调函数称为每当一个磁盘已经消失了。
DARegisterDiskMountApprovalCallback(session,NULL,hello_diskmount,NULL);//注册一个回调函数被称为磁盘时已经探测。
DARegisterDiskUnmountApprovalCallback(session, NULL, goodbye_diskmount, NULL);//注册一个回调函数的调用,每当一个卷卸载。
DARegisterDiskPeekCallback(session,NULL,0,hello_diskpeek,NULL);//注册一个回调函数被调用时要安装卷。
DASessionScheduleWithRunLoop(session,CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);//运行循环的调度会话。//CFRunLoopGetCurrent()返回当前线程CFRunLoop的对象。
//CFRunLoopRun();//无限期地运行当前线程的默认模式CFRunLoop对象。
CFRelease(session);//注销一个核心基础对象。