Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
7 / 7 / 4
Регистрация: 25.03.2013
Сообщений: 117
1

Почему не работает ограничение доступа к виртуальной странице?

25.03.2013, 21:59. Показов 928. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему-то я могу записывать данные на виртуальную страницу с доступом PAGE_NOACCESS (так же и с PAGE_READONLY)
А после записи - могу спокойно считывать из этих страниц.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using std::cin;
using std::cout;
using std::string;
#define endl "\n";
 
 
 
void Start (PVOID *pvMm)
{
      PVOID pvMem;
     cout<<"What kind of access will virtual page have?\n1 - PAGE_NOACCESS\n2 - PAGE_READONLY"<<endl;
    int iChoise;
    cin>>iChoise;
    switch (iChoise) 
    {
      case 1: 
           {
                     pvMem= VirtualAlloc(NULL, 99 * 1024, MEM_RESERVE | MEM_COMMIT, PAGE_NOACCESS);
                     cout <<"\n Created virtual page. Access - PAGE_NOACCES"<<endl;
                     
           }break;
      case 2: 
           {
                  pvMem= VirtualAlloc(NULL, 99 * 1024, MEM_RESERVE | MEM_COMMIT, PAGE_READONLY);
                   cout <<"\n Created virtual page. Access - PAGE_READONLY"<<endl;
                  
           }break;
               
               default: {cout<<"Good bye, idiot!"<<endl; return;}
    }
    
    
    pvMm=&pvMem;
}
 
void TryRead (PVOID *pvMem)
{
 
    __try{
      char*  test = *((char* *)*pvMem);
   cout<<test;
    }
    __except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION){cout<<"Error while reading from virtual page"; return;}
             
   
}
 
 
 
void TryWrite (PVOID *pvMem) 
{
    __try{
        
        char* s = new char [50];
        cin>>s;
    *((char* *)*pvMem) = s;
    }
    __except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION){cout<<"Error while writing to virtual page"; return;}
}
 
 
void Trylock (PVOID *pvMem)
{
 
 
    if (!VirtualLock(*pvMem, (DWORD)(99*1024)))  
    {
        cout<<"Can't to lock virtual page"<<endl;
        return;
    }
    else 
    {
        cout<<"Lock virtual page - ok!"<<endl;
    }
 
}
 
void ShowTime (PVOID *pvMem)
{
    PVOID d = pvMem;
    Start(pvMem);
    while (1) 
    {
        cout<<"\nWhat do you want to try??\n 1 - try to write \n 2 - try to read \n 3 - try to lock \n 4 - exit"<<endl;
        int choise;
        cin>>choise;
 
        switch (choise)
        {
        case 1:
        {
            TryWrite(&d);
        }break;
        case 2:
        {
            TryRead(&d);
        }break;
        case 3:
        {
            Trylock(&d);
        }break;
        case 4:
        {
            return;
        }break;
        default: return;
        }
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
   PVOID pvMem;
   ShowTime (&pvMem);
   return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2013, 21:59
Ответы с готовыми решениями:

Ограничение доступа к странице
Как можно ограничить доступ к странице? Например: у меня есть страница которая выполняется раз в 5...

Ограничение доступа к странице
всем привет. есть страница на сайте: site.ru/primer.php как сделать так, чтобы к ней имел...

Ограничение доступа к странице PHP
Вообщем у меня есть страницы: Главная, Описание, Фото, Цены, Оформление заказа, Заказы. Я хочу...

Ребята. Как выйти на сессию. Не понимаю я((( почему не работает? А на html странице под полем ввода икса появляется $x>5?2:3); echo
&lt;HTML&gt; &lt;body&gt; &lt;form method=&quot;POST&quot;&gt; x=&lt;input type=&quot;text&quot;name=&quot;x&quot;value=&quot;&quot;/&gt; ...

2
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
25.03.2013, 22:15 2
MisterMe, у тебя дерьмо с указателями.
1
7 / 7 / 4
Регистрация: 25.03.2013
Сообщений: 117
25.03.2013, 22:24  [ТС] 3
nonedark2008, Точно! Увидел. Заменил

C++
1
PVOID d = pvMem;
на

C++
1
PVOID d = *pvMem;
и все пашет!
Спасибо большое!
0
25.03.2013, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2013, 22:24
Помогаю со студенческими работами здесь

Нарушение прав доступа к виртуальной функции
Добрый день! Начал недавно изучать работу с файлами и попытался реализовать следующее: Есть...

Не удается подключиться к виртуальной точку доступа в win 7
Создал на ноутбуке виртуальную точку доступа в Win 7. Подключиться телефон с Win Phone 8 не может....

Подключение ноута с WinXP к виртуальной Wi-Fi точке доступа
Имеется комп с Win7. На нём - интернет через USB-модем и Connectify (прога для создания и настройки...

Одновременная раздача интернета по виртуальной и локальной точке доступа
Всем доброго времени! Вопрос по операционной системе Window 7 x64 Корпоративная. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru