kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

SDK

XenApp 6.5のユニバーサルプリンタに対してDeviceCapabilities(DC_BINNAMES)を呼び出すとアプリケーションエラーになる

はまりました。 Windows Server 2008 R2+XenApp 6.5 64bit/非Unicodeアプリケーション(32bit/Unicodeアプリケーションでは検証していません) ユニバーサルプリンタドライバで作られたプリンタに対してDeviceCapabilities(DC_BINNAMES)を呼び出す 手元ではこ…

常時デバイスから取得するかどうか設計時に配慮しよう

ちょっとはまったので。 WindowsにはDeviceCapabilitiesという、デバイスの能力を取得するAPIがあります。このAPIでプリンタでサポートしている用紙の種類を取ってくることができます。 ところが、プリンタ…とくに仮想プリンタによってはかなり応答に時間が…

コンソールアプリケーションをリモートデバッグするとき

GUIアプリケーションだったら起動すれば、ユーザーアクション以外では終了しないのでとても簡単です。起動してからゆうゆう、リモートマシンでデバッガアタッチすればいいのです。 しかしコンソールアプリケーションの場合、ユーザーの応答なんて待たないも…

Tech Fildersコラムが公開されました

Tech Fielders コラム | マイクロソフト ちょっとサボっていましたが、Tech Fildersにコラムが公開されました。何でもいいという話で、一番いいのはTechEdのLTをコラムにすればどうでしょう?とアドバイスもいただきました。しかし、あれをコラムにしても面…

パッチ適用時に再起動を要求されるわけ

id:kkamegawa:20101121:p1 にid:NyaRuRuさんからコメントいただきました。ありがとうございます。 実際のところは Windows Installer がファイル更新する際に,別プロセスからオープンされていて MOVEFILE_DELAY_UNTIL_REBOOT 扱いになったファイルがあると…

Task Scheduler 2.0と1.0のAPIレベルの差

