问题标签 [diskarbitration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
151 浏览

swift - 将 DAAppearanceTime 转换为日期

如何将磁盘仲裁中的DAAppearance Time转换为有效的时间戳?

我尝试了以下方法:

我从函数中得到正确的DAAppearanceTime但转换后的年份错误:

511348742.912949

1986-03-16 09:19:02 +0000

0 投票
0 回答
777 浏览

swift3 - Swift 字符串数组到 UnsafeMutablePointer>!

我正在尝试使用 Swift调用DADiskMountWithArguments 。

我的问题是从 Swift 字符串数组到UnsafeMutablePointer<Unmanaged<CFString>>!这是预期的参数输入格式。

从文档:

arguments
  要传递给 /sbin/mount -o 的挂载选项的空终止列表。

在 Objective-C 中,我通过创建参数值来完成相同的调用,如下所示:

但是我还没有成功地将这个方法移植到 Swift 上。而且我还没有找到将参数数组放入内存并获得正确指针的方法。

我尝试过的事情:

  1. 尝试使用 CFArrayGetValues:

我应该使用不透明指针从 UnsafeRawPointer 桥接到 UnsafeMutablePointer 吗?

  1. 尝试在没有 CFArrayGetValues 的情况下创建 c 字符串数组 (char **)。但我真的不知道我会怎么做呢?

还是不透明指针是桥接不同类型的关键,还是我看错了?

任何帮助是极大的赞赏!

谢谢你。

0 投票
0 回答
43 浏览

macos - 用于在 OSX 上检索卷的网络路径的 API

我正在寻找一个本机 OSX API 来执行与此 unix 命令相同的操作:

即检索此路径“//doe@stor.foo.com/samples”或给定卷的类似内容。我尝试了 Disakarbitration 但未能在其中找到携带该网络路径的密钥(本地路径在那里)。

0 投票
2 回答
209 浏览

macos - macOS 上的 USB 外设仲裁

macOS 上的DiskArbitration框架提供了一种简单的方法来拦截卷挂载并对其进行授权或不使用DARegisterDiskMountApprovalCallback.

我正在为所有其他 USB 设备(如 HID 设备、网络接口以及一般每个 USB 外围设备)寻找类似的东西。

我正在朝着IOKitUSB 设备接口指南简介的方向前进,我可以看到如何与 USB 设备通信,但我找不到任何类似于仲裁机制的东西。

任何想法?内核扩展不是一种选择。


macOS 11 更新

在 macOS 中,引入了一个名为的新 AUTH 事件ES_EVENT_TYPE_AUTH_IOKIT_OPEN。该事件被正确调用,但在我资助的对象标题中挖掘:

:(

这破坏了我的计划:

关于如何以另一种方式获取设备信息的任何想法?

0 投票
1 回答
163 浏览

macos - 使用 OSX api 查找卷序列号

我正在寻找一种方法来获取代表 OSX 上 USB 驱动器分区的卷的卷序列号 ( https://en.wikipedia.org/wiki/Volume_serial_number ),类似于此函数在 Windows 上的作用 ( https:// docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationa),尤其是 lpVolumeSerialNumber。

我在磁盘仲裁中环顾四周,但一无所获,但我不限于使用该 API。任何提示都非常感谢。

谢谢

0 投票
0 回答
85 浏览

c - 我正在尝试使用 C 代码在 MAC OS 中获取新连接的磁盘(笔式驱动器)MOUNT POINT

我是 MAC OS X 的新手。我想获取新连接磁盘(笔式驱动器)挂载点。我已经尝试了一些代码并从命令中获取了挂载路径

diskutil 信息 disk1S2 | grep \" 挂载点:\" | awk '{打印 $3}'

其中disk1S2是新附加磁盘的标识符

但是我想从 C 代码中获取挂载点而不依赖于 command

所以尝试了这段代码

我通过这个命令运行这段代码

gcc DAD.c -o DAD -framework DiskArbitration -framework Foundation

但我收到了这个错误

分段错误:11

  • 为什么我收到此错误?
  • 如何在 MAC OS 中获取挂载点?
0 投票
1 回答
188 浏览

swift - 如何使用 DiskArbitration 或其他框架在 macOS 上获取磁盘类型(SSD、HDD、Optical)

我试图弄清楚如何使用 Swift 在 macOS 上获得一些额外的磁盘属性。我对磁盘的类型(如 SSD、HDD、Optical)特别感兴趣。

我正在使用以下代码获取已安装卷的列表:

然后,我将遍历所有卷并使用属性键获取其他属性,例如总磁盘空间:

我找不到获取类型的资源键。然后我看到还有一个名为DiskArbitration.

我曾经使用以下代码来获取 BSD 名称,希望使用 IOReg 找到类型,但这也对我没有帮助(我只使用此代码来获取坏名称,我认为 DiskArbitration 仅用于卸载/安装卷)。

是否可以使用 macOS 上的(公共)框架获取此信息?

0 投票
2 回答
183 浏览

macos - 如何在 macOS 上区分 USB 硬盘和 SSD 与 USB 密钥/笔式驱动器

一方面,代码如何区分外部 USB 硬盘驱动器和固态驱动器与另一方面的 USB 记忆棒?

我不熟悉 macOS API(或系统调用、中断、消息传递和其他东西),但我猜它会在 I/O Kit 或磁盘仲裁中?

在终端命令行上,您可以使用system_profiler SPUSBDataType并查看“可移动媒体”下列出的此信息。

0 投票
1 回答
96 浏览

swift - 使用 DiskArbitration 和 IOKit 获取所有卷的树状结构

我正在尝试使用 Swift 获得我计算机所有卷的树状结构。

获取所有已安装卷的最简单方法是以下代码:

FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)

使用它URL,我可以创建一个DADisk对象来获取 BSD 名称:

现在对于“主”磁盘,我得到“disk0”。我想获得有关此磁盘的更多信息。如果我看一下磁盘实用程序,disk0 似乎没有做太多,所以我想获取 disk0 的所有“子”卷。我试图收集所有磁盘,剪切“磁盘”,然后解析剩余编号。有时这可行(如果disk1 有子卷disk1s1 和disk1s2),但有时有一个根磁盘(我们称之为disk2)并且有一个(虚拟?)容器。在这个容器下面,还有额外的磁盘,称为 disk3 和 disk3s1(这是我的方法失败的地方)。

我尝试使用IOKitwhich 打印所有磁盘名称。但是,我不知道如何构建树状结构(我想我可以根据路径破解一些东西):

有没有一种可靠的方法可以在某种层次结构中获取主磁盘及其所有卷?

0 投票
0 回答
50 浏览

swift - 给定挂载卷的 URL,使用 Swift 检索 DMG 文件的 URL

在此处输入图像描述

我有已安装卷的 URL,即/Volumes/Brave Browser. 如何使用 Swift 检索磁盘映像文件的 URL?从屏幕截图中可以看出,它的文件路径是/Users/saisudheep_n/Downloads/Brave-Browser.dmg. 我尝试使用磁盘仲裁来检索磁盘描述,DADiskCopyDescription(DADisk_Object)但它不包含 dmg 文件路径。有什么方法可以使用 Swift 实现这一点?