//++ //------------------------------------------------------------------------------------ // Details: The callee client calls the write function on the Logger. The data // to be // written is given out to all the mediums registered. The verbosity // type parameter // indicates to the medium the type of data or message given to it. The // medium has // modes of verbosity and depending on the verbosity set determines // which data is // sent to the medium's output. // Type: Method. // Args: vData - (R) The data to write to the logger. // veType - (R) Verbosity type. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- bool CMICmnLogMediumFile::Write(const CMIUtilString &vData, const CMICmnLog::ELogVerbosity veType) { if (m_bInitialized && m_file.IsOk()) { const bool bDoWrite = (m_eVerbosityType & veType); if (bDoWrite) { bool bNewCreated = false; bool bOk = m_file.CreateWrite(m_fileNamePath, bNewCreated); if (bOk) { if (bNewCreated) bOk = FileWriteHeader(); bOk = bOk && FileWriteEnglish(MassagedData(vData, veType)); } return bOk; } } return MIstatus::failure; }
//============================================================================= CSaveData::~CSaveData() { PAGED_CODE(); DPF_ENTER(("[CSaveData::~CSaveData]")); // Update the wave header in data file with real file size. // if(m_pFilePtr) { m_FileHeader.dwFileSize = (DWORD) m_pFilePtr->QuadPart - 2 * sizeof(DWORD); m_DataHeader.dwDataLength = (DWORD) m_pFilePtr->QuadPart - sizeof(m_FileHeader) - m_FileHeader.dwFormatLength - sizeof(m_DataHeader); if (STATUS_SUCCESS == KeWaitForSingleObject ( &m_FileSync, Executive, KernelMode, FALSE, NULL )) { if (NT_SUCCESS(FileOpen(FALSE))) { FileWriteHeader(); FileClose(); } KeReleaseMutex(&m_FileSync, FALSE); } } //frees the work items for (int i = 0; i < MAX_WORKER_ITEM_COUNT; i++) { if (m_pWorkItems[i].WorkItem!=NULL) { IoFreeWorkItem(m_pWorkItems[i].WorkItem); m_pWorkItems[i].WorkItem = NULL; } } if (m_waveFormat) { ExFreePoolWithTag(m_waveFormat, MSVAD_POOLTAG); } if (m_fFrameUsed) { ExFreePoolWithTag(m_fFrameUsed, MSVAD_POOLTAG); // NOTE : Do not release m_pFilePtr. } if (m_FileName.Buffer) { ExFreePoolWithTag(m_FileName.Buffer, MSVAD_POOLTAG); } if (m_pDataBuffer) { ExFreePoolWithTag(m_pDataBuffer, MSVAD_POOLTAG); } } // CSaveData
//============================================================================= CSaveData::~CSaveData() { PAGED_CODE(); DPF_ENTER(("[CSaveData::~CSaveData]")); // Update the wave header in data file with real file size. // if(m_pFilePtr) { m_FileHeader.dwFileSize = (DWORD) m_pFilePtr->QuadPart - 2 * sizeof(DWORD); m_DataHeader.dwDataLength = (DWORD) m_pFilePtr->QuadPart - sizeof(m_FileHeader) - m_FileHeader.dwFormatLength - sizeof(m_DataHeader); if (STATUS_SUCCESS == KeWaitForSingleObject ( &m_FileSync, Executive, KernelMode, FALSE, NULL )) { if (NT_SUCCESS(FileOpen(FALSE))) { FileWriteHeader(); FileClose(); } KeReleaseMutex(&m_FileSync, FALSE); } } if (m_waveFormat) { ExFreePoolWithTag(m_waveFormat, SAVEDATA_POOLTAG1); m_waveFormat = NULL; } if (m_fFrameUsed) { ExFreePoolWithTag(m_fFrameUsed, SAVEDATA_POOLTAG2); m_fFrameUsed = NULL; // NOTE : Do not release m_pFilePtr. } if (m_FileName.Buffer) { ExFreePoolWithTag(m_FileName.Buffer, SAVEDATA_POOLTAG3); m_FileName.Buffer = NULL; } if (m_pDataBuffer) { ExFreePoolWithTag(m_pDataBuffer, SAVEDATA_POOLTAG4); m_pDataBuffer = NULL; } } // CSaveData