吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 760|回复: 0
收起左侧

[求助] 实现一个简单的通讯框架的时候出现问题

[复制链接]
Panel 发表于 2021-12-29 16:38
如题,新手刚入门驱动开发,在写一个0环写3环的通讯demo时,出现了问题,3环无法成功通讯0环

0环代码
[C] 纯文本查看 复制代码
#include "ntifs.h"
#define DEVICEC_NAME L"\\device\\Device"
#define LINK_NAME L"\\dosdevices\\links"
VOID UnloadDriver(PDRIVER_OBJECT driver)
{
	DbgPrint("Succes");
	
}

NTSTATUS DispatchCreate(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
{
	DbgPrint("收到请求");
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	pIrp->IoStatus.Information = 0;
	IoCompleteRequest(pIrp, IO_NO_INCREMENT);
	return STATUS_SUCCESS;
}

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING reg_path)
{
	DbgPrint("succes");
	UNICODE_STRING pdevicename = { 0 };
	UNICODE_STRING plinkname = { 0 };
	PDEVICE_OBJECT Device = NULL;
	NTSTATUS status = STATUS_SUCCESS;
	RtlInitUnicodeString(&pdevicename, DEVICEC_NAME);
	RtlInitUnicodeString(&plinkname, LINK_NAME);
	status = IoCreateDevice(pDriver, 0, &pdevicename, FILE_DEVICE_UNKNOWN, 0, TRUE, &Device);
	if (!NT_SUCCESS(status))
	{
		DbgPrint("错误代码:%ld", status);
		return 0;
	}
	Device->Flags |= DO_BUFFERED_IO;
	status = IoCreateSymbolicLink(&plinkname, &pdevicename);
	if (!NT_SUCCESS(status))
	{
		DbgPrint("错误代码:%ld", status);
		return 0;
	}
	pDriver->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
	pDriver->DriverUnload = UnloadDriver;
	return STATUS_SUCCESS;
}


3环代码
[Asm] 纯文本查看 复制代码
#include "stdio.h"
#include "windows.h"


#define DEVICE_LINK_NAME L"\\\\.\\links"

int main()
{
	HANDLE hDriver = CreateFile(DEVICE_LINK_NAME, GENERIC_ALL, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hDriver == INVALID_HANDLE_VALUE)
	{
		printf("错误代码:%d", GetLastError());
		system("pause");
		return 1;
	}
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表