Как конвертировать argv [1] в LPCVOID? - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть утилита C++, которая принимает argv[] аргументы. Один из аргументов должен быть преобразован и использован в качестве адреса памяти при вызове API Windows, который требует, чтобы этот адрес был LPCVOID согласно документации. Я попытался сделать следующее:

int main(int argc, CHAR* argv[])

{
    if (argc < 3) {
        cout << "Arg1 and Arg2 are required.";
        exit(EXIT_FAILURE);
    }

    LPCVOID address = (LPCVOID)argv[1];
    cout << address;

    // some other stuff here
    return 0;
}

Однако адрес используется неправильно, и приведенный выше оператор cout печатает адрес после преобразования как 01297FFA, когда вход argv[1] равен 161551C. Любая помощь по исправлению этого приветствуется.

ПРАВКА, чтобы включить команду, которую я выполнил:

myprog.exe 161551C

1 Ответ

2 голосов
/ 09 февраля 2020

Необходимо преобразовать строку, указанную argv[1], в целочисленное представление, а затем привести целое число к указателю LPCVOID.

Здесь, похоже, решается проблема:

uintptr_t u_adress;   
std::stringstream ss;
ss << std::hex << argv[1];
ss >> u_adress;
LPCVOID address = (LPCVOID)u_adress;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...