Общая память выполняется так быстро ?
режим ядра :
<pre>VOID DriverLoop() { while (TRUE) { //DbgPrintEx(0, 0, "First loop is running \n"); ReadSharedMemory(); if (!(PCHAR)SharedSection == NULL && strcmp((PCHAR)SharedSection, "Read") == 0) { DbgPrintEx(0, 0, "Read looping \n"); RtlZeroMemory(SharedSection, sizeof(SharedSection)); break; } else if (!(PCHAR)SharedSection == NULL && strcmp((PCHAR)SharedSection, "Write") == 0) { DbgPrintEx(0, 0, "Write looping \n"); RtlZeroMemory(SharedSection, sizeof(SharedSection)); break; } LARGE_INTEGER Timeout; Timeout.QuadPart = RELATIVE(SECONDS(1)); KeDelayExecutionThread(KernelMode, FALSE, &Timeout); } }
пользовательский режим :
auto pBufW = (char*)MapViewOfFile(hMapFileW, FILE_MAP_WRITE, 0, 0, 4096); RtlCopyMemory(pBufW, "Read", 4); printf("message has been sent to kernel! \n"); UnmapViewOfFile(pBufW); Sleep(10); auto pBfW = (char*)MapViewOfFile(hMapFileW, FILE_MAP_WRITE, 0, 0, 4096); RtlCopyMemory(pBfW, "Write", 5); printf("message has been sent to kernel! \n"); UnmapViewOfFile(pBfW);
я не могу понять, почему, когда я звоню читать и писать . только написать execute я пробовал это несколько раз, и он всегда делает это + я пытался добавить sleep(1); в моем пользовательском режиме (думал, что он выполняется очень быстро).
в принципе, мне просто нужно, чтобы они выполнялись нормально, как будто сначала должно выполняться чтение, а затем запись .
Что я уже пробовал:
я попытался добавить сон в 1 и 10 секунд, и это не сработало idk, что я делаю здесь неправильно.