Я думаю, что проблема, с которой вы столкнулись, заключается в том, что вам нужно немного понять о том, как базовые объекты, стоящие за оконной службой, работают в виртуальном хранилище.
По сути, различные оконные сервисы работают, чтобы дать вам то, что составляет «частный» набор данных страницы.Вы выделяете и ссылаетесь на хранилище, но объекты в этом виртуальном пространстве на самом деле не находятся в памяти - механизм сбоя страницы системы вызывает их, когда вы ссылаетесь на них.Так что да, вы получаете доступ к данным в «окне», но на самом деле данные, которые вы ожидаете увидеть, в этот момент могут не быть «разбиты на страницы».
Пройдя немного глубже, когда вы впервые выделяетеобъект, виртуальное хранилище, которому он сопоставлен, имеет все страницы, помеченные как «недействительные» в базовых записях таблицы страниц.Это означает, что как только вы коснетесь этого хранилища, произойдет прерывание сбоя страницы.В этот момент операционная система вступает в действие и устраняет ошибку страницы, помещая необходимые данные в память, затем ваша программа продолжает работу, не обращая внимания на всю эту обработку от вашего имени.Вы правы в том, что вы просто ссылаетесь на данные в окне, но под прикрытием есть многое, что поддерживает это.
Вот где приходит PFCOUNT ...
Давайтескажем, у вас есть структуры, которые, скажем, длиной 64 КБ внутри вашего виртуального окна.Было бы небрежно и медленно ссылаться на каждую страницу этой структуры и каждый раз вызывать сбой страницы.Гораздо лучше было бы использовать PFCOUNT, чтобы страница, на которую вы ссылаетесь, и все 15 других страниц, необходимых вашему объекту, были вставлены одной операцией.И наоборот, если ваши данные были небольшими, и вы были очень случайны в отношении того, как вы к ним обращаетесь, PFCOUNT вам не поможет - следующая страница, на которую вы ссылаетесь, может быть где угодно, и на самом деле расточительно иметь большой PFCOUNT, так как вы в конечном итоге приноситев большом количестве данных, которые вы никогда не используете.
Надеюсь, что это имеет смысл - если вам нужен вызов, возьмите системный дамп и изучите записи системной трассировки, когда вы ссылаетесь на данные ... вы увидите очень четкую картину сбоев страниц, я/ O и возобновление вашей программы, и, надеюсь, все это будет иметь смысл для вас.