2016-02-05 4 views
0

im, пытающийся сделать программу, будет получать командную строку процессов с помощью идентификатора процесса. Im используя затмение C++ и MinGW компиляторNTSTATUS не удалось решить.

Так я нашел 1 учебник, как сделать это, и он нуждается в NTSTATUS так как в учебнике я включен #include <ntstatus.h>

И я добавил первую часть кода, что является:

typedef NTSTATUS (NTAPI *_NtQueryInformationProcess)(
    HANDLE ProcessHandle, 
    DWORD ProcessInformationClass, 
    PVOID ProcessInformation, 
    DWORD ProcessInformationLength, 
    PDWORD ReturnLength 
    ); 

И им Джеттиг это 3 ошибки:

expected primary-expression before '__attribute__ 

Type 'NTSTATUS' could not be resolved 

typedef 'NTSTATUS' is initialized (use decltype instead) 

На этой линии: typedef NTSTATUS (NTAPI *_NtQueryInformationProcess)(

Я гугл об этой проблеме, и я colud не нашел ...

+0

Вместо использования intern al или недокументированные или функции API ядра (независимо), рассмотрите только использование, например, WMIC. Например. 'WMIC PROCESS WHERE Name =" notepad.exe "GET CommandLine'. –

+0

Ahh, им не очень хорошо в C++, поэтому я даже не знаю, что такое wmic ... – Dushan01

+0

Это команда Windows, набравшая командный интерпретатор, такой как cmd.exe или powershell.exe. Это сокращение от Windows Management Isometing Csomethingelse. Функциональность также может быть доступна через интерфейсы COM и Automation (чистый COM проще всего для C++, Automation для языков скриптов). –

ответ

0

NTSTATUS определяется в

#include <winternl.h> 

в

typedef _Return_type_success_(return >= 0) LONG NTSTATUS; 

и его значение определены в

#include <ntstatus.h>