-
-
[求助]为什么打开设备总是返回-1,高手们能不能指点下![已解决]
-
发表于:
2010-9-2 09:40
4935
-
[求助]为什么打开设备总是返回-1,高手们能不能指点下![已解决]
//发送消息给内核
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 ;
希望高手能指点下!!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!