Как передать строку в DLL с помощью Win32 API? - PullRequest
0 голосов
/ 03 мая 2011

Я пытаюсь передать строку (или символ *) из Rundll32 в DLL, созданную (с MinGW), используя этот источник:

#include <windows.h>

__declspec( dllexport ) int hello(LPSTR content) {

  MessageBox( NULL, content, "Message", MB_OK );
  return 0;

}

При выполнении этого я получаю случайные сбои. Вот так я и запускаю.

C:\workspace>c:\MinGW\bin\gdb.exe rundll32 -ex "run program1.dll,hello test"

Я попытался установить точку останова в hello (), и кажется, что «содержимое» довольно случайное. Я неправильно передаю аргумент от rundll32?

Хорошо работает, если у меня нет аргументов.

1 Ответ

2 голосов
/ 03 мая 2011

Точки входа rundll32 должны быть объявлены очень специфическим способом. Прочтите эту статью , в которой объясняется, что делать. Одна вещь, которую я заметил, состоит в том, что для символа, называемого «EntryPoint», имя функции, передаваемой в rundll32, должно быть «_EntryPoint @ 16» для 32-битных DLL и просто «EntryPoint» для 64-битных DLL.

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