Функция ZwQueryValueKey, параметр ResultLength

Тема в разделе "WASM.BEGINNERS", создана пользователем AssemblerIA64, 6 мар 2009.

  1. AssemblerIA64

    AssemblerIA64 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2007
    Сообщения:
    160
    В статье http://www.wasm.ru/article.php?article=drvw2k03 есть код
    Код (Text):
    1. invoke ZwQueryValueKey, hKey, $CCOUNTED_UNICODE_STRING("ProcessId", 4), \
    2.                                 KeyValuePartialInformation, addr kvpi, sizeof kvpi, [b]esp[/b]
    Почему последний параметр esp? Не понятно, куда esp указывает.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1.          push eax
    2.          invoke ZwQueryValueKey, hKey, $CCOUNTED_UNICODE_STRING("ProcessId", 4), \
    3.                                 KeyValuePartialInformation, addr kvpi, sizeof kvpi, esp
    4.          pop ecx
    Esp указывает на вершину стека, инструкция push eax выделяет там слово, а он на него указывает. Последний параметр:
    Код (Text):
    1. OUT PULONG ResultLength
    Возвратит в эту переменную полученый размер, далее инструкция pop ecx извлекает его в регистр.
     
  3. AssemblerIA64

    AssemblerIA64 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2007
    Сообщения:
    160
    Clerk, спасибо.
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    AssemblerIA64
    Я так хотел изобразить подобный финт на С++. Не получилось.