Commit 1cc90fff authored by Ian Schmidt's avatar Ian Schmidt Committed by Alexandre Julliard

Stubs for VMM GetDemandPageInfo function and VWin32 "Get VMCPD Version".

Implementation for VWin32 Int31/DPMI dispatch call. Fixed "dangling else" compiler warning.
parent 42d4f301
......@@ -784,10 +784,12 @@ static DWORD VxDCall_VMM( DWORD service, CONTEXT86 *context )
virt_new_perm = ( virt_old_perm ) & ~0xff;
if ( pg_new_perm & PC_USER )
{
if ( pg_new_perm & PC_WRITEABLE )
virt_new_perm |= PAGE_EXECUTE_READWRITE;
else
virt_new_perm |= PAGE_EXECUTE_READ;
}
if ( ! VirtualProtect ( address, ( npages * psize ), virt_new_perm, &virt_old_perm ) ) {
ERR("Can't change page permissions for %08lx\n", (DWORD )address );
......@@ -811,8 +813,23 @@ static DWORD VxDCall_VMM( DWORD service, CONTEXT86 *context )
return 0;
}
case 0x001e: /* GetDemandPageInfo */
{
DWORD dinfo = (DWORD)stack32_pop( context );
DWORD flags = (DWORD)stack32_pop( context );
/* GetDemandPageInfo is supposed to fill out the struct at
* "dinfo" with various low-level memory management information.
* Apps are certainly not supposed to call this, although it's
* demoed and documented by Pietrek on pages 441-443 of "Windows
* 95 System Programming Secrets" if any program needs a real
* implementation of this.
*/
FIXME("GetDemandPageInfo(%08lx %08lx): stub!\n", dinfo, flags);
return 0;
}
default:
if (LOWORD(service) < N_VMM_SERVICE)
FIXME( "Unimplemented service %s (%08lx)\n",
......@@ -1001,6 +1018,35 @@ static DWORD VxDCall_VWin32( DWORD service, CONTEXT86 *context )
}
break;
case 0x0020: /* Get VMCPD Version */
{
DWORD parm = (DWORD) stack32_pop(context);
FIXME("Get VMCPD Version(%08lx): partial stub!\n", parm);
/* FIXME: This is what Win98 returns, it may
* not be correct in all situations.
* It makes Bleem! happy though.
*/
return 0x0405;
}
case 0x0029: /* Int31/DPMI dispatch */
{
DWORD callnum = (DWORD) stack32_pop(context);
DWORD parm = (DWORD) stack32_pop(context);
TRACE("Int31/DPMI dispatch(%08lx)\n", callnum);
AX_reg(context) = callnum;
CX_reg(context) = parm;
INT_Int31Handler(context);
return(AX_reg(context));
}
break;
case 0x002a: /* Int41 dispatch - parm = int41 service number */
{
DWORD callnum = (DWORD) stack32_pop(context);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment