2012-11-16 81 views
2

我们正在开发一个使用C#的Windows 8商店设备应用程序,该应用程序将使用C DLL中的Win32 API和IOCTL调用与设备进行通信。我们用C#应用程序导入了Create File和一些IOCTL调用,创建了一个C dll。整合进展顺利,当调用Create File函数时,它返回'ACCESS DENIED ERROR'。我们也曾尝试为管理员创建具有请求执行级别的Manifest,但问题仍未解决。我想知道是否可以直接使用Win32 API & IOCTL调用,还是需要使用任何包装器调用使其工作?Windows 8商店设备应用程序开发

在此先感谢

+0

我试着实现“CreateDeviceAccessInstance”IDeviceIoControl API获取句柄和访问设备,但我得到E_INVALIDARG函数调用GetResult()。我的顺序如下1. ICreateDeviceAccessAsync * pDeviceAccess 2. CreateDeviceAccessInstance(FilePath,GENERIC_READ | GENERIC_WRITE,&pDeviceAccess) - SUCCEEDS 3. pDeviceAccess-> Wait(INFINITE) - SUCCEEDS 4.IDeviceIoControl * pDeviceControl 5. pDeviceAccess-> GetResult(IID_IDeviceIoControl, void **)&pDeviceControl) - 失败,出现E_INVALIDARG错误代码任何建议都会有帮助。提前致谢。 – user1826493

+0

嗨, 第5步:而不是使用pDeviceAccess-> GetResult(),我已经使用pDeviceAccess-> QueryInterface()。返回的接口被类型化为DeviceIoControl指针。现在我没有得到E_INVALIDARG。但是,按照以下顺序发布IOCTL时,我收到了E_UNEXPECTED错误代码。 6. pDeviceControl-> DeviceIoControlSync(FSCTL_GET_RETRIEVAL_POINTERS,(UCHAR *)<指向启动VCN输入缓冲区的指针>,sizeof(STARTING_VCN_INPUT_BUFFER),(UCHAR *)<指向检索缓冲区指针的指针>,sizeof(检索缓冲区结构),&dwBytesReturned) ; 任何输入都会很好。 – user1826493

回答

相关问题