rendered paste bodyvoidReleaseAllocatedMemory(){ULONG i;PVOID ptr;POBJECT hObject;NTSTATUS NtStatus;extern VideoModeParameters VidParam;extern PDEVICE_OBJECT Video0Device;static union u{ VIDEO_MEMORY vm; VIDEO_MEMORY_INFORMATION vmi;} vmem; for(i=0; i<NbDescriptionObject; i++) { // Select object # i hObject = DescriptionObjectTable[i]; // free buffer allocated for the object switch(hObject->TypeOfObject) { case WINDOW_TYPE : MmFreeNonCachedMemory(ptr=((PWINDOW_OBJECT)hObject->ObjectDefinition)->TextBarBuffer, ((PWINDOW_OBJECT)hObject->ObjectDefinition)->MaxChar); break; case EDIT_TYPE : MmFreeNonCachedMemory(ptr=((PEDIT_OBJECT)hObject->ObjectDefinition)->EditBuffer, ((PEDIT_OBJECT)hObject->ObjectDefinition)->MaxChar); break; case STATIC_TYPE : MmFreeNonCachedMemory(ptr=((PSTATIC_OBJECT)hObject->ObjectDefinition)->TextBuffer, ((PSTATIC_OBJECT)hObject->ObjectDefinition)->MaxChar); break; } DbgPrint("Freed mem : 0x%x", ptr); } // Release video memory vmem.vm.RequestedVirtualAddress = VidParam.VideoRamBase; NtStatus = MakeSynchronousIoctl(Video0Device, IOCTL_VIDEO_UNMAP_VIDEO_MEMORY, &vmem,sizeof(vmem.vm),0,0);}