MCPcopy Create free account
hub / github.com/qilingframework/qiling / _CreateFileMapping

Function _CreateFileMapping

qiling/os/windows/dlls/kernel32/fileapi.py:693–727  ·  view source on GitHub ↗
(ql: Qiling, address: int, params)

Source from the content-addressed store, hash-verified

691
692
693def _CreateFileMapping(ql: Qiling, address: int, params):
694 hFile = params['hFile']
695 dwMaximumSizeHigh = params['dwMaximumSizeHigh']
696 dwMaximumSizeLow = params['dwMaximumSizeLow']
697 lpName = params['lpName']
698
699 hFile = ql.os.utils.as_signed(hFile, ql.arch.bits)
700 req_size = (dwMaximumSizeHigh << 32) | dwMaximumSizeLow
701
702 if hFile == INVALID_HANDLE_VALUE:
703 fmobj = FileMappingMem()
704
705 else:
706 # look for an existing mapping handle with the same name
707 if lpName:
708 existing_handle = ql.os.handle_manager.search(lpName)
709
710 # if found, return it
711 if existing_handle is not None:
712 return existing_handle
713
714 fhandle = ql.os.handle_manager.get(hFile)
715
716 # wrap the opened file with an accessor class
717 fmobj = FileMappingFile(fhandle.obj)
718 fsize = fmobj.get_file_size()
719
720 # if requeted mapping is size is larger than the file size, enlarge it
721 if req_size > fsize:
722 fmobj.inc_file_size(req_size - fsize)
723
724 fm_handle = Handle(obj=fmobj, name=lpName or None)
725 ql.os.handle_manager.append(fm_handle)
726
727 return fm_handle.id
728
729# HANDLE CreateFileMappingA(
730# HANDLE hFile,

Callers 2

hook_CreateFileMappingAFunction · 0.85
hook_CreateFileMappingWFunction · 0.85

Calls 9

get_file_sizeMethod · 0.95
inc_file_sizeMethod · 0.95
HandleClass · 0.90
FileMappingMemClass · 0.85
FileMappingFileClass · 0.85
as_signedMethod · 0.80
searchMethod · 0.45
getMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected