我有一個文件映射類,允許我使用Win32 API函數LockFileEx()也鎖定爲獨佔使用的文件通過我的過程。訪問衝突調用LockFileEx時()
bool FileMapping::lockFile(bool wait) {
if (isFileLocked())
return true;
// We want an exclusive lock.
DWORD flags = LOCKFILE_EXCLUSIVE_LOCK;
// If we don't want the thread to block, we have to set the appropriate flag.
if (!wait)
flags |= LOCKFILE_FAIL_IMMEDIATELY;
m_isFileLocked = LockFileEx(m_fileDesc, flags, 0, (DWORD) m_mappingLength, (DWORD) (((uint64_t) m_mappingLength) >> 32), NULL);
return m_isFileLocked;
}
每當我到LockFileEx()
呼叫我得到一個訪問衝突:
未處理的異常在0x7466c2ec在tftpServer.exe:0000005:
訪問衝突讀取位置0x00000008。
文件句柄m_fileDesc
肯定是有效的句柄(文件到存儲器映射與該手柄工作)和m_mappingLength
只是一個size_t
含有以字節爲單位映射文件部分的長度。
有誰有一個想法如何解決這一問題?
的*這*指針爲空。您在空FileMapping對象上調用此方法。 –