Форум программистов, компьютерный форум, киберфорум
Наши страницы

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Strtok() и string http://www.cyberforum.ru/cpp-beginners/thread333623.html
По заданию нужно воспользоваться именно strtok чтобы разбить строку что есть на слова (ориентируясь на пробелы, все знаки препинания предварительно убираются). Собственно string str; ... string...
C++ Read PNG in C Всем привет. Подскажите как на С (без привлечения сторонних библиотек) прочитать PNG файл. В конечном итоге хотелось бы получить двумерный массив, где номер элемента - это положения пикселя, а сам... http://www.cyberforum.ru/cpp-beginners/thread333615.html
C++ Пузырьковый метод
Не могу написать простейший пузырьковый метод. Откуда берется ноль ? #include <iostream> using namespace std; int main() {setlocale(LC_ALL,"Rus"); int a,r=100; for(int y=0;y<5;y++)...
C++ error LNK2019: ссылка на неразрешенный внешний символ
Всем привет. Вопрос легкий, но что-то я застопорился. Делал задачки с книги Джесса Либерти, и на классах завис. По идеи все должно было работать без проблем,но увы... Вот код задачи. #include...
C++ операция повторения http://www.cyberforum.ru/cpp-beginners/thread333537.html
#include <iostream> using namespace std; int main() { int match, win, ni, por; cout<<"Введите количество матчей: "; cin >> match; cout<<"Введите количество побед: ";...
C++ как сделать вывод текста, результата и продолжение текста #include <iostream> using namespace std; int main() { int win; cout<<"Введите цифру\n"; cin >> win; cout<<"Результат " << win * 3 << endl; ... подробнее

Показать сообщение отдельно
soft.creator
104 / 104 / 4
Регистрация: 17.10.2010
Сообщений: 283
17.07.2011, 10:55
Сорри, не очень внимательно глянул исходник. Но все равно все штатно.

Один и тот же объект может быть открыт под разными хэндлами даже в одном процессе.
Насколько я понимаю внутреннее устройство Windows, обращение к объекту идет следующим образом:

хэндл -> объект-описатель -> собственно объект в памяти ядра

Так вот, объект в памяти ядра у нас один-единственный, и ему соответствует уникальный ID. А вот объектов-описателей может быть много. Причин для этого вижу две, и обе связаны с обязанностями объекта-описателя:
- у разных описателей могут быть разные права доступа к объекту ядра, хотя бы поэтому их может быть несколько
- при разрушении описателя, система подсчитывает количество оставшихся описателей, и грохает объект ядра (к процессу, правда, это не относится, т.к. на него, скорее всего, есть еще как минимум одна ссылка внутри самого ядра до окончания работы)

P.S. Насколько я помню, DuplicateHandle выдает другой хэндл даже при полном совпадении прав доступа. Скорее всего, OpenProcess реализует похожую стратегию.
P.P.S. В своих знаниях по глубинному устройству Windows я не совсем уверен, так что если есть спецы, поправьте меня
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru