關於部落格
職場生活筆記....熱情依然在
  • 51771

    累積人氣

  • 7

    今日人氣

    1

    追蹤人氣

WinCE Driver DLL 的 dpCurSettings

DEBUGMSG這個Macro宣告在usbfn.h這個header file中,(PS:DEBUGZONE的宣告在DbgApi.h)除此之外,與DEBUGMSG有關的設定有三個: (1)定義各個 Debug Zone 在每個module中,一般來說可有16個DebugZone,在定義Debug Zone的時候,同時給予其對應的編號例如: #ifdef DEBUG #define ZONE_ERROR DEBUGZONE(0) #define ZONE_WARNING DEBUGZONE(1) // ... etc.#endif (2)宣告一個名為 dbCurSettings 的 DBGPARAM Structure 例如: DBGPARAM dpCurSettings = {TEXT("PCIBUS"), { TEXT("Errors"), TEXT("Warnings"), TEXT("Functions"), TEXT("Initialization"), TEXT("Enumeration"), TEXT("Load Order"), TEXT("Resource"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined"), TEXT("Undefined") }, DBG_ERROR DBG_WARNING }; 這個例子裡,一個名為PCIBUS的module(driver)具有7個DebugZone, 分別為"Errors", "Warnings", "Functions", "Initialization","Enumeration", "Load Order", "Resource", 最後的DBG_ERROR DBG_WARNING代表 Error 與 Waring兩個Zone預設為Active(其他送到Inactiver 的Debug Zone 的Message將會被丟棄) 關於設定active by default的Debug Zone還有另一種方式:透過設定一個 DWORD的mask - ulZoneMask, 例如上面的例子中要透過設定ulZoneMask 指定Default Zone,則可透過下面的設定:dpCurSettings.ulZoneMask = 0x3; 在第一點的說明中,每個module可有16個Debug Zone,並透過16個bit作設定,其中每個bit代表一個array index,表示Debug zone的output status(on/off),例如“Errors”是第一個debug zone,所以DBG_ERROR為1(將第一個bit設為 1),同理DBG_WARNING為2,因此ulZoneMask為3 (PS:所以DBG_ERROR DBG_WARNING也可用0x3代替) (3)呼叫DEBUGREGISTER(dllInstance) 例如: DllEntry (HANDLE hinstDLL, DWORD Op, LPVOID lpvReserved) { switch (Op) { //...... case DLL_PROCESS_ATTACH :DEBUGREGISTER((HINSTANCE)hinstDLL); break; //...... } } 在使用DEBUGMSG上,原型的宣告中 #define FUNCTION_ENTER_MSG() DEBUGMSG(ZONE_FUNCTION, (_T("%s ++rn"), pszFname)) 因此DEBUGMSG可具有三個參數(也可以是兩個),例如: DEBUGMSG(ZONE_Enumeration, (L"PCIBUS!PCIRegClean %d devices to checkrn", NumDevKeys)); 或是 DEBUGMSG(ZONE_Initialization, (L“I really like blogs.rn”));
相簿設定
標籤設定
相簿狀態