00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "mi.h"
00022
00023
00024
00025
00026
00027 PVOID
MmHighestUserAddress;
00028
00029
00030
00031
00032
00033 PVOID
MmSystemRangeStart;
00034
00035
00036
00037
00038
00039 ULONG_PTR
MmUserProbeAddress;
00040
00041
00042
00043
00044
00045 ULONG_PTR
MmVirtualBias;
00046
00047
00048
00049
00050
00051 ULONG
MmSecondaryColors;
00052
00053
00054
00055
00056
00057 ULONG
MmProcessColorSeed = 0x12345678;
00058
00059
00060
00061
00062
00063 PFN_COUNT
MmNumberOfPhysicalPages;
00064
00065
00066
00067
00068
00069 PFN_NUMBER
MmLowestPhysicalPage = (PFN_NUMBER)-1;
00070
00071
00072
00073
00074
00075 PFN_NUMBER
MmHighestPhysicalPage;
00076
00077
00078
00079
00080
00081 PFN_NUMBER
MmHighestPossiblePhysicalPage;
00082
00083
00084
00085
00086
00087
00088 PFN_COUNT
MmAvailablePages;
00089 PFN_NUMBER
MmThrottleTop;
00090 PFN_NUMBER
MmThrottleBottom;
00091
00092
00093
00094
00095
00096 MMINFO_COUNTERS MmInfoCounters;
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 SPFN_NUMBER
MmResidentAvailablePages;
00110
00111
00112
00113
00114
00115
00116 PFN_NUMBER
MmPagesAboveWsMinimum;
00117
00118
00119
00120
00121
00122
00123 PFN_NUMBER
MmPagesAboveWsMaximum;
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 PFN_NUMBER
MmPagesAboveWsThreshold = 37;
00136
00137 PFN_NUMBER
MmWorkingSetSizeIncrement = 6;
00138
00139
00140
00141
00142
00143 PFN_NUMBER
MmWorkingSetSizeExpansion = 20;
00144
00145
00146
00147
00148
00149
00150 PFN_NUMBER
MmWsAdjustThreshold = 45;
00151
00152
00153
00154
00155
00156
00157 PFN_NUMBER
MmWsExpandThreshold = 90;
00158
00159
00160
00161
00162
00163 PFN_NUMBER
MmWsTrimReductionGoal = 29;
00164
00165
00166
00167
00168
00169 PFN_NUMBER
MmHiberPages = 512;
00170
00171
00172
00173
00174
00175 ULONG
MmLargePageMinimum;
00176
00177 PMMPFN MmPfnDatabase;
00178
00179 MMPFNLIST MmZeroedPageListHead = {
00180 0,
00181
ZeroedPageList,
00182
MM_EMPTY_LIST,
00183
MM_EMPTY_LIST
00184 };
00185
00186 MMPFNLIST MmFreePageListHead = {
00187 0,
00188
FreePageList,
00189
MM_EMPTY_LIST,
00190
MM_EMPTY_LIST
00191 };
00192
00193 MMPFNLIST MmStandbyPageListHead = {
00194 0,
00195
StandbyPageList,
00196
MM_EMPTY_LIST,
00197
MM_EMPTY_LIST
00198 };
00199
00200 MMPFNLIST MmModifiedPageListHead = {
00201 0,
00202
ModifiedPageList,
00203
MM_EMPTY_LIST,
00204
MM_EMPTY_LIST
00205 };
00206
00207 MMPFNLIST MmModifiedNoWritePageListHead = {
00208 0,
00209
ModifiedNoWritePageList,
00210
MM_EMPTY_LIST,
00211
MM_EMPTY_LIST
00212 };
00213
00214 MMPFNLIST MmBadPageListHead = {
00215 0,
00216
BadPageList,
00217
MM_EMPTY_LIST,
00218
MM_EMPTY_LIST
00219 };
00220
00221 PMMPFNLIST MmPageLocationList[
NUMBER_OF_PAGE_LISTS] = {
00222 &
MmZeroedPageListHead,
00223 &
MmFreePageListHead,
00224 &
MmStandbyPageListHead,
00225 &
MmModifiedPageListHead,
00226 &
MmModifiedNoWritePageListHead,
00227 &
MmBadPageListHead,
00228
NULL,
00229
NULL };
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247 PMMPTE MiHighestUserPte;
00248 PMMPTE MiHighestUserPde;
00249
00250 PMMPTE MiSessionBasePte;
00251 PMMPTE MiSessionLastPte;
00252
00253
00254
00255
00256
00257 PMMPTE MmFirstReservedMappingPte;
00258
00259 PMMPTE MmLastReservedMappingPte;
00260
00261
PMMWSL MmWorkingSetList;
00262
00263
PMMWSLE MmWsle;
00264
00265
00266
00267
00268
00269 KEVENT MmAvailablePagesEvent;
00270
00271
00272
00273
00274
00275 KEVENT MmZeroingPageEvent;
00276
00277
00278
00279
00280
00281
00282
00283
00284 BOOLEAN
MmZeroingPageThreadActive;
00285
00286
00287
00288
00289
00290 PFN_NUMBER
MmMinimumFreePagesToZero = 8;
00291
00292
00293
00294
00295
00296
00297
00298 PVOID
MmNonPagedSystemStart;
00299
00300 LOGICAL
MmProtectFreedNonPagedPool;
00301
00302 LOGICAL
MmDynamicPfn =
FALSE;
00303
00304
#if PFN_CONSISTENCY
00305
PMMPTE MiPfnStartPte;
00306 PFN_NUMBER MiPfnPtes;
00307 BOOLEAN MiPfnProtectionEnabled;
00308
PETHREAD MiPfnLockOwner;
00309
#endif
00310
00311
#ifdef MM_BUMP_COUNTER_MAX
00312 SIZE_T
MmResTrack[
MM_BUMP_COUNTER_MAX];
00313
#endif
00314
00315
#ifdef MM_COMMIT_COUNTER_MAX
00316
SIZE_T MmTrackCommit[MM_COMMIT_COUNTER_MAX];
00317
#endif
00318
00319
00320
00321
00322
00323 LOGICAL
MmTrackLockedPages;
00324
00325
00326
00327
00328
00329
00330 LOGICAL
MmSnapUnloads =
TRUE;
00331
00332
#if DBG
00333
PETHREAD MiExpansionLockOwner;
00334
#endif
00335
00336
00337
00338
00339
00340 SIZE_T
MmSizeOfNonPagedPoolInBytes;
00341
00342 SIZE_T
MmMaximumNonPagedPoolInBytes;
00343
00344 SIZE_T
MmMinimumNonPagedPoolSize = 256 * 1024;
00345
00346 ULONG
MmMinAdditionNonPagedPoolPerMb = 32 * 1024;
00347
00348 SIZE_T
MmDefaultMaximumNonPagedPool = 1024 * 1024;
00349
00350 ULONG
MmMaxAdditionNonPagedPoolPerMb = 400 * 1024;
00351
00352 SIZE_T
MmSizeOfPagedPoolInBytes = 32 * 1024 * 1024;
00353
00354 PFN_NUMBER
MmSizeOfNonPagedMustSucceed = 4 *
PAGE_SIZE;
00355
00356 ULONG
MmNumberOfSystemPtes;
00357
00358 ULONG
MiRequestedSystemPtes;
00359
00360 ULONG
MmLockPagesPercentage;
00361
00362 PFN_NUMBER
MmLockPagesLimit;
00363
00364 PMMPTE MmFirstPteForPagedPool;
00365
00366 PMMPTE MmLastPteForPagedPool;
00367
00368 PMMPTE MmPagedPoolBasePde;
00369
00370
00371
00372
00373
00374 PVOID
MmPageAlignedPoolBase[2];
00375
00376 PVOID
MmNonPagedMustSucceed;
00377
00378 ULONG
MmExpandedPoolBitPosition;
00379
00380 PFN_NUMBER
MmNumberOfFreeNonPagedPool;
00381
00382 ULONG
MmMustSucceedPoolBitPosition;
00383
00384
00385
00386
00387
00388
00389
00390 MMPTE MmFirstFreeSystemPte[
MaximumPtePoolTypes];
00391
00392
00393
00394
00395
00396 PMMWSL MmSystemCacheWorkingSetList = (
PMMWSL)
MM_SYSTEM_CACHE_WORKING_SET;
00397
00398 MMSUPPORT MmSystemCacheWs;
00399
00400 PMMWSLE MmSystemCacheWsle;
00401
00402 PVOID
MmSystemCacheStart = (PVOID)
MM_SYSTEM_CACHE_START;
00403
00404 PVOID
MmSystemCacheEnd;
00405
00406 PRTL_BITMAP
MmSystemCacheAllocationMap;
00407
00408 PRTL_BITMAP
MmSystemCacheEndingMap;
00409
00410
00411
00412
00413
00414
00415 PFN_COUNT
MmSizeOfSystemCacheInPages = 64 * 256;
00416
00417
00418
00419
00420
00421 PFN_NUMBER
MmSystemCacheWsMinimum = 288;
00422
00423 PFN_NUMBER
MmSystemCacheWsMaximum = 350;
00424
00425
00426
00427
00428
00429
00430 ULONG
MmNumberDeadKernelStacks;
00431 ULONG
MmMaximumDeadKernelStacks = 5;
00432 PMMPFN MmFirstDeadKernelStack = (
PMMPFN)
NULL;
00433
00434
00435
00436
00437
00438
00439
00440 PMMPTE MmSystemPteBase;
00441
00442 PMMWSL MmWorkingSetList;
00443
00444 PMMWSLE MmWsle;
00445
00446 PMMADDRESS_NODE MmSectionBasedRoot;
00447
00448 PVOID
MmHighSectionBase;
00449
00450
00451
00452
00453
00454 POBJECT_TYPE MmSectionObjectType;
00455
00456
00457
00458
00459
00460 FAST_MUTEX MmSectionCommitMutex;
00461
00462
00463
00464
00465
00466 FAST_MUTEX MmSectionBasedMutex;
00467
00468
00469
00470
00471
00472 ERESOURCE MmSectionExtendResource;
00473 ERESOURCE MmSectionExtendSetResource;
00474
00475
00476
00477
00478
00479 FAST_MUTEX MmPageFileCreationLock;
00480
00481 MMDEREFERENCE_SEGMENT_HEADER MmDereferenceSegmentHeader;
00482
00483 LIST_ENTRY
MmUnusedSegmentList;
00484
00485 KEVENT MmUnusedSegmentCleanup;
00486
00487 ULONG
MmUnusedSegmentCount;
00488
00489
00490
00491
00492
00493 SIZE_T
MmMaxUnusedSegmentPagedPoolUsage;
00494
00495
00496
00497
00498
00499 SIZE_T
MmUnusedSegmentPagedPoolUsage;
00500 SIZE_T
MiUnusedSegmentPagedPoolUsage;
00501
00502
00503
00504
00505
00506 SIZE_T
MmUnusedSegmentPagedPoolReduction;
00507
00508
00509
00510
00511
00512 SIZE_T
MmMaxUnusedSegmentNonPagedPoolUsage;
00513
00514
00515
00516
00517
00518 SIZE_T
MmUnusedSegmentNonPagedPoolUsage;
00519 SIZE_T
MiUnusedSegmentNonPagedPoolUsage;
00520
00521
00522
00523
00524
00525 SIZE_T
MmUnusedSegmentNonPagedPoolReduction;
00526
00527
00528
00529
00530
00531
00532
00533 ULONG
MmUnusedSegmentTrimLevel = 18;
00534
00535 MMWORKING_SET_EXPANSION_HEAD MmWorkingSetExpansionHead;
00536
00537 MMPAGE_FILE_EXPANSION MmAttemptForCantExtend;
00538
00539
00540
00541
00542
00543 MMMOD_WRITER_LISTHEAD MmPagingFileHeader;
00544
00545 MMMOD_WRITER_LISTHEAD MmMappedFileHeader;
00546
00547 PMMMOD_WRITER_MDL_ENTRY MmMappedFileMdl[
MM_MAPPED_FILE_MDLS]; ;
00548
00549 LIST_ENTRY
MmFreePagingSpaceLow;
00550
00551 ULONG
MmNumberOfActiveMdlEntries;
00552
00553 PMMPAGING_FILE MmPagingFile[
MAX_PAGE_FILES];
00554
00555 ULONG
MmNumberOfPagingFiles;
00556
00557 KEVENT MmModifiedPageWriterEvent;
00558
00559 KEVENT MmWorkingSetManagerEvent;
00560
00561 KEVENT MmCollidedFlushEvent;
00562
00563
00564
00565
00566
00567 SIZE_T
MmTotalCommittedPages;
00568
00569
00570
00571
00572
00573
00574 SIZE_T
MmTotalCommitLimit;
00575
00576 SIZE_T
MmTotalCommitLimitMaximum;
00577
00578
00579
00580
00581
00582
00583 SIZE_T
MmOverCommit;
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595 PFN_NUMBER
MmMinimumFreePages = 26;
00596
00597
00598
00599
00600
00601 PFN_NUMBER
MmFreeGoal = 100;
00602
00603
00604
00605
00606
00607
00608 PFN_NUMBER
MmModifiedPageMaximum;
00609
00610
00611
00612
00613
00614
00615 PFN_NUMBER
MmModifiedPageMinimum;
00616
00617
00618
00619
00620
00621
00622 ULONG
MmMinimumFreeDiskSpace = 1024 * 1024;
00623
00624
00625
00626
00627
00628 ULONG
MmPageFileExtension = 128;
00629
00630
00631
00632
00633
00634 ULONG
MmMinimumPageFileReduction = 256;
00635
00636
00637
00638
00639
00640 ULONG
MmModifiedWriteClusterSize =
MM_MAXIMUM_WRITE_CLUSTER;
00641
00642
00643
00644
00645
00646 ULONG
MmReadClusterSize = 7;
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665 ERESOURCE MmSystemWsLock;
00666
00667 PETHREAD MmSystemLockOwner;
00668
00669
00670
00671
00672
00673 KSPIN_LOCK
MmExpansionLock;
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683 PFN_NUMBER
MmSystemProcessWorkingSetMin = 50;
00684
00685 PFN_NUMBER
MmSystemProcessWorkingSetMax = 450;
00686
00687 PFN_NUMBER
MmMaximumWorkingSetSize;
00688
00689 PFN_NUMBER
MmMinimumWorkingSetSize = 20;
00690
00691
00692
00693
00694
00695
00696 ULONG
MmSystemPageColor;
00697
00698
00699
00700
00701
00702 LARGE_INTEGER
MmSevenMinutes = {0, -1};
00703
00704
00705
00706
00707
00708
00709
00710 LARGE_INTEGER
MmWorkingSetProtectionTime = {5 * 1000 * 1000 * 10, 0};
00711
00712 LARGE_INTEGER
MmOneSecond = {(ULONG)(-1 * 1000 * 1000 * 10), -1};
00713 LARGE_INTEGER
MmTwentySeconds = {(ULONG)(-20 * 1000 * 1000 * 10), -1};
00714 LARGE_INTEGER
MmShortTime = {(ULONG)(-10 * 1000 * 10), -1};
00715 LARGE_INTEGER
MmHalfSecond = {(ULONG)(-5 * 100 * 1000 * 10), -1};
00716 LARGE_INTEGER
Mm30Milliseconds = {(ULONG)(-30 * 1000 * 10), -1};
00717
00718
00719
00720
00721 ULONG
MmCritsectTimeoutSeconds = 2592000;
00722 LARGE_INTEGER
MmCriticalSectionTimeout;
00723 SIZE_T
MmHeapSegmentReserve = 1024 * 1024;
00724 SIZE_T
MmHeapSegmentCommit =
PAGE_SIZE * 2;
00725 SIZE_T
MmHeapDeCommitTotalFreeThreshold = 64 * 1024;
00726 SIZE_T
MmHeapDeCommitFreeBlockThreshold =
PAGE_SIZE;
00727
00728
00729
00730
00731
00732
00733
00734 ULONG
MmDisablePagingExecutive;
00735
00736 BOOLEAN
Mm64BitPhysicalAddress;
00737
00738
#if DBG
00739
ULONG MmDebug;
00740
#endif
00741
00742
00743
00744
00745
00746 ULONG
MmProtectToValue[32] = {
00747 PAGE_NOACCESS,
00748 PAGE_READONLY,
00749 PAGE_EXECUTE,
00750 PAGE_EXECUTE_READ,
00751 PAGE_READWRITE,
00752 PAGE_WRITECOPY,
00753 PAGE_EXECUTE_READWRITE,
00754 PAGE_EXECUTE_WRITECOPY,
00755 PAGE_NOACCESS,
00756 PAGE_NOCACHE | PAGE_READONLY,
00757 PAGE_NOCACHE | PAGE_EXECUTE,
00758 PAGE_NOCACHE | PAGE_EXECUTE_READ,
00759 PAGE_NOCACHE | PAGE_READWRITE,
00760 PAGE_NOCACHE | PAGE_WRITECOPY,
00761 PAGE_NOCACHE | PAGE_EXECUTE_READWRITE,
00762 PAGE_NOCACHE | PAGE_EXECUTE_WRITECOPY,
00763 PAGE_NOACCESS,
00764 PAGE_GUARD | PAGE_READONLY,
00765 PAGE_GUARD | PAGE_EXECUTE,
00766 PAGE_GUARD | PAGE_EXECUTE_READ,
00767 PAGE_GUARD | PAGE_READWRITE,
00768 PAGE_GUARD | PAGE_WRITECOPY,
00769 PAGE_GUARD | PAGE_EXECUTE_READWRITE,
00770 PAGE_GUARD | PAGE_EXECUTE_WRITECOPY,
00771 PAGE_NOACCESS,
00772 PAGE_NOCACHE | PAGE_GUARD | PAGE_READONLY,
00773 PAGE_NOCACHE | PAGE_GUARD | PAGE_EXECUTE,
00774 PAGE_NOCACHE | PAGE_GUARD | PAGE_EXECUTE_READ,
00775 PAGE_NOCACHE | PAGE_GUARD | PAGE_READWRITE,
00776 PAGE_NOCACHE | PAGE_GUARD | PAGE_WRITECOPY,
00777 PAGE_NOCACHE | PAGE_GUARD | PAGE_EXECUTE_READWRITE,
00778 PAGE_NOCACHE | PAGE_GUARD | PAGE_EXECUTE_WRITECOPY
00779 };
00780
00781 ULONG
MmProtectToPteMask[32] = {
00782
MM_PTE_NOACCESS,
00783
MM_PTE_READONLY |
MM_PTE_CACHE,
00784
MM_PTE_EXECUTE |
MM_PTE_CACHE,
00785
MM_PTE_EXECUTE_READ |
MM_PTE_CACHE,
00786
MM_PTE_READWRITE |
MM_PTE_CACHE,
00787
MM_PTE_WRITECOPY |
MM_PTE_CACHE,
00788
MM_PTE_EXECUTE_READWRITE |
MM_PTE_CACHE,
00789
MM_PTE_EXECUTE_WRITECOPY |
MM_PTE_CACHE,
00790
MM_PTE_NOACCESS,
00791
MM_PTE_NOCACHE |
MM_PTE_READONLY,
00792
MM_PTE_NOCACHE |
MM_PTE_EXECUTE,
00793
MM_PTE_NOCACHE |
MM_PTE_EXECUTE_READ,
00794
MM_PTE_NOCACHE |
MM_PTE_READWRITE,
00795
MM_PTE_NOCACHE |
MM_PTE_WRITECOPY,
00796
MM_PTE_NOCACHE |
MM_PTE_EXECUTE_READWRITE,
00797
MM_PTE_NOCACHE |
MM_PTE_EXECUTE_WRITECOPY,
00798
MM_PTE_NOACCESS,
00799
MM_PTE_GUARD |
MM_PTE_READONLY |
MM_PTE_CACHE,
00800
MM_PTE_GUARD |
MM_PTE_EXECUTE |
MM_PTE_CACHE,
00801
MM_PTE_GUARD |
MM_PTE_EXECUTE_READ |
MM_PTE_CACHE,
00802
MM_PTE_GUARD |
MM_PTE_READWRITE |
MM_PTE_CACHE,
00803
MM_PTE_GUARD |
MM_PTE_WRITECOPY |
MM_PTE_CACHE,
00804
MM_PTE_GUARD |
MM_PTE_EXECUTE_READWRITE |
MM_PTE_CACHE,
00805
MM_PTE_GUARD |
MM_PTE_EXECUTE_WRITECOPY |
MM_PTE_CACHE,
00806
MM_PTE_NOACCESS,
00807
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_READONLY,
00808
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_EXECUTE,
00809
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_EXECUTE_READ,
00810
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_READWRITE,
00811
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_WRITECOPY,
00812
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_EXECUTE_READWRITE,
00813
MM_PTE_NOCACHE |
MM_PTE_GUARD |
MM_PTE_EXECUTE_WRITECOPY
00814 };
00815
00816
00817
00818
00819
00820
00821 ULONG
MmMakeProtectNotWriteCopy[32] = {
00822
MM_NOACCESS,
00823
MM_READONLY,
00824
MM_EXECUTE,
00825
MM_EXECUTE_READ,
00826
MM_READWRITE,
00827
MM_READWRITE,
00828
MM_EXECUTE_READWRITE,
00829
MM_EXECUTE_READWRITE,
00830
MM_NOACCESS,
00831
MM_NOCACHE |
MM_READONLY,
00832
MM_NOCACHE |
MM_EXECUTE,
00833
MM_NOCACHE |
MM_EXECUTE_READ,
00834
MM_NOCACHE |
MM_READWRITE,
00835
MM_NOCACHE |
MM_READWRITE,
00836
MM_NOCACHE |
MM_EXECUTE_READWRITE,
00837
MM_NOCACHE |
MM_EXECUTE_READWRITE,
00838
MM_NOACCESS,
00839
MM_GUARD_PAGE |
MM_READONLY,
00840
MM_GUARD_PAGE |
MM_EXECUTE,
00841
MM_GUARD_PAGE |
MM_EXECUTE_READ,
00842
MM_GUARD_PAGE |
MM_READWRITE,
00843
MM_GUARD_PAGE |
MM_READWRITE,
00844
MM_GUARD_PAGE |
MM_EXECUTE_READWRITE,
00845
MM_GUARD_PAGE |
MM_EXECUTE_READWRITE,
00846
MM_NOACCESS,
00847
MM_NOCACHE |
MM_GUARD_PAGE |
MM_READONLY,
00848
MM_NOCACHE |
MM_GUARD_PAGE |
MM_EXECUTE,
00849
MM_NOCACHE |
MM_GUARD_PAGE |
MM_EXECUTE_READ,
00850
MM_NOCACHE |
MM_GUARD_PAGE |
MM_READWRITE,
00851
MM_NOCACHE |
MM_GUARD_PAGE |
MM_READWRITE,
00852
MM_NOCACHE |
MM_GUARD_PAGE |
MM_EXECUTE_READWRITE,
00853
MM_NOCACHE |
MM_GUARD_PAGE |
MM_EXECUTE_READWRITE
00854 };
00855
00856
00857
00858
00859
00860
00861 ACCESS_MASK
MmMakeSectionAccess[8] = { SECTION_MAP_READ,
00862 SECTION_MAP_READ,
00863 SECTION_MAP_EXECUTE,
00864 SECTION_MAP_EXECUTE | SECTION_MAP_READ,
00865 SECTION_MAP_WRITE,
00866 SECTION_MAP_READ,
00867 SECTION_MAP_EXECUTE | SECTION_MAP_WRITE,
00868 SECTION_MAP_EXECUTE | SECTION_MAP_READ };
00869
00870
00871
00872
00873
00874
00875 ACCESS_MASK
MmMakeFileAccess[8] = { FILE_READ_DATA,
00876 FILE_READ_DATA,
00877 FILE_EXECUTE,
00878 FILE_EXECUTE | FILE_READ_DATA,
00879 FILE_WRITE_DATA | FILE_READ_DATA,
00880 FILE_READ_DATA,
00881 FILE_EXECUTE | FILE_WRITE_DATA | FILE_READ_DATA,
00882 FILE_EXECUTE | FILE_READ_DATA };
00883
00884 MM_PAGED_POOL_INFO MmPagedPoolInfo;
00885
00886
00887
00888
00889
00890 BOOLEAN
MiHydra;
00891
00892 ULONG_PTR
MmSessionBase;
00893 PMM_SESSION_SPACE MmSessionSpace;
00894
00895 LIST_ENTRY
MiSessionWsList;
00896
00897 ULONG_PTR
MiSystemViewStart;
00898
00899
00900
00901
00902
00903
00904 ULONG
MiIoRetryLevel = 25;
00905 ULONG
MiFaultRetries = 25;
00906 ULONG
MiUserIoRetryLevel = 10;
00907 ULONG
MiUserFaultRetries = 10;
00908
00909
#ifdef ALLOC_DATA_PRAGMA
00910
#pragma data_seg("INIT")
00911
#endif
00912
00913 WCHAR
MmVerifyDriverBuffer[
MI_SUSPECT_DRIVER_BUFFER_LENGTH];
00914 ULONG
MmVerifyDriverBufferLength =
sizeof(
MmVerifyDriverBuffer);
00915 ULONG
MmVerifyDriverBufferType = REG_NONE;
00916 ULONG
MmVerifyDriverLevel = (ULONG)-1;
00917
00918
#ifdef ALLOC_DATA_PRAGMA
00919
#pragma data_seg()
00920
#endif