Windows

Windows+Node.js+Express+Redis+MongoDB

WindowsでNode.js(+Express)とRedisとMongoDBを動かしてみた。

CygwinかVMwareか

良い記事 http://d.hatena.ne.jp/takuya_1st/20111121/1321865738 http://d.hatena.ne.jp/takuya_1st/20111123/1322068116 そんな私はPutty + VMware Workstation派。 Cygwinだと困ること ビルドできないものがあるのと、web開発だと、リリース環境との違い…

Explorer++ patch for TortoiseSVN

Windows環境をx64に移行したら、TortoiseSVNのオーバーレイアイコンに対応したファイラーが見当たらず、やや不便。 幸いExplorer++というソースが公開されているものがあったので、アイコンを更新するようにしてみた。 diff -Naur org/Explorer++/ShellBrows…

WinDiffを少しだけ改良してみた

WinDiffは10年くらい使っていて慣れているのだが UTF-8の文字が化ける 行末がUTF-8文字だと改行を認識しないことがあり、行数もずれる という問題があった。WinMerge使えばよいという話ではあるのだが、 何文字目から変化しているのか、ぱっと見わかりづらい…

mingw版Groongaのビルド

Groongaをmingwでビルドしてみた。非公式ビルドが32bitだったので、64bit版にチャレンジ。※ Groongaは32bit OSをサポートしていません。 以下手順 MSys/MinGWインストール MinGWのインストーラをダウンロードhttp://sourceforge.net/projects/mingw/files/ …

キーを入れ替える7つの方法

ちょっと前になりますがWindows Internals勉強会というので発表してきました。これ → http://www.slideshare.net/firewood/lr-5346579以前「Vista/Windows 7におけるキーボードカスタマイズ問題」というのを読んで、これにフィルタドライバのネタを加えてみ…

DWARF の行情報を読む

DWARF の行情報を読むのをWindowsでやってみた。ELFをPEにしただけ。 http://github.com/firewood/test/blob/master/addr2line.cpp今のMinGW-GCCのデバッグ情報はDWARF2がデフォルトのようで*1、-gをつけると.debug_lineが付加されるようになる。*2PEだとIMA…

メンバ関数の呼び出し規約

なんとなくC++のメンバ関数の呼び出し規約を調べてみたという件。 VC++2005以降では__thiscallという名前がついていることを知った。 で、もしかして__cdeclつけたら、_beginthread()の引数にもできるのか?と思ったらできた。(VC6/2005で確認) #include <Windows.h> #i</windows.h>…

MinGW

