LARGE_INTEGER CurrentTime;
LARGE_INTEGER LocalTime;
TIME_FIELDS TimeFiled;
//得到格林威治時間
KeQuerySystemTime(&CurrentTime);
//轉換成本地時間
ExSystemTimeToLocalTime(&CurrentTime, &LocalTime);
//把時間轉換為容易理解的型式
RtlTimeToTimeFields(&LocalTime, &TimeFiled);
KdPrint(("[TimeTest] NowTime : %4d-%2d-%2d %2d:%2d:%2d",
TimeFiled.Year, TimeFiled.Month, TimeFiled.Day,
TimeFiled.Hour, TimeFiled.Minute, TimeFiled.Second));
2013年12月18日 星期三
2013年12月3日 星期二
AMD自組桌電12k有找
最新組的桌電...12/1在原價屋買的
主機板:ASUS-A88XM-A.......................................................................................$2390
CPU:AMD-6600K 3.9G+HD8570D(Turbo 4.2G)/100W/32nm....................................$3269
CPU散熱器:True Spirit 90M(Rev.A)導管鍍鎳.鰭片陽極黑化.全系列(高度12.6cm)..$690
記憶體:JETRAM 4GB DDR3-1600 *2......................................................................$950*2
硬碟:WD-1TB 64M/7200轉/10EZEX/二年保.............................................................$1940
機殼:俠客EVO-果綠/顯卡長35cm.風扇高14.5cm/U3內置(轉U2).SSD*2.透側綠化.$850
電源供應器:CM E-Lite Power 400W/12公分/V2.3....................................................$1250
6600K的CP值我覺得相當高,GPU相當於約2k元的顯卡..算一算CPU只剩1k多
參考
http://www.cpubenchmark.net/cpu_list.php
效能感覺都到Intel Core i3-3250等級了...
因為APU好像都會有過熱的問題所以加購了一顆風扇
$1990的技嘉主機板F2A85XM-D3H缺貨...所以加點錢上A88晶片(支援FM2+).雖然以後換CPU的機會不大了,不然價格可能壓到11k以下
會選這個機殼主要是便宜~在透側板機殼中算相當便宜了,而且又支援2組SSD,前後又各有一個風扇
裝了win7 64bit作業系統,跑2k13(預設特效)fps都在60上下...非常的順阿
2013年8月30日 星期五
MFC convert CString to int, int to CString
CString str;
int a;
//CString to int
a = _wtoi(str);
//int to CString
str.Format(TEXT("%d"),a);
int a;
//CString to int
a = _wtoi(str);
//int to CString
str.Format(TEXT("%d"),a);
replaces tab with spaces in Visual Studio 2012
在VS上的功能表列上選擇
TOOLS->Options->Text Editor->All Languages->Tabs
in the Tab scheme, select Insert spaces instead Keep tabs
TOOLS->Options->Text Editor->All Languages->Tabs
in the Tab scheme, select Insert spaces instead Keep tabs
2013年7月26日 星期五
compile and port win32 apps on Windows RT (ARM architecture) in VS2012
I'd met a problem when compiling my project in visual studio 2012.
It showed the message below:
error LNK1104: cannot open file 'uafxcwd.lib'
Go updating the windows RT MFC library. Download it from:
https://drive.google.com/folderview?id=0B25hIeyRmniUZzk0c3hNZmVDSms&usp=sharing
Put the .lib files in mfc-winrt.7z to C:\Program Files\Microsoft Visual Studio 11.0\VC\atlmfc\lib\arm
and recompile it
It showed the message below:
error LNK1104: cannot open file 'uafxcwd.lib'
Go updating the windows RT MFC library. Download it from:
https://drive.google.com/folderview?id=0B25hIeyRmniUZzk0c3hNZmVDSms&usp=sharing
Put the .lib files in mfc-winrt.7z to C:\Program Files\Microsoft Visual Studio 11.0\VC\atlmfc\lib\arm
and recompile it
2013年7月18日 星期四
Component Object Model Aggregation Example
CA為outer object, CX為inner object
將CA聚合CX成為單一物件使用
或是直接使用CX物件
或是直接使用CX物件
//CA.h
#include “CX.h”
class CA:public IA{
private:
int m_ref;
CX* m_cx;
public:
static NTSTATUS CreateInstance(IUnknown** Unknown);
CA();
void *operator new(size_t s){
void *operator new(size_t s){
CA *p = reinterpret_cast<CA*>(ExAllocatePoolWithTag(NonPagedPool, s, 'cdev'));
if(p) RtlZeroMemory(p, s);
return p;
}
void operator delete(void *p){
if(p) ExFreePool(p);
p = NULL;
}
NTSTATUS QueryInterface(REFIID iid, void** ppv);
ULONG AddRef();
ULONG Release();
};
//------------------------------------------------------------------------
//CA.cpp
#include "CA.h"
NTSTATUS CA::CreateInstance(IUnknown** Unknown){
CA *p = new CA();
p->AddRef();
*Unknown = (IUnknown*)(IA*)p;
return STATUS_SUCCESS;
}
CA::CA(){
m_ref = 0;
m_cx = new CX(this);
}
NTSTATUS CA::QueryInterface(REFIID iid, void** ppv){
if ((iid==IID_IX) || (iid==IID_IY)){
m_cx->NonDelegatingQueryInterface(iid,ppv);
return STATUS_SUCCESS;
return STATUS_SUCCESS;
}else if (iid == IID_IA){
*ppv = (IA*)(this);
}else if (iid == IID_IUnknown){
*ppv = (IUnknown*)(this);
}else{
*ppv = NULL;
return STATUS_INVALID_PARAMETER;
}
((IUnknown*)*ppv)->AddRef();
return STATUS_SUCCESS;
}
ULONG CA::AddRef(){
m_ref++;
return m_ref;
}
ULONG CA::Release(){
--m_ref;
if(m_ref==0)
delete this;
return m_ref;
}//------------------------------------------------------------------------
CX是inner object,也就是被聚合的物件,因此需要實作兩組IUnknown interface:
1組是被聚合時使用的IUnknown
另1組則是未被聚合使用的INonDelegatingUnknown
//CX.h
class CX : public IX, public IY, public IZ, public INonDelegatingUnknown{
private:
PUNKNOWN m_pUnknownOuter; int m_ref;
public:
static NTSTATUS CreateInstance(IUnknown** Unknown);
CX(IUnknown* pUnknownOuter);
void *operator new(size_t s){
CA *p = reinterpret_cast<CA*>(ExAllocatePoolWithTag(NonPagedPool, s, 'cdev'));
if(p) RtlZeroMemory(p, s);
return p;
}
void operator delete(void *p){
if(p) ExFreePool(p);
p = NULL;
}
NTSTATUS QueryInterface(REFIID iid, void** ppv); ULONG AddRef(); ULONG Release(); NTSTATUS NonDelegatingQueryInterface(REFIID iid, void** ppv);
ULONG NonDelegatingAddRef(); ULONG NonDelegatingRelease();
}
//------------------------------------------------------------------------
//CX.cpp
#include "CX.h"
NTSTATUS CX::CreateInstance(IUnknown** Unknown, IUnknown* pUnknownOuter){
CX *p = new CX(pUnknownOuter);
p->AddRef();
*Unknown = (IUnknown*)(IX*)p;
return STATUS_SUCCESS;
return STATUS_SUCCESS;
}
CX::CX(IUnknown* pUnknownOuter){
m_ref = 0;
if(pUnknownOuter)
m_pUnknownOuter = pUnknownOuter;
else
m_pUnknownOuter = reinterpret_cast<IUnknown*>(static_cast<INonDelegatingUnknown*>(this));
}
//------------------------------------------- // IUnknown //-------------------------------------------
NTSTATUS CX::QueryInterface(REFIID iid, void** ppv){ m_pUnknownOuter ->QueryInterface(iid,ppv); return STATUS_SUCCESS; } ULONG CX::AddRef(){ return m_pUnknownOuter ->AddRef(); } ULONG CX::Release(){ return m_pUnknownOuter ->Release(); }
//------------------------------------------- // INonDelegatingUnknown //------------------------------------------- // ULONG CX::NonDelegatingAddRef(){ m_ref++; return m_ref; } ULONG CX::NonDelegatingRelease(){ m_ref--; if(m_ref==0) delete this; return m_ref; } NTSTATUS CX::NonDelegatingQueryInterface(REFIID iid, void** ppv){ if (iid==IID_IUnknown){ *ppv = (IUnknown*)this; } else if (iid==IX){ *ppv = (IUnknown*)(IX*)this; } else if (iid==IY){ *ppv = (IUnknown*)(IY*)this; }
else if (iid==IZ){ *ppv = (IUnknown*)(IZ*)this; } else{ *ppv= NULL; return STATUS_INVALID_PARAMETER; } ((IUnknown*)*ppv)->AddRef(); return STATUS_SUCCESS; }
//------------------------------------------------------------------------
當需要使用CA聚合CX成為單一物件使用時:
IUnknown* caInf;
IUnknown* ixInf;
IUnknown* iaInf;
IUnknown* izInf;
CA::CreateInstance(&caInf);
caInf->QueryInterface(IID_IX, (void**)&ixInf);//using IX interface(inner object)
ixInf->QueryInterface(IID_IA, (void**)&iaInf);//using IA interface(outer object)
直接使用CX物件:
IUnknown* cxInf;
IUnknown* ixInf;
CX::CreateInstance(&cxInf, NULL);
cxInf->QueryInterface(IID_IX, (void**)&ixInf);//using IX interface
2013年6月1日 星期六
軟韌體工程師面試心得
小弟我四大碩畢,主要都是找軟韌體方面的工作
po一下自己的面試經驗給大家參考:
1.聯詠 影像演算法開發工程師(AV)
一剛開始做測驗,英文+人事資料表填寫共約1個小時
英聽的部份我覺得非常的難,二個人dialog然後有2~4題問他們對話的內容,
不然就是唸一段文章,然後問文章的內容...
通常唸到一半我就花掉了..建議還是先把題目稍微掃過一篇
再來聽應該會比較知道在說什麼
接著是專業科目考題30分鐘,主要是以C語言為主
給你一段程式碼,問你執行之後結果是什麼(看printf印什麼)
對指標、call by value、call by reference要了解,bit operation運算,還有一些我看不懂的題目..@@
考完之後有二個面試官一起面試,先叫我自我介紹
然後說他們部門在做些什麼,需要什麼樣的人
有問覺得自己的優點是什麼、覺得自己有沒有抗壓力等等...
我有稍微想了一下,舉當兵的例子給他們聽
主管人蠻好的,面試起來氣氛還ok
但是感覺他們想找比較有經驗的人...
結果:感謝卡(等了二個多禮拜)
2.系微 Window/Linux Utility 軟體工程師
一剛開始先測驗,C語言+英文+邏輯測驗共二個小時...寫到頭好痛="=
C語言也是考指標、bit operation、記憶體位址等等...
然後有考driver、linux開機流程、shell script這部份我就完全不會了
英文+邏測寫起來就順多了,沒有英聽
面試部分,也是問我做了些什麼然後介紹一下這個職缺要做些什麼
有三個月的訓練(試用期?),三個月後做一次評測..沒過可能就掰掰了
有討論C錯誤的地方,問我為什麼這樣寫
最後也有提到薪資的部分,40k有點困難
結果:感謝卡(等了二個多禮拜)
3.瑞昱 音訊軟體開發工程師
先考性向測驗,沒有英文也沒有專業科目測驗讓我有點意外
面試的部分果然跟傳聞一樣要用到白板
主管要我把自己做的東西畫出來
雖然當完一年的兵,不過論文還算是蠻熟的
他問的東西也都盡量作解釋,雖然他不一定聽的懂我在講啥
我覺得有解釋總比愣在那邊好
最後問了一題白板題,我卡了頗久...好險最後有想出來
我有特別為瑞昱做了一份履歷(主要是封面),我想這個應該也有加分吧
結果:口頭offer(等了二天)
4.HTC 募集招募嵌入式系統菁英(主要是做影像方面軟韌體開發)
一剛開始先作英文測驗,英聽部分跟聯詠比起來相對簡單
也有雙人dialog,不過一次只問一個問題
接著是C語言+porting考卷+邏輯測驗
C的部分要考了很多++i和i++這類型的題目
比如x=1 a=5;那
1)x=++a+2;
x,a值各為多少?
porting對我來說非常難,考GPIO、multi thread、IT名詞解釋等
寫得非常零散
邏輯測驗是雙面的,背面的有點難,給你一串數字,要找出這串數字的規則
看其中哪一個數字是多出來的,比如1,3,4,5,7,9那4就是多出來的
接著主管面試,因為我碩班有做過android相關的題目
問了一下後主管就說他那邊ok要直接幫我安排2次面試...
結果:因為有工作就推掉2次面試了
5.新唐科技 電腦產品軟韌體設計工程師
直接面試沒有其他測驗
專業能力幾乎也都是面試的時後直接用問的:比如protect保留字的功能?
有聽過volatile嗎?const的用法等等
這些都是我不太會的=”=
也有問到人生目前遇到最大的挫折是什麼?
也問了許多假設性的問題:
1)假如剩下1個星期要交貨,不過你估計1個月才能完成,那要怎麼辦?
2)假如你老闆建議你使用某個方法完成任務,不過你覺得不可行(之前有類似經驗),你覺得自己的方法比較ok,那你會怎麼做?
(你只能使用其中一個方法,因為時間有限)
3)你覺得什麼樣的事情會讓你想離開一個工作(自己的底限)?
這完全就是臨場發揮了,面試官說他也沒有標準答案@@
講了2個多小時巴....出來之後感覺超累的
結果:無聲卡
訂閱:
文章 (Atom)