昨日ざっくりとタスク機能の歴史を見たので、今日はもうちょっと細かいところを。 Task Scheduler API 2.0の変更で一番気になったのが文字列と日付の扱いです。1.0ではTASK_TRIGGER構造体を作って、ITaskTrigger::SetTriggerへ渡すだけでした。DST(Daylight …

Windowsスケジュール機能の変遷

Windowsのスケジュール機能は大きく分けて三世代あります。 Windows NT 4.0までのTask Schedulerサービス Windows 2000/Windows XP/Windows Server 2003のTask SchedulerサービスVer1 Windows Vista/Windows Server 2008以降のTask SchedulerサービスVer2 Wi…

リモートセッションであるかどうか判定する方法いろいろ

Windows Vista以降、コンソールセッションとサービスセッションは分離されてしまいました。 セッション 0 の分離 - Windows 7 対応アプリケーションの互換性 Windows Vista® および Windows Server® 2008 アプリケーション互換性解説書 私もそうだったのです…

msvcrtをどのくらい使うか?

以前はShell Lightweight Functionの便利関数とかなかったので、自分たちでいろいろ作っていたと思います。文字操作系などはstrtokとかでいろいろやっていた人も多いでしょうし、strlenとかいまだに使っているコードよく見かけます。 最近はまずShell Lightw…

MOUSE_HWHEELED はVista以降

MOUSE_EVENT_RECORD structure (Windows) ではMOUSE_HWHEELEDイベント(コンソールでのマウスホイールの水平動作イベント)はWindows 2000以降みたいなことを書いていますが、実際WinCon.hを見るとこうなっています。 #define MOUSE_MOVED 0x0001 #define DOUB…

その機能を提供しているAPIがきっとあるよ

Win32APIで、10240 → "10K" みたいに補助単位付き文字列に変換してくれるのがあったような気がするんだけど、名前もわからないし効率的なググり方もわからない。Shell APIだったっけ。誰か知ってたら教えてください!2010-10-12 18:44:48 via webというつぶ…

Windows 7でのSDKの細かい変更点

Windows SDK 7.1を_WIN32_WINNT_WIN7でgrepするとよくわかりますが、追加されたAPIとかは確かにあるのですが、それなりに手が入っています。英語のMSDN Libraryを検索しても出てこないものとか…。 WSDSetConfigurationOption function (Windows) に指定する…

FloatMAX()って?

今日は小ネタ。何気なくMSDN Libraryを見ていたら見つけた変な(?)API。 FloatMax function (Windows) Windows 7では標準で、VistaではPlatform updateパッチをインストールすればOK。Platform Updateがどんなものかはここ参照。たぶん今Windows Updateすれば…

じゃあ、CompareStringExでFullwidthの10と2はどう判定される?

昨日のWindows 7で文字列比較すると2は10よりも小さくできるよ - 新日々此何有哉を書いた後、「ASCIIは大丈夫。じゃあFullWidth(いわゆる全角)の10と2では」と思ってやってみました。 #define WINVER 0x602 #include <windows.h> #include <locale.h> LPCTSTR lpszCSTR[4] = {_</locale.h></windows.h>…

Windows 7で文字列比較すると2は10よりも小さくできるよ

文字列で2と10を比較すると、10のほうが小さいと判定されます。リストボックスなどにこんな風に出るといわれたことありませんか? 1 10 2 こんな感じ。lstrcmpやCompareStringといったAPIでは先頭の文字で判断しちゃうからこうなるんでしょうね。で、あまり…

Windows 7で高速にファイルを列挙させるFindFirstFileEx

長い間、NTFSチューニングの一つに「短いファイル名を生成させない」という技がありました。Windows Server 2008 R2のベストプラクティスアナライザーでも遅いディスクに対してはこのアドバイスが下されます。 NTFS Performance with Numerous Long Filename…

二度目のdll読み込み検索パス機能変更

A new CWDIllegalInDllSearch registry entry is available to control the DLL search path algorithm ライブラリをLoadLibrary(Ex)で読み込むと攻撃が成立してしまう可能性があるというセキュリティアドバイザリが公開されて、緩和策のモジュールも上記KB…

X64 Windows Debugging: Practical Foundationsが届いた

[id:kkamegawa:20100522:p1]で紹介した本が今日届きました。いや、聞いてはいたけどほんとに薄い本です。読むためにはWinDbgと基本的なアセンブラの知識は必要で、そのうえでx64では何が違うのかということを紹介しています。X64 Windows Debugging: Practic…

同時実行ランタイムの翻訳

.NET Frameworkのパラレルライブラリだけで、ネイティブコードのConcurrency Runtimeは翻訳されないだろうと思ったら、ちゃんと人間の翻訳が入っていたんですね。すばらしい。 同時実行ランタイム 並列ランタイムの「タスク スケジューラー」も間違いではな…

16bitと32bitの相互運用はどうだっけ?

Interprocess Communication Between 32-bit and 64-bit Applications (Windows) 「ハンドルは64bitだけど下位32bitしか使ってないよ。32bitアプリケーションとやりとりするとき困るからね」みたいなことを書いています。あれ、じゃあ16bitと32bitアプリケー…

IsOS

IsOS function (Windows) つらつらとShell Lightweight Functionsを見ていたらなんだこれってAPI。これWindows Server 2003まででしか使えない(Vista/7ではサポート外)っていうAPIですね。今ではちゃんとVerifyVersionInfoを使いましょうってことになってい…

APIも時と場合

.NETでプリンタを扱うにはどうすればいい?というよくある質問があって、PRINTER_INFO_2使いましょうとか、GetPrinter使いましょうとかいろいろ書かれていました。 だけど、マーシャリングコード書くの面倒だし(誰かのコピペやPInvoke.net使えばいいけど)、W…

x64クロス生成環境

知ってるひとがそばにいると心強い これ見て思い出したんだけれども、やはり「クロス開発環境」を提供するのはめんどいのかなぁと思った。会社の開発環境で「生成したきゃ64bit環境用意しろ」というものがあって、びっくりしたのですよ。 今はHyper-Vで楽に6…

KB978637とMSVC Runtime 100からのSide By Side

Windows 7 x64環境でApplication Manifestが無視されるようだというNyaRuRuさんの指摘、先日自動更新されたKB978637で直っているようですね。NyaRuRuさんの日記の該当エントリでご自身がコメントとして追記されていました。それはそれとして…。 http://twitt…

新API

id:kkamegawa:20100131:p1のブックマークコメントでいただきましたが、TaskDialogはVistaから搭載されたAPIです。昔はSDKに誤りがあったんですけどね。私が書いた別blog。 リソースが見つかりませんでした。 Windows SDK 6.0AではMSDNとヘルプに間違いがあっ…

ペイントの確認ダイアログで音が鳴らないのはなぜ?

Windows 7 のペイントでは保存せずに閉じても警告音が鳴りません: 世の中は不思議なことだらけ さくしまさんのところで面白い話題が出ていたので、ちょっとだけ確認してみました。私は普段音を出していないので気付いていませんでした。まず一言で言ってしま…

imepad.h

Download Office Sample: Input Method Editor (IME) Header File: imepad.h from Official Microsoft Download Center Office IME 14(Office IME 2010)リリースに伴い、恒例のSDKに入りそうで入らないヘッダがダウンロードセンタに登場。誰が使うのかは置い…

re:DLLとベースアドレス

[id:kkamegawa:20091222:p1]にコメントいただきました。名無しさん、ありがとうございます。 名無し wrote: 昔のDLL限界の話は64かと 95/NT4でTLSスロットの数は64個→CRTはインスタンスごとにTLSを使う→CRTを静的リンクするとDLL毎にTLSスロットを1つ使う→あ…

dllとベースアドレス

twitterで@mskwtさんとか@NyaRuRuさん(バカンス中なのにw)とかとDLLのrebase話について盛り上がってる。私も自分のお仕事で作っているライブラリ類はNT 3.1時代にrebaseの重要性を懇々と説かれたので、特に共有するようなDLLはもれなくrebaseしています。DL…

なぜ外字エディタを起動しないとXP Modeで外字が表示されない?

Windows 7の XP Mode で外字を使いたい場合: 世の中は不思議なことだらけ Windows 7 XPモード その6 XPモードで外字を利用出来ない。 - みゃうのリカバリーをする前に - Yahoo!ブログ WindowsでEUDC(外字)を使う場合、重要な制約があります。それは「ユーザ…