mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 15:11:41 +00:00
fix handle table calculations
now we can create 4186000 handles instead of 4100 and VLC doesn't BSOD anymore svn path=/trunk/; revision=34466
This commit is contained in:
parent
ba77ba4484
commit
538c89cbf6
1 changed files with 18 additions and 4 deletions
|
@ -209,11 +209,18 @@ ExpFreeHandleTable(IN PHANDLE_TABLE HandleTable)
|
||||||
{
|
{
|
||||||
PEPROCESS Process = HandleTable->QuotaProcess;
|
PEPROCESS Process = HandleTable->QuotaProcess;
|
||||||
ULONG i, j;
|
ULONG i, j;
|
||||||
ULONG TableLevel = (ULONG)(HandleTable->TableCode & 3);
|
ULONG TableLevel;
|
||||||
ULONG_PTR TableBase = HandleTable->TableCode & ~3;
|
ULONG_PTR TableBase;
|
||||||
PHANDLE_TABLE_ENTRY Level1, *Level2, **Level3;
|
PHANDLE_TABLE_ENTRY Level1, *Level2, **Level3;
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
/* Get the table code */
|
||||||
|
TableBase = *(volatile ULONG_PTR*)&HandleTable->TableCode;
|
||||||
|
|
||||||
|
/* Extract the table level and actual table base */
|
||||||
|
TableLevel = (ULONG)(TableBase & 3);
|
||||||
|
TableBase = TableBase - TableLevel;
|
||||||
|
|
||||||
/* Check which level we're at */
|
/* Check which level we're at */
|
||||||
if (!TableLevel)
|
if (!TableLevel)
|
||||||
{
|
{
|
||||||
|
@ -497,10 +504,17 @@ ExpAllocateHandleTableEntrySlow(IN PHANDLE_TABLE HandleTable,
|
||||||
PHANDLE_TABLE_ENTRY Low = NULL, *Mid, **High, *SecondLevel, **ThirdLevel;
|
PHANDLE_TABLE_ENTRY Low = NULL, *Mid, **High, *SecondLevel, **ThirdLevel;
|
||||||
ULONG NewFree, FirstFree;
|
ULONG NewFree, FirstFree;
|
||||||
PVOID Value;
|
PVOID Value;
|
||||||
ULONG_PTR TableBase = HandleTable->TableCode & ~3;
|
ULONG_PTR TableBase;
|
||||||
ULONG TableLevel = (ULONG)(TableBase & 3);
|
ULONG TableLevel;
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
/* Get the table code */
|
||||||
|
TableBase = *(volatile ULONG_PTR*)&HandleTable->TableCode;
|
||||||
|
|
||||||
|
/* Extract the table level and actual table base */
|
||||||
|
TableLevel = (ULONG)(TableBase & 3);
|
||||||
|
TableBase = TableBase - TableLevel;
|
||||||
|
|
||||||
/* Check how many levels we already have */
|
/* Check how many levels we already have */
|
||||||
if (!TableLevel)
|
if (!TableLevel)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue