Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uwp 使用软件KMDF驱动程序尝试CustomDevice.FromIdAsync时,访问被拒绝_Uwp_Uwp Xaml_Inf_Kmdf - Fatal编程技术网

Uwp 使用软件KMDF驱动程序尝试CustomDevice.FromIdAsync时,访问被拒绝

Uwp 使用软件KMDF驱动程序尝试CustomDevice.FromIdAsync时,访问被拒绝,uwp,uwp-xaml,inf,kmdf,Uwp,Uwp Xaml,Inf,Kmdf,我已经准备了一个KMDF驱动程序,该驱动程序将由UWP使用MSDN(,)中的指南进行访问 我使用的UWP应用程序是下的CustomCapability示例 KMDF是一个示例驱动程序,只实现了DriverEntry、Unload和EvtDeviceAdd。此外,驱动程序已经安装,并且在设备管理器中可见,但没有插入实际/外部设备 在UWP应用程序中,我可以从设备观察程序中看到示例驱动程序。但是,当尝试使用以下方式连接/打开驱动程序时: var device = await CustomDevice

我已经准备了一个KMDF驱动程序,该驱动程序将由UWP使用MSDN(,)中的指南进行访问

我使用的UWP应用程序是下的
CustomCapability
示例 KMDF是一个示例驱动程序,只实现了
DriverEntry、Unload和EvtDeviceAdd
。此外,驱动程序已经安装,并且在设备管理器中可见,但没有插入实际/外部设备

在UWP应用程序中,我可以从设备观察程序中看到示例驱动程序。但是,当尝试使用以下方式连接/打开驱动程序时:

var device = await CustomDevice.FromIdAsync(Id, DeviceAccessMode.Read, DeviceSharingMode.Exclusive);
正在抛出System.Private.CoreLib.ni.dll中的异常System.UnauthorizedAccessException 如下所示:

我已经匹配了两个应用程序所需的信息,并且我尝试了这一个,假设
SCCD
仅在开发模式下运行时不需要签名

除了SCCD配置之外,我还尝试为驱动程序的类接口以及
低级设备添加
,但它似乎没有做任何与异常相关的事情

除了SCCD和INF文件之外,我看不到任何其他地方存在问题,但我想展示它们,以防我遗漏了什么:

SCCD:

<?xml version="1.0" encoding="utf-8"?>
<CustomCapabilityDescriptor xmlns="http://schemas.microsoft.com/appx/2016/sccd" xmlns:s="http://schemas.microsoft.com/appx/2016/sccd">
    <CustomCapabilities>
        <CustomCapability Name="microsoft.firmwareRead_cw5n1h2txyewy"></CustomCapability> <!-- this one is not used by the way -->
        <CustomCapability Name="microsoft.hsaTestCustomCapability_q536wpkpf5cy2"></CustomCapability> 
    </CustomCapabilities>
    <AuthorizedEntities>
        <AuthorizedEntity AppPackageFamilyName="Microsoft.SDKSamples.CustomCapability.CS_8wekyb3d8bbwe" CertificateSignatureHash="1db5ceeaa4c97c6f6e91c0ce76830361776c64635ecfecdb2f157ca818ae3b69"></AuthorizedEntity>
  </AuthorizedEntities>
    <Catalog>xxxx</Catalog>
</CustomCapabilityDescriptor>

我设法在INF文件中找到了问题。Microsoft已直接从指南中复制了标有
界面部分的部分。所做的修改仅是在指南中明确规定的修改

下面的INF代码段描述了接口部分的起点:

[WDMPNPB003_Device.NT.Interfaces] 
AddInterface= {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz},,AddInterfaceSection 
指南中没有明确提到的是,我们必须用您自己的
驱动程序名/根命名空间
替换
WDMPNPB003\u设备


这是一个小错误,但很可能是驱动程序开发新手会遇到的问题。

您好,在
SCCD
文件中,您有两个
CustomCapability
,您可以尝试向SCCD文件添加
授权身份。如果这不起作用,您可以根据此进行故障排除。我添加了另一个
AuthorizedEntity
,但使用与现有的
CertificateSignatureHash
相同的
CertificateSignatureHash(从uwp应用程序证书生成的SHA-256签名hash),它似乎不起作用。我还尝试了该链接中提到的故障排除方法,它确认了我的
PackageFamilyName
是正确的,但也没有解决问题。
[WDMPNPB003_Device.NT.Interfaces] 
AddInterface= {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz},,AddInterfaceSection