kkamegawa's weblog

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

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

はまりました。

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

手元ではこれで再現しました(/GSを付けてコンパイルした場合、stack overflowを検出する)。もちろんユニバーサルプリンタドライバを使用しない(AppCenterのポリシーで禁止する)もしくは、ユニバーサルプリンタを使用するクライアントリダイレクトプリンターを作成しないという設定にすれば発生しません。
昔からCitrixのユニバーサルプリンタドライバーはなかなか曲者で、印刷時のトラブル対応では「まずユニバーサルプリンタドライバかどうか確認しろ」というFAQまでありました。
XenAppのユニバーサルプリンターという仕組みはもう10数年くらいあるものなんですがねぇ…。