К Т П           План занятия                                                              1                                           Страницы  | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 |

3. Псевдодескрипторы процессов

Иногда процессу требуется знать свой дескриптор, чтобы изменить какие-то свои характеристики. Например, процесс может изменить свой приоритет. Для этих целей в Win32 API существует функция GetCurrentProcess, которая имеет следующий прототип:
HANLDE GetCurrentProcess(VOID);
и возвращает псевдодескриптор текущего процесса. Псевдодескриптор текущего процесса отличается от настоящего дескриптора процесса тем, что он может использоваться только текущим процессом и не может наследоваться другими процессами. Псевдодескриптор процесса не нужно закрывать после его использования. Из псевдодескриптора процесса можно получить настоящий дескриптор процесса: для этого псевдодексриптор нужно продублировать, вызвав функцию DuplicateHandle.
В листинге 4.13 приведен пример программы, которая поучает псевдодескриптор процесса посредством вызова функции GetCurrentProcess, а затем выводит полученный псевдодескриптор на консоль.

Листинг 4.13. Получение псевдодескриптора процесса

#include <windows.h>
#include <iostream.h>

int main()
{
HANDLE hProcess;

// получаем псевдодескриптор текущего процесса
hProcess = GetCurrentProcess();
// выводим псевдодескриптор на консоль
cout << hProcess << endl;

cin.get();

return 0;
}

 


Предыдущая        В начало страницы       Следующая
3