Перестал работать LoadImage после Windows Update - PullRequest
0 голосов
/ 17 января 2020

Обновления включают в себя: KB4532938 и KB4528760

Это код:

#include "pch.h"
#include <iostream>
#include <Windows.h>

using namespace std;
int main()
{
    HMODULE hInst;
    HANDLE hImg = NULL;
    hInst = LoadLibrary(L"C:\\Users\\asd\\Desktop\\asd\\test.exe");
    hImg = LoadImageW(hInst, MAKEINTRESOURCEW(5234), 2, 0, 0, 0);
    if (!hImg)
        cout << GetLastError() << endl;
    cout << hImg;

}

Это код. exe, содержащий курсор (это пустой ахк-скрипт)

До обновления:

Вывод: NOT-null дескриптор и код ошибки 1813

Работает!

После обновления:

Вывод: NULL дескриптор и код ошибки 1813

Не работает!

Разница лишь в установленных обновлениях.

Вопросы:

  1. Это ошибка?
  2. Как это возможно, что ресурс существует, имя правильное, формат правильный и он не работает?
  3. Что изменило, что заставило его сломаться, это была ошибка, которая заставила его работать в первую очередь?
  4. Как я могу сообщить об этом в Microsoft?

1 Ответ

1 голос
/ 17 января 2020

Поскольку очистить в комментариях непросто, я публикую его как ответ.

Я провел тесты, чтобы воспроизвести эту проблему, и обнаружил, что она связана только с «обновлением KB4528760» (вы не нужно удалить их обоих).

Я использую EnumResourceTypes, EnumResourceNames, чтобы узнать, что ресурс существует:

name = MAKEINTRESOURCE(5234), type = RT_ANICURSOR.

Используйте FindResource и укажите тип ресурса, чтобы RT_ANICURSOR работал.

#include "pch.h"
#include <iostream>
#include <Windows.h>

using namespace std;
int main()
{
    HMODULE hInst;
    HANDLE hImg = NULL;
    hInst = LoadLibrary(L"C:\\Users\\asd\\Desktop\\asd\\test.exe");

    HRSRC hResInfo = FindResource(hInst, MAKEINTRESOURCE(5234), RT_ANICURSOR);
    hImg = LoadResource(hInst, hResInfo);

    if (!hImg)
        cout << GetLastError() << endl;
    cout << hImg;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...