- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在这份文件中, http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#paths
To make these device objects accessible by Windows applications, the device drivers create a symbolic link (symlink) in the Win32 namespace, "Global??", to their respective device objects. For example, COM0 and COM1 under the "Global??" subdirectory are simply symlinks to Serial0 and Serial1, "C:" is a symlink to HarddiskVolume1, "Physicaldrive0" is a symlink to DR0, and so on. Without a symlink, a specified device "Xxx" will not be available to any Windows application using Win32 namespace conventions as described previously. However, a handle could be opened to that device using any APIs that support the NT namespace absolute path of the format "\Device\Xxx".
API 是什么?请让我知道一些这样的功能。
例如,我们可以让一个设备位于 GLOBAL??
命名空间中:
GLOBAL??\
COM227
我们可以使用 CreateFile
成功打开此设备:
//Note: we have to prefix it with \\.\ in order to tell CreateFile that
//we want to open something from the Global device namespace.
//Otherwise it will try to open a file
HANDLE hdev = CreateFile("\\.\COM227", GENERIC_READ, 0, null, OPEN_EXISTING, 0, 0);
if (hdev == INVALID_HANDLE_VALUE)
raise new EWin32Exception(GetLastError);
此设备(连同 Win32 Global?? 命名空间中的所有其他设备)实际上是指向“真实” 设备的符号链接(symbolic link):
GLOBAL??\
COM227 (SymbolicLink) ==> \Device\VCP0
Device\
VCP0 (Device)
所以我们尝试打开这个真实的设备:
HANDLE hdev = CreateFile("\\.\Device\VCP0", GENERIC_READ, 0, null, OPEN_EXISTING, 0, 0);
if (hdev == INVALID_HANDLE_VALUE)
raise new EWin32Exception(GetLastError);
但它失败了,错误代码为 3(系统找不到指定的文件)。
简短:
COM227
(\Device\VCP0
的别名)\Device\VCP0
问题是
CreateFile
should work \Device\Xxx
)这意味着 CreateFile
不是 “支持\Device\Xxx 的 NT 命名空间绝对路径格式的 API”之一。
However, a handle could be opened to that device using any APIs that support the NT namespace absolute path of the format "\Device\Xxx".
API 是什么?
最佳答案
到目前为止提供的答案充其量只是误导。它们没有回答您的问题,也没有涵盖 NT namespace 和其他 namespace 之间的重要区别。
访问 NT 命名空间时,如果要访问只能在内核的 NT 命名空间中找到的设备,则需要使用以 Nt 开头的 API 调用,例如 NtOpenFile。例如,\Devices 中的设备在\GLOBAL?? 中没有符号链接(symbolic link)。
如果您正在访问 Win32 设备 namespace ,上述其他调用工作正常,但这些调用需要驱动程序在该 namespace 中创建符号链接(symbolic link)。
如果您想要访问仅在 NT namespace 中找到的设备,请使用 NtOpenFile .这确实是一个非常古老的 API 调用,并且已经在用户空间头文件中进进出出。它再次可用并且工作正常。
关于windows - 一些支持 "\Device\Xxx"格式的NT命名空间绝对路径的API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546261/
我使用线程将数据发送到我的 USB 设备(不是数据存储)并从设备获取返回数据。 它在前 5 分钟内运行良好。数据输入,数据输出。 (我几乎在第六分钟开始唱歌。) 然后突然失去了联系。 有logcat消
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: adb cannot find my device for Android debugging. Why? 我是安卓
我有一台安装了win10的电脑, 我已在外部硬盘上安装了 ubuntu 16.04, 现在,当我启动计算机并且外部硬盘已连接到电脑时 grub 菜单打开,我可以在 win10 或 ubuntu 之间进
假设我想使用 Microsoft.Azure.Devices 包/SDK 加载设备信息,这与我所说的有什么区别: RegistryManager regManager = RegistryManage
我在 Windows PC 上使用 VS-2017。我可以使用模拟器测试和运行 iOS 应用程序。 现在我开始为 AppStore 构建应用程序。 构建成功。 现在我在项目解决方案菜单中选择“部署..
任何帮助,将不胜感激。我一般对tensorflow和编程都是陌生的。我正在按照github(https://github.com/experiencor/keras-yolo3)中的说明学习YOLO-
我用 adb 将 4 台设备连接到我的笔记本电脑。 最近我开始看到我的一个 android 设备“离线”,而其他设备运行文件。 我的问题是,离线到底是什么意思,是什么原因造成的? 最佳答案 每次adb
我想在我的物理设备上开始用espresso编写的仪器测试。 想法如下:我的公司有一个应用程序的白标解决方案,因此我们有很多应用程序可以放入 Play 商店。为了支持我们的支持团队,我编写了一个测试,为
当出现这种情况时,我的应用程序当前正在接收与之前的应用程序用户帐户关联的推送通知: 玩家安装应用程序并注册为“bob” bob 的设备 token 在网络服务中注册 玩家重新安装了应用程序并注册为“p
我正在使用命令行编译和安装 Android 应用程序,当我尝试将其安装到设备上时,会发生以下情况: $> adb devices List of devices attached 8c092420
我使用标准 CUDA malloc 在 CUDA 中分配了一个内存数组,并将其传递给函数,如下所示: void MyClass::run(uchar4 * input_data) 我还有一个类成员,它
我的真实设备是 Sony Xperia c6502 Android 版本 4.3我确定我已将它连接到我的计算机并打开了开发人员选项/USB 调试 在 SDK 管理器中,已经安装了 Google USB
某些设备的设备密度返回 0。以下代码用于计算设备密度: WindowManager wm = (WindowManager) context .getSystemService(Con
我正在将一个小文件 (8.5 Mb) 上传到 flask 测试服务器。 当文件上传完成后,服务器报告: File "/home/ubuntu/.virtualenvs/eco_app/lib/
我正在编写一个小应用程序,我需要将一个变量传递给一个函数。问题是该变量是一个绑定(bind),但该函数必须接受一个常规变量。 代码: ForEach($deviceArrays.devices, id
我正在编写一个小应用程序,我需要将一个变量传递给一个函数。问题是该变量是一个绑定(bind),但该函数必须接受一个常规变量。 代码: ForEach($deviceArrays.devices, id
我创建了一个新的 quasar 项目,添加了 cordova 并进行了一些尝试。 一切正常,我可以在手机上部署该应用程序并在模拟器中运行它。 现在,我需要获取一些设备信息,我想为此使用 cordova
根据 W3C The ‘device-width’ media feature describes the width of the rendering surface of the output d
我的数据迭代器当前在 CPU 上运行,因为 device=0 参数已弃用。但我需要它与模型的其余部分一起在 GPU 上运行。 这是我的代码: pad_idx = TGT.vocab.stoi[""]
Cordova 版本:3.5.0 我正在尝试使用 pushPlugin 实现推送通知.但是当我在android平台上运行这个应用程序时(我没有尝试过其他平台),有一个错误“device is not
我是一名优秀的程序员,十分优秀!