版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、消除筆記本的高頻電流噪音季光dummyshin.dum摘要:有些筆記本在使用中發(fā)出一種高頻電流噪音。這種噪音隨著硬盤的讀寫,用戶對窗口界面中的滾動條的拉動發(fā)生變化,并在操作系統(tǒng)啟動之后幾乎始終存在,只有當用戶播放音頻文件時這種噪音會消失。本文利用這一特點針對Windows操作系統(tǒng)給出了消除噪音解決方案。本文設計了一個占用資源較少的Windows系統(tǒng)服務,在里面模擬音頻文件的播放,從而將噪音消除。關鍵字:筆記本高頻電流噪音Windows系統(tǒng)服務問題分析有些筆記本由于設計方面的問題,如果使用了USB設備或藍牙模塊,在運行中會發(fā)出一種高頻電流噪音。例子包括Dell D610,Think R60e(在
2、使用電池的模式下)。這種噪音的來源并未得到官方的解釋。但是有些廠商已經發(fā)布了修復這種噪音問題的BIOS補丁1。但是某些廠商并未正面解決這個問題2。有一種比較方便易行的方法可以把這種噪音消除:播放一個音頻文件,然后按下暫停按鈕。某些用戶反映在運行一些游戲時也可以將噪音消除,其實也是利用了游戲背景音樂的作用。但是這種方法的缺點是需要手工操作,并且音樂播放器往往占用大量的內存。我們應該考慮用一種節(jié)省的方式實現(xiàn)它。設計與實現(xiàn)Windows提供了一組波形音頻的編程接口。我們可以利用它們模擬播放器的暫停狀態(tài):/代碼:模擬播放器的暫停狀態(tài)HWAVEOUThWaveOut;/波形音頻輸出句柄BYTEmuteM
3、UTE_LENGTH;/靜音符號串WAVEFORMATEXwaveformat=WAVE_FORMAT_PCM,1,SAMPLE_RATE,SAMPLE_RATE,1,8,0;/設定波形音頻的格式WAVEHDRwaveHdr=0,MUTE_LENGTH,0,0,0,1,NULL,0;/音頻數(shù)據(jù)信息頭FillMemory(mute,MUTE_LENGTH,(BYTE)0x80);/用靜音符號填充waveHdr.lpData=mute;/初始化信息頭指針/打開音頻設備waveOutOpen(&hWaveOut,WAVE_MAPPER,&waveformat,0,0,CALLBACK_FUNCTIO
4、N);/準備信息頭waveOutPrepareHeader(hWaveOut,&waveHdr,sizeof(WAVEHDR);/播放靜音符號waveOutWrite(hWaveOut,&waveHdr,sizeof(WAVEHDR);/暫停waveOutPause(hWaveOut);利用這段代碼寫一個win32程序,保證程序進程不會退出(可利用一個含有Sleep調用的死循環(huán)或彈出一個模態(tài)對話框實現(xiàn)),即可實現(xiàn)消除噪音的作用。然而這樣做仍然不夠完善。我們希望系統(tǒng)在啟動的時候,無論有用戶登錄與否,都能夠自動地調用它。為了解決這一問題,我們應當把它改造為Windows的系統(tǒng)服務。Windows系
5、統(tǒng)服務的編寫需要服從一定的格式規(guī)范,請參閱相關文獻3,本文不予詳述。需要注意的是,如果編寫為獨立的Windows服務,仍然需要1,900K左右的內存;如果編寫為寄存在svchost中的服務4,則可以把內存占用量大大降低,達到300400K。本文采用了后者。完整代碼如下(我們把服務名取作DenoiseSvc31):/*消電流噪聲svchost版3.1*/#include#include#defineSLEEP_TIME10000#defineSERVICE_NAMEDenoiseSvc31 /服務名#defineMUTE_LENGTH128#defineSAMPLE_RATE11025SERVI
6、CE_STATUSServiceStatus;SERVICE_STATUS_HANDLEhStatus;voidInitService(void)HWAVEOUThWaveOut;BYTEmuteMUTE_LENGTH;WAVEFORMATEXwaveformat=WAVE_FORMAT_PCM,1,SAMPLE_RATE,SAMPLE_RATE,1,8,0;WAVEHDRwaveHdr=0,MUTE_LENGTH,0,0,0,1,NULL,0;FillMemory(mute,MUTE_LENGTH,(BYTE)0x80);waveHdr.lpData=mute;waveOutOpen(&hW
7、aveOut,WAVE_MAPPER,&waveformat,0,0,CALLBACK_FUNCTION);waveOutPrepareHeader(hWaveOut,&waveHdr,sizeof(WAVEHDR);waveOutWrite(hWaveOut,&waveHdr,sizeof(WAVEHDR);waveOutPause(hWaveOut);voidControlHandler(DWORDrequest)switch(request)caseSERVICE_CONTROL_STOP:caseSERVICE_CONTROL_SHUTDOWN:ServiceStatus.dwWin3
8、2ExitCode=0;ServiceStatus.dwCurrentState=SERVICE_STOPPED;SetServiceStatus(hStatus,&ServiceStatus);return;default:break;/ReportcurrentstatusSetServiceStatus(hStatus,&ServiceStatus);return;#pragmaargsused_declspec(dllexport)VOIDWINAPIServiceMain(DWORDdwArgc,LPTSTR*lpszArgv)ServiceStatus.dwServiceType=
9、SERVICE_WIN32_SHARE_PROCESS;ServiceStatus.dwCurrentState=SERVICE_START_PENDING;ServiceStatus.dwControlsAccepted=SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_SHUTDOWN;ServiceStatus.dwWin32ExitCode=0;ServiceStatus.dwServiceSpecificExitCode=0;ServiceStatus.dwCheckPoint=0;ServiceStatus.dwWaitHint=0;hStatus=Regist
10、erServiceCtrlHandler(SERVICE_NAME,(LPHANDLER_FUNCTION)ControlHandler);if(hStatus=(SERVICE_STATUS_HANDLE)0)/RegisteringControlHandlerfailedreturn;/InitializeServiceInitService();/WereporttherunningstatustoSCM.ServiceStatus.dwCurrentState=SERVICE_RUNNING;SetServiceStatus(hStatus,&ServiceStatus);/Thewo
11、rkerloopofaservicewhile(ServiceStatus.dwCurrentState=SERVICE_RUNNING)Sleep(SLEEP_TIME);return;Svchost服務要求可執(zhí)行文件必須為動態(tài)鏈接庫。我們把它編譯為denoise.dll并拷貝到%windir%system32目錄下。剩下的任務就是把它安裝到系統(tǒng)上。為系統(tǒng)添加一個服務需要修改注冊表。對于Svchost服務,需要修改的地方包括:l HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvcHost:把服務添加到某個Svchost
12、組內。l HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices:添加服務的主鍵及相關鍵值。代碼如下:Windows Registry Editor Version 5.00HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDenoiseSvc31Type=dword:00000020Start=dword:00000002ErrorControl=dword:00000001ImagePath=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00
13、,6f,00,6f,00, 74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73, 00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00, 6b,00,20,00,48,00,54,00,54,00,50,00,46,00,69,00,6c,00,74,00,65,00,72,00,00, 00DisplayName=DenoiseSvc31DependOnService=hex(7):4c,00,61,
14、00,6e,00,6d,00,61,00,6e,00,57,00,6f,00,72,00, 6b,00,73,00,74,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00DependOnGroup=hex(7):00,00ObjectName=NT AUTHORITYLocalServiceDescription=消除筆記本的高頻電流噪音HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDenoiseSvc31Enum0=RootLEGACY_ALERTER0000Count=dword:00000001N
15、extInstance=dword:00000001HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDenoiseSvc31ParametersAlertNames=hex(7):00,00ServiceDll=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f, 00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00, 64,00,65,00,6e,00,6f,00,69,0
16、0,73,00,65,00,2e,00,64,00,6c,00,6c,00,00,00HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDenoiseSvc31SecuritySecurity=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02, 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00, 00,00,02,00,60,00,04,00,00,00,00,00
17、,14,00,fd,01,02,00,01,01,00,00,00,00,00, 05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00, 20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00, 00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01, 00,00,00,00,00,05,12,00,00,00,0
18、1,01,00,00,00,00,00,05,12,00,00,00HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvcHostHTTPFilter=hex(7):48,00,54,00,54,00,50,00,46,00,69,00,6c,00,74,00,65,00,72, 00,00,00,44,00,65,00,6e,00,6f,00,69,00,73,00,65,00,53,00,76,00,63,00,33,00, 31,00,00,00,00,00把它保存在denoise.reg中雙擊運行,然后重啟機器,噪音問題就解決了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度大型設備搬運服務合同2篇
- 二零二五年度房產買賣合同18(附帶供暖設施)3篇
- 二零二五年度帶專屬管家服務二手房交易合同協(xié)議2篇
- 逆用不等式組的解集課件
- 二零二五年度建筑智能化安裝工程安全合同規(guī)范2篇
- 2025版高考數(shù)學一輪復習核心考點精準研析8.2等差數(shù)列文含解析北師大版
- 感恩筑夢青春揚帆啟航
- 二零二五年度房屋建設質量保修與建筑垃圾減量化處理合同3篇
- 《戶外結繩技巧》課件
- 2025年度酒店酒水智能物流配送與倉儲管理合同3篇
- 煤層應力狀態(tài)及煤與瓦斯突出防治研究
- 小學五年級上冊數(shù)學基礎知識練習題帶答案
- 診所聘用醫(yī)生合作協(xié)議書
- 抖音認證承諾函
- 藥物分離純化-藥物分離純化技術的作用
- 《精益生產培訓》課件
- GB/T 3518-2023鱗片石墨
- 22G101三維立體彩色圖集
- MQL4命令中文詳解手冊
- 水平井施工方案及措施
- 資產評估常用數(shù)據(jù)與參數(shù)手冊
評論
0/150
提交評論