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);//注销一个核心基础对象。

posted @ 2011-11-21 11:19  程序是啥  阅读(1319)  评论(0编辑  收藏  举报