久々にMinGWを使おうと思いVistaにMSYS-1.0.11.exeをインストールしたところ、postinstallがエラーで実行されなかった。 この場合、MSYSのシェルを起動してから、 $ cd /postinstall $ ./pi.sh で実行すればよいようだ。 (インストールの順番は、MinGW→MSYS…

バルーンを消す

ThinkPadの無線LANで、(物理)スイッチを切っているときにサスペンド・レジュームすると「ワイアレス ネットワークは利用不可能です。」といちいち教えてくれやがるのだが、タスクバーを左に置いていることもあり、画面の左側が30秒くらい占拠されてしまい…

第二回ローレイヤー勉強会

「Windowsのフィルタドライバ入門」というお題で発表してきました。 なんか反応がいまいちだった気もしますが、飲み会が盛り上がったので良かったのではないかと。 Alpha用のWindows XPがbeta版すら出ていないという渾身のギャグが滑ったのでまだまだ修行が…

keybd_event

RegisterHotKeyでホットキーを登録しているとき、ホットキーを認識したのだけど、特定のアプリケーションではそのホットキーを無効にして、本来のストロークを戻してやりたいとき。 UnregisterHotKey()→keybd_event()→RegisterHotKey()という流れで入力を戻…

シャットダウンパズル

http://d.hatena.ne.jp/egggarden/20090201/1233471243 わからんので原文のコメント欄を読んだらようやく理解できた。 DLL_PROCESS_DETACHは、ExitProcessの呼び出しにより発生する。 ExitProcessを発行すると、ExitProcess(DLL_PROCESS_DETACHの呼び出しを…

Vistaの複数選択

XP以前ではファイルダイアログで複数のファイルA B C Dを選択すると、B C D Aみたいな順番が得られるという謎仕様があって、逆から選択したりする小技を使う必要があった。 どうやらVistaだとファイルの一覧をソートしてからアプリケーションに渡すらしく、…

レジストリの制限

VistaでSetupDiGetDeviceRegistryPropertyW()が失敗するので調べてみたところ、PropertyBufferSizeに65535以上を与えるとエラーを返すことがわかった。SetupDiGetDeviceRegistryPropertyA()は変換がかかるせいか失敗しない。2000/XPにはこの謎の挙動はないし…

DevFilterEditor

デバイスマネージャ風にしてみた。 実行ファイルは これ ソースは ここ 実装がアレですが気にしないで下さい。Windows 2000/XPのフィルタドライバの追加・削除が可能です。 基本的には開発者向けで、不用意に削除するとデバイスが動作しなくなる可能性があり…

DevFilterEditor

フィルタドライバの追加・削除ツール書いてみた。 ソース → http://svn.coderepos.org/share/lang/c/DevFilterEditor

ProcessorAffinityMask

PCがたまに0.5秒くらい固まるので原因を調べていたら、DPC latency問題ってのがあるらしい。 ネットワークのDPCが大量に発行されて固まるときには、レジストリキー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters\ のProcessorAffin…

ドライバ内でのバージョン判別

VistaだとDbgPrintが出ない問題。 連射ドライバではIoIsWdmVersionAvailable(1, 0x20)でXP以降であればDbgPrintExを使用するようにしてた。 別に判別しなくても、単にMmGetSystemRoutineAddressの結果がNULLだったらDbgPrintするようにすればいいだけなんだ…

GetProcessImageFileName for Windows2000

Windows2000で、GetProcessImageFileNameWが見つからないというエラーで起動できないアプリがたまにある。ATIToolとか。 そんなときはXPのpsapi.dllをアプリのディレクトリにコピーすると動くのだが、ライセンス的には微妙。 んでこれ読んでたら LoadLibrary…

hotpatch

NyaRuRuさんのところを読んでいたら、2003server/Vistaではhotpatchが可能とのこと。(話題が二年遅れ) 要するに DLL のエクスポート関数の先頭を jmp 命令で書き換えてしまうという,古典的な方法の模様. (snipped) これを実現するには DLL のエクスポー…

無変換キーはやればできる子

FILCOの茶軸スイッチに感激してついFKBN108M/NBというやつを買ってしまったのだが、ThinkPadと左Altキーの位置が違うという問題が。 それまでは無変換キーをIME ON/OFFにして使っていたのだけど、ThinkPadのAltの位置がFILCOでは無変換になっている。 これは…

fltk

fltk 1.1.8rc2を試してみた。 別スレッドで何か処理をして、その結果をGUIのスレッドで表示するというのがよくあるが、1.xだとFl::awake()とFl::add_fd()の二通りでできる。 まずawakeでやってみた。こちらはコールバック関数を直接指定することができ、コー…

構造体が拡張されたときの動作

以下,UNICODE ビルドで試した SystemParametersInfo/SPI_GETNONCLIENTMETRICS のパラメータと,Windows XP SP2 及び Windows Vista SP1 での API 成否の関係.uiParam が無視されていて,NONCLIENTMETRICS::cbSize のみで互換性判定を行っているらしいこと…

Windows SDKを試してみた

Visual C++とクロスプラットフォーム - the technote ↑ 未だにVC6がメインの私としては気になる話題。 自分の興味があるところについてコメントしてみる。 Windowsを含むクロスプラットフォームなオープンソースソフトウェアの多くが、なぜかやたらとVisual …

連射ドライバ

なんか動いてる気がしてきたのでCodeReposに登録してみた。 http://coderepos.org/share/browser/lang/c/GPAF driver ドライバ本体。buildユーティリティーかGNU Makeでビルドできる。 IncBuild ビルド番号を+1するためのツール。DDKWizard使えば不要みたい…

PE Golf(4)

前回のPE Golfはコンソール版のHello worldで、プロゴルファーがアリアリ97bytesを提示したところで終わっていた。 のだが物好きな人は結構いるみたいで、GUI版のトラックバックが来たのでちょっと見てみた。しかし一年経つと全く覚えていない。とりあえず18…

関連付け

レジストリなんて編集しないのが素人。レジストリエディタを使うのが普通。管理者モードのPowerShellからコマンドラインで触るのが玄人。 Windowsの素人と玄人を見分ける方法 不明なexeをついダブルクリックしちゃうのはうっかりさん。ダブルクリックすると…

HIDのフィルタドライバについて

HIDのフィルタドライバの理解が足りなかったので少し調べ直してみた。 なお、ここではHIDのゲームパッドに連射機能を追加するためにupper filterとして記述したフィルタドライバをインストールするものとする。 1. インストール フィルタドライバを組み込む…

14.318180MHz

Linux のスリープ処理、タイマ処理の詳細を見る これに触発されてWindowsだとどんなもんなのか、自分の記憶があやふやだったので確認してみた。 処理1(低精度) DWORD Timestamp[256]; int i; for ( i = 0; i < 256; ++i ) { Timestamp[i] = ::timeGetTime(…