函数笔记 -- 整理

时间:2022-12-28 12:25:45

刚学这个CreateFile,报了各种错误

假设我们的符号链接名是 L"\\??\\Hello"

正确的打开方式

	TCHAR szSymName[] = L"\\\\?\\Hello";//或者 L"\\\\.\\Hello"
	/*
	错误 打开方式
	L"\\??\\Hello"		123错误
	L"\\.\\Hello"		2错误
	*/
	HANDLE hFile = CreateFile(
		szSymName,
		FILE_ALL_ACCESS,
		0,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		NULL
		);
	if (hFile == INVALID_HANDLE_VALUE)
	{
		TCHAR szError[MAX_PATH];
		StringCbPrintfW(szError, MAX_PATH, L"%d--%s", GetLastError(), szSymName);
		AfxMessageBox(szError);
		return;
	}
	CloseHandle(hFile);


原型

NTSTATUS ZwAllocateVirtualMemory(
	_In_     HANDLE ProcessHandle,
	_Inout_  PVOID *BaseAddress,
	_In_     ULONG_PTR ZeroBits,
	_Inout_  PSIZE_T RegionSize,
	_In_     ULONG AllocationType,
	_In_     ULONG Protect
	);

在此进程空间中分配内存

参数二使用之前需要声明一下,原因是由于

PVOID *BaseAddress 是一个二级指针, 如果传入一个NULL 相当于 &NULL, 内部的处理就会产生问题,所以必须先定义一个 PVOID 的变量 传入变量的地址

否则 会报错STATUS_INVALID_PARAMETER_2

2018/5/10 整理