差分表示


* なにもの?
WDK,Windows Driver Kitはドライバ開発のための環境として無償提供されている。
同梱されてる.libには advapi32やら user32もあるので、普通の Win32 Appをビルドすることも可能。
更に1セットでx-compile環境にもなってるのがイイ。2k8x64で使ったものを2k3IPFでも欲しくなったりするので、Visual Stuido(=VC++ or VC#)とWDKを場合に応じて使いわけてます。

* inc めも
- 7600.16385.0には psapi.libはあっても、inc配下に psapi.hが無いので、この辺(例えばGetModuleBaseName)を使う分のPrototypeは自前で用意するか、[[Microsoft Windows SDK>http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx]]を入れておいて、これに含まれる psapi.hを見に行かせればよい。

* link.exeめも
- kernel32は勝手に見にいくようだが、advapi32はリンク時に明示しないとだめぽ。
- kernel32は勝手に見にいくようだが、それいがい(user32.dllとかadvapi32)はリンク時に明示しないとだめぽ。

* てんぷれ
今はこうなってます。随時更新。
** Makefile
---(
WDKINC=/I $(BASEDIR)\inc\api /I $(BASEDIR)\inc\crt /I $(BASEDIR)\inc\api\crt\stl60
MSSDKINC=/I "C:\Program Files\Microsoft SDKs\Windows\v5.0\Include"
INCLUDE=$(WDKINC) $(MSSDKINC)
LIBS=user32.lib advapi32.lib psapi.lib
#LIB=/LIBPATH:$(BASEDIR)\lib\wlh\ia64 /LIBPATH:$(BASEDIR)\lib\Crt\ia64 $(LIBS)
LIB=/LIBPATH:$(BASEDIR)\lib\wnet\i386 /LIBPATH:$(BASEDIR)\lib\Crt\i386 $(LIBS)
#LIB=/LIBPATH:$(BASEDIR)\lib\wnet\amd64 /LIBPATH:$(BASEDIR)\lib\Crt\amd64 $(LIBS)
CPPFLAGS=/nologo /W4 /D_WIN32_WINNT=0x600 /Zi /c
LINKFLAGS=/nologo /DEBUG
NAME=skel
SRC=$(NAME).cpp
OBJ=$(NAME).obj
EXE=$(NAME).exe
all: $(SRC)
	cl $(CPPFLAGS) /EHsc $(INCLUDE) $(SRC)
	link $(LINKFLAGS) /out:$(EXE) $(OBJ) $(LIB)
clean:
	del /f $(EXE) $(OBJ) *.pdb *.ilk
---)
** skel
100行以内で済むから1ファイルで終る場合の、かなりいい加減なテストコード用skelton
---(
#include    <Windows.h>
#include    <tchar.h>

#define     dEBUG(x)  x

void MitoGetLastError(DWORD errId, std::string who) {
    LPVOID lpMsgBuf;
    DWORD n = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_MAX_WIDTH_MASK | FORMAT_MESSAGE_FROM_SYSTEM, 
            NULL, errId,
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
            //MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
            (LPTSTR)&lpMsgBuf, 0, NULL);
    if ( n > 0 ) {
        printf("%s() failed : %s(%u)", 
            who.c_str(), lpMsgBuf, errId);
    } else 
        printf("FormatMessage() : %u\n", GetLastError());
}

int _tmain(int argc, _TCHAR* argv[]) {

    return 0;
}
---)

* 参考文献
-[[WDK Home>http://www.microsoft.com/japan/whdc/devtools/WDK/default.mspx]]
-- 配布場所。自分もVisual xxxより先にこっちに会ってたら、Windows行ってたかも。いや、そもそもGCCさわった最初の頃、Visual xxx無かったかw
-[[Japan WDK Support Blog>http://blogs.msdn.com/jpwdkblog/default.aspx]]
-- MSKKのWDKグループのブログ。内容は更新される度に見る価値ある気がするぐらい、丁寧に書かれてます。前の会社でもこんなのあった気がする。


Last-modified: 2009-12-23 02:39:54