Time of Update: 2018-12-04
一、錯誤碼不需要GetLastError()之後格式化成數字寫Log,然後用Error Lookup查詢;或者直接調用API查詢對應語言版本的錯誤資訊。在監看式視窗中寫下$err,hr即可看到詳細的錯誤描述資訊,跟Error Lookup一樣的效果。二、查看訊息Message類型Windows的訊息是UINT格式,在調試的時候如果直接輸入變數,看到的也就是一個數值。如果在變數名後面加上一個英文逗號和小寫wm,就可以顯示成宏的形式了,比如“uMsg, wm”,效果如:三、條件斷點 &
Time of Update: 2018-12-04
dde資料通迅,應用分為客戶及伺服器。dde用戶端處理過程如下1、初始化DdeInitialize,主要包括執行個體控制代碼,回呼函數,dde類型等參數。回呼函數將會處理一些訊息如XTYP_ADVDATA等。2、串連伺服器DdeConnect參數包括初始化時的控制代碼,伺服器名,主題名等。3、發送資料請求命令。4、不斷從回義憤填膺調函數取得訊息,如收到資料等,並進行處理。5、處理完成後,中斷連線。dde伺服器處理過程如下:
Time of Update: 2018-12-04
呵呵,文章標題寫了大約半個月,到現在才寫內容,因工作時間比較忙,敬請原諒。對於http協議作如下說明http是一個面向事務的客戶服務器協議。http協議本身是無串連。每次請求完成後,就會片中斷連線,下次請求時,再重建立立串連。對於斷點續傳的實現是在發送請求時,設計要下載的檔案的起始位置為上次下載的到的位置即可。實現比較簡單。對於類似flashget的多線程多串連斷點續傳,原理是一樣,多啟動幾個線程,然後每個串連都發送下載同一個檔案請求,不同的是每個請求要求下載的檔案的區間不同。
Time of Update: 2018-12-04
一、流媒體 流媒體指的是在網路中使用流技術傳輸的連續時基媒體,其特點是在播放前不需要下載整個檔案,而是採用邊下載邊播放的方式,它是視頻會議、IP電話等應用場合的技術基礎。 二、流媒體協議2.1即時傳輸協議(Real-time Transport
Time of Update: 2018-12-04
有時希望在某個時候丟掉一部分包,如(音頻、視頻),我寫了一個filter,專門是用來丟包的,聲明見下面的檔案。 但是在使用過程中,視頻還在關閉流再開啟流時,還是會有一個關閉前的畫面,然後閃到開啟後的畫面,不知大家有沒有更好的解決方案 filter我會傳在我的資源裡面。#pragma once/*#undef INITGUID*///stdarg.h, stdlib.h, wtypes.h.#ifdef __cplusplusextern "C" {#endif//
Time of Update: 2018-12-04
一、序言 在絕大多數的Windows應用程式中,其表單都是使用的正規正矩的矩形表單,例如我們常用的,“記事本”,“掃雷”,等等。矩形表單,具有編程實現簡單,風格簡潔的優點,所以在普通文檔應用程式和簡單小遊戲中使用足矣。但在某些娛樂遊戲程式中使用就略顯呆板些了,這時若用不規則表單替代原先的矩形表單,將會使這類程式更添情趣。典型的例子有windows 自代的Media Player,新版本的Media
Time of Update: 2018-12-04
CWnd::OnNcHitTest這個函數如果 沒有用過,對於展開控制項或表單,要很費力了....afx_msg UINT OnNcHitTest( CPoint point );傳回值:下面列出的滑鼠擊中測試枚舉值之一。· HTBORDER 在不具有可變大小邊框的視窗的邊框上。 · HTBOTTOM 在視窗的水平邊框的底部。 · HTBOTTOMLEFT 在視窗邊框的左下角。 · HTBOTTOMRIGHT 在視窗邊框的右下角。 · HTCAPTION 在標題條中。 · HTCLIENT
Time of Update: 2018-12-04
1. 環境切換:大約每隔20ms(具體時間可以使用GetSystemTimeAdjustment函數的第二個參數來查看),windows都會查看所有當前存在的線程核心對象.在這些對象中,只有一些被認為是可調度的.windows在可調度的線程核心對象中選擇一個,並將上次儲存線上程上下文中的值載入CPU寄存器.需要注意的是:我們無法保證線程總是在運行,線程會獲得整個處理器,系統將不允許運行其他線程等.2. 線上程核心對象中存在一個線程掛起計數,調用CreateThread或GetProcess時,系
Time of Update: 2018-12-04
7 互斥量核心對象用來確保一個線程獨佔對一個資源的訪問.■ 組成:①使用計數②線程ID:標示當前佔用這個互斥量的是系統中那個線程③遞迴計數: 表示這個線程佔用該互斥量的次數.■ 與關鍵程式碼片段的區別:● 互斥量是核心模式下的,而關鍵程式碼片段是使用者模式下的.也意味著關鍵程式碼片段比 互斥量要快.● 不同進程中的線程可以訪問同一個互斥量.■ 互斥量的規則:● 如果線程ID為0(即無效線程ID),那麼該互斥量不為任何線程鎖佔有,它處於觸
Time of Update: 2018-12-04
處理序間通訊最簡單的方式就是發送WM_COPYDATA訊息。 發送WM_COPYDATA訊息:SendMessage(接收視窗控制代碼,WM_COPYDATA, (WPARAM)發送視窗控制代碼, (LPARAM)&CopyData); 其中的CopyData為COPYDATASTRUCT結構類型,該結構定義如下:typedef struct tagCOPYDATASTRUCT
Time of Update: 2018-12-04
風華遠程測傳系統,是一個集資料擷取傳輸一體的系統。滿足使用者將測控資料遠傳的需求,可以協助使用者輕鬆的將測控Data
Time of Update: 2018-12-04
一般情況下,我們需要查看一個DLL或EXE中的包含的函數或是依賴的函數之類的資訊,可以使用VS內建的工具dumpbin; 可以直接在命令列下輸入dumpbin就可以查看他的使用說明,如果未顯示,可以先運行VS安裝目錄下的vcvarsall.bat來設定一下環境變數就可以了在window下查看動態庫的匯出函數可以用vs內建的Dependenc工具;查看靜態庫的資訊要用命令列來實現:dumpbin /LINKERMEMBER Test.lib >
Time of Update: 2018-12-04
驅動程式由於有較強的模式約束,加上不易調試,往往讓學習者望而卻步,在這裡我將學習驅動的一點心得與大家共用。 為了探尋過濾驅動和驅動之間的關係,我寫了一個小小的樣本驅動,《Windows 2000/XP WDM裝置驅動程式開發》一書所配套的原始碼中的CharSample_DDK,及DDK所帶的KbFilter驅動改造成一個過濾驅動。驅動原始碼放到了我的資源中,有需要的使用者可以去下載。
Time of Update: 2018-12-04
一、層次模型 對於典型的directshow多媒體應用程式模型層次如。作為開發人員,主要工作,就是將這些filter串連起來,然後提供UI,設定這些filter屬性,從而將介面開發給使用者實現不同的功能。對於中間不同的變換filter可以實現不同的功能,如不同播放效果,抓圖,錄影等。二、資料模型 directshow的程式行為是將來源資料,送到目的資料,在這之間進行資料變換,編碼、解碼等工作,那麼中間是由於很的處理組成,每個filter會將上個filter的資料,緩衝,然後進行處理,再資料打包
Time of Update: 2018-12-04
5. 用來接收I/O完成通知的方法:技術摘要觸發裝置核心對象當向一個裝置同時發出多個I/O請求的時候,這種辦法沒什麼用.它允許一個線程發出I/O請求,另一個線程對結果進行處理觸發事件核心對象這種方法允許我們向一個裝置同時發出多個I/O請求,它允許一個線程發出I/O請求,另一個線程對結果進行處理使用可提醒的I/O這種方法允許我們向一個裝置同時發出多個I/O請求,發出I/O請求的線程必須對結果進行處理使用I/O完成連接埠這種方法允許我們向一個裝置同時發出多個I/O請求.它允許一個線程發出I/O請求
Time of Update: 2018-12-04
一、開啟CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、關閉CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、關閉電腦OSVERSIONINFO OsVersionInfo; //包含作業系統版本資訊的資料結構OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVe
Time of Update: 2018-12-04
1. 擷取系統相關資訊:VOID GetSystemInfo( LPSTYSTEM_INFO psi);其中SYSTEM_INFO結構體定義如下:typedef struct _SYSTEM_INFO { union { DWORD dwOemId; //struct { WORD wProcessorArchitecture; //表示處理器的體繫結構WORD wReserved;
Time of Update: 2018-12-04
1. Windows提供了一個(與I/O完成連接埠相配套的)線程池機制來簡化線程的建立,銷毀以及日常管理.這個線程池函數,允許我們做以下事情:● 以非同步方式來調用一個函數● 每隔一段時間調用一個函數● 當核心對象觸發的時候調用一個函數● 當非同步I/O請求完成的時候調用一個函數2. 以非同步方式來調用函數VOID NTAPI SimpleCallback(PTP_CALLBACK_INSTANCE pInstance,PVOID pvContext);BOOL TrySubmitThread
Time of Update: 2018-12-04
1. 線程時在核心中實現的,纖程是在使用者模式下實現(即windows不負責對前程進行處理).將線程->纖程:PVOID ConvertThreadToFiber(PVOID pvParam);函數功能:這個函數會為纖程的執行內容分配大約200位元組的記憶體.內容相關的組成如下:● 一個使用者自訂值(他被初始化為傳給ConvertThreadToFiber的pvParam參數的 值● 結構化異常處理鏈的頭● 纖程棧的頂部和底部的記憶體位址(相當於線程棧).● 某些CPU寄存器.其中包括棧
Time of Update: 2018-12-04
VC中控制代碼、指標、ID之間的轉換win32直接操作的是控制代碼HANDLE,每個控制代碼就對應windows視窗,而vc對HANDLE進行類封裝,間接操作的都是HANDLE,現在控制代碼只是類的一個成員變數。從控制代碼到指標 CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //and attached. pWnd->Attach(hWnd); //Attaches a Windows