首页
社区
课程
招聘
[求助]为什么打开设备总是返回-1,高手们能不能指点下![已解决]
发表于: 2010-9-2 09:40 4969

[求助]为什么打开设备总是返回-1,高手们能不能指点下![已解决]

2010-9-2 09:40
4969
//发送消息给内核
BOOL send_driver(LPCWSTR devicename,LPCWSTR buffer,DWORD buffersize)
{
	HANDLE hDevice;               // handle to the drive to be examined 
	BOOL bResult;                 // results flag
	DWORD junk;                   // discard results

	hDevice = CreateFile(devicename, // drive to open
						GENERIC_READ | GENERIC_WRITE,        // 读写方式
						FILE_SHARE_READ | FILE_SHARE_WRITE,  // 共享方式
						NULL,                    // 默认的安全描述符
						OPEN_EXISTING,           // 创建方式
						0,                       // 不需设置文件属性
						NULL);                   // 不需参照模板文件


	if (hDevice == INVALID_HANDLE_VALUE) // we can't open the drive
	{
		return (FALSE);
	}

	bResult = DeviceIoControl(hDevice,  // device we are querying
							 KERNEL_GET_PID,  // operation to perform
							 (LPVOID)buffer,
							 buffersize,
							 NULL,
							 0,
							 &junk, // discard count of bytes returned
							(LPOVERLAPPED) NULL);  // synchronous I/O

	CloseHandle(hDevice);         // we're done with the handle

	return (bResult);
}



void CDriverLoadDlg::OnBnClickedButton4()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	BOOL b ;
	b=send_driver(L"\\\\.\\HideProcess",m_pid,sizeof(m_pid));
	if(b==FALSE)
	{
		AfxMessageBox(L"发送PID到内核失败");
		return ;
	}
	else
	{
		AfxMessageBox(L"发送PID到内核成功");

	}
	
}


HideProcess 这个是已经存在的驱动的符号链接

在调试的时候发现

	hDevice = CreateFile(devicename, // drive to open
						GENERIC_READ | GENERIC_WRITE,        // 读写方式
						FILE_SHARE_READ | FILE_SHARE_WRITE,  // 共享方式
						NULL,                    // 默认的安全描述符
						OPEN_EXISTING,           // 创建方式
						0,                       // 不需设置文件属性
						NULL);                   // 不需参照模板文件



hDevice 总是 等于 -1 ;

希望高手能指点下!!

[注意]APP应用上架合规检测服务,协助应用顺利上架!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
IRP_MJ_CREATE?
2010-9-2 12:47
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
getlasterror啊,应该是CreateFile参数filename为宽的问题
2010-9-2 13:25
0
雪    币: 506
活跃值: (318)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
CreateFile 返回值 总是-1 ,就是打不开指定的设备,不知道为什么,

但是 明明 有 一个设备的符号链接 是 HideProcess,用winobj 可以看到,但是 却打不开!

2010-9-2 14:23
0
雪    币: 506
活跃值: (318)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5


问题 自己解决了, 是 我写的驱动的问题 ,以上打开设 , DeviceIoControl 操作 都没问题。

2010-9-3 23:08
0
游客
登录 | 注册 方可回帖
返回
//