использование ZwQueryInformationProcess

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

  1. Ramzey

    Ramzey New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    15
    Хочу в драйвере вызвать ZwQueryInformationProcess.
    в ntddk.h дописываю:

    NTSYSAPI
    NTSTATUS
    WINAPI
    ZwQueryInformationProcess(
    IN HANDLE ProcessHandle,
    IN DWORD ProcessInformationClass,
    OUT PVOID ProcessInformation,
    IN ULONG ProcessInformationLength,
    OUT PULONG ReturnLength
    );

    (взято из http://msdn.microsoft.com/en-us/library/ms687420.aspx)

    Получаю:
    ntddk.h(22316) : error C2061: syntax error : identifier 'ZwQueryInformationProce
    ss'
    ntddk.h(22316) : error C2059: syntax error : ';'
    ntddk.h(22317) : error C2059: syntax error : 'type'
    mydrv.c(118) : error C4013: 'ZwQueryInformationProcess' undefined; assuming exte
    rn returning int
    mydrv.c(119) : error C2065: 'cRaedBuffer' : undeclared identifier
    mydrv.c(119) : error C2109: subscript requires array or pointer type
    mydrv.c(120) : error C2109: subscript requires array or pointer type

    Как правильно прикрутить эту функцию?
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Ramzey NTAPI вместо WINAPI
     
  3. Ramzey

    Ramzey New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    15
    NTAPI - тоже самое.
    Собственно вопрос в том, как работать с функцией не прописаной в ntddk.h.

    Где-то ведь должно быть указано, что такая-то (напр. ZwQueryInformationProcess) функция импортируется из такой-то библиотеки?!
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Ramzey Ну хз. У мну все работает. Стукни в асю (в личке)

    Причем здесь библиотека, если по ошибке у тебя даже до линковки не дошло?
     
  5. Ramzey

    Ramzey New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    15
    Вот именно!

    см. личку.
     
  6. Ramzey

    Ramzey New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    15
    Aspire

    Если интересно, когда ставлю NTAPI, то получаю вот что:

    Compiling - mydrv.c for i386
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2146: syntax error : missing
    ')' before identifier 'ProcessInformationClass'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2144: syntax error : '<Unknow
    n>' should be preceded by '<Unknown>'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2144: syntax error : '<Unknow
    n>' should be preceded by '<Unknown>'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2143: syntax error : missing
    ')' before 'identifier'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2081: 'DWORD' : name in forma
    l parameter list illegal
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2061: syntax error : identifi
    er 'ProcessInformationClass'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2059: syntax error : ';'
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22362) : error C2059: syntax error : ','
    c:\winddk\2600\inc\ddk\wxp\ntddk.h(22366) : error C2059: syntax error : ')'
    mydrv.c(26) : error C4013: 'DPRINT' undefined; assuming extern returning int
    mydrv.c(28) : error C4013: 'ZwQueryInformationProcess' undefined; assuming exter
    n returning int
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.317
    попробуй убрать NTSYSAPI и WINAPI заменить на __stdcall... а уж NTSTATUS то должен компилятор знать)))))
     
  8. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Код (Text):
    1. extern
    2. NTSTATUS
    3. ZwQueryInformationProcess(
    4.     IN HANDLE ProcessHandle,
    5.     IN DWORD ProcessInformationClass,
    6.     OUT PVOID ProcessInformation,
    7.     IN ULONG ProcessInformationLength,
    8.     OUT PULONG ReturnLength
    9.     );
    И не надо ни каких NTSYSAPI, WINAPI и иже с ними...
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    взбредет компилятору, что там cdecl и все, будет стек убиваться при вызове. поэтому stdcall всеже поставить не мешало бы.
    да и не просто extern, а extern "C"
     
  10. Ramzey

    Ramzey New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    15
    Вобщем все ОК.

    Я вместо
    ...
    OUT PULONG ReturnLength OPTIONAL
    );
    писал

    OUT_OPT PULONG ReturnLength

    Собственно, так в msnd было.

    Я на С раньше не писал ничего.