VirtualProtectEx, вызванный из службы, возвращает false, но GetLastError равен 0 (успех)

Используйте этот

.button {
position: relative;
display: block;
width: 120px;
height: 50px;
background: blue;
padding-right: 40px;
overflow: hidden;
color:#fff;
padding-left:30px;
line-height:22px;
 }

.button:after{
position: absolute;
bottom: 0;
height: 50px;
width: 30px;
right: -14px;
background: red;
content: "";
z-index: 1000;
transform: skew(-30deg);
 }
<div class="button">MAGGIORI INFORMAZIONI</div>

-2
задан 20 January 2019 в 05:46
поделиться

1 ответ

Это ответ на ваш заголовок.

Строка pFile = fopen("C:\\myfile.txt", "w"); вызывает функции Windows API и, вероятно, сбрасывает последний код ошибки. Таким образом, правильное обращение с последним кодом ошибки сохраняет его в переменную сразу после интересного вызова API. Попробуйте приведенный ниже код, и вы должны получить реальный код ошибки после вызова VirtualProtectEx.

if (!VirtualProtectEx(hProcess, (LPVOID)pAddr, sizeof(DWORD), PAGE_EXECUTE_READWRITE, &oldProtection)) {
    int err_code = GetLastError();
    printf("\n VirtualProtectEx() error - %d\n", err_code):

    //=============== To debug from service application ===================

    FILE * pFile = fopen("C:\\myfile.txt", "w");
    if (pFile != NULL)
    {
        fprintf(pFile, "%d\n", err_code);
        fclose(pFile);
    }
    ...
0
ответ дан S.M. 20 January 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: