Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Баланс скобок http://www.cyberforum.ru/cpp-beginners/thread818495.html
Помогите пожалуйста!!! Собственно задание: Текст в файле содержит многократно вложенные круглые скобки. Если баланс скобок соблюден, исправить текст, оставив скобки первого уровня круглыми, второго – заменить на квадратные, третьего и последующих – на фигурные. Добавлено через 1 час 19 минут Помогите, очень нужно)
C++ Сделать масcив используя свободные, целые числа... помогите плиз 1) Сделать масив используя свободные, целые числа. 2) Перевернуть масив и, если число элементов масива непарное, удалить его средний елемент. 3) Добавить в начало масива 3 елемента со значениями M-2. http://www.cyberforum.ru/cpp-beginners/thread818493.html
Разработайте диаграмму вариантов использования и диагамму классов для системы: C++
Авиакомпания – система бронирования и продажи авиабилетов. Разрабатываемая система предназначена для бронирования и продажи авиабилетов на все рейсы, осуществляемые авиакомпанией по всему миру. Кроме того, система выполняет справочные функции (справка о рейсах) и функции системы поддержки принятия решения (расчет оптимального маршрута, состоящего из нескольких перелетов). Пассажиры имеют...
C++ Найти наименьшее среди чисел первой последовательности, не входящих во вторую
Для тестирования предусмотреть возможность задавать элементы массива различным образом: при описании с инициализацией, присвоением значений (в том числе случайных), или вводом необходимых значений. Найти наименьшее среди чисел первой последовательности, не входящих во вторую.
C++ Списки http://www.cyberforum.ru/cpp-beginners/thread818486.html
Варіант 8 Наочний покажчик організований у вигляді лінійного списку . Кожна компоненту покажчика містить слово і номери сторінок , на яких це слово зустрічається . Кількість номерів сторінок , що відносяться до одного слова , лежить в діапазоні від одного до десяти . Написати програму , яка забезпечує : · початкове формування наочного покажчика ; · виведення наочного покажчика ; ·...
C++ Code Composer Studio 5 Помогите исправить ошибки!! Пишу прогу (показана на картинке) выдает ошибки: #10010 errors encountered during linking; Description #10234-D</a> unresolved symbols remain unresolved symbol _MCBSP_start, first referenced in C:\CCStudio_v3.1\C5500\dsk5510\lib\dsk5510bslx.lib<dsk5510_aic23_opencodec.obj> unresolved symbol _MCBSP_write16, first referenced in... подробнее

Показать сообщение отдельно
MisterMe
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 116
25.03.2013, 21:59     Почему не работает ограничение доступа к виртуальной странице?
Почему-то я могу записывать данные на виртуальную страницу с доступом 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru