Dr. Dobb's Journal December 1997
Dpmi_Error: exception; -- Thrown if there is a system problem
Start_Of_Locked_Code, End_Of_Locked_Code: Unsigned_Char;
pragma Import( Asm, Start_Of_Locked_Code, "start_of_locked_code" );
pragma Import( Asm, End_Of_Locked_Code, "end_of_locked_code" );
Code: aliased Dpmi_Mem_Info;
...
Dpmi_Get_Segment_Base_Address( My_Cs, Code.Address );
Code.Address := Code.Address + To_Long( Start_Of_Locked_Code'Address );
Code.Size := To_Long( End_Of_Locked_Code'Address ) -
To_Long( Start_Of_Locked_Code'Address );
if( Dpmi_Lock_Linear_Region( Code'access ) /= 0 ) then
raise Dpmi_Error;
end if;