ようこそ 屋根裏部屋 mkII へ ログイン | 登録 | ヘルプ

Technological

ちょっとしたTIPSや私がはまったこと、調べたことなんかを書いていきます。

C/C++ (RSS)

CとC++のカテゴリ
極東IT Engineers設立記念勉強会資料公開
ダウンロードサイトに極東IT Engineersの創立記念勉強会でしゃべった時の 資料 を公開しました。懲りもせずJIS2004話ですが、今回はちょっとプログラムデモを作ってみました。 主催者におどさ…もとい、「ぜひに」とせがまれたので 。 前のものとは少し追加した感じですかね。なので、旧作も併せてお読みください。 続きを読む

投稿日時 2008年8月4日 1:51 投稿者 kkamegawa | コメント数:0
タグ , ,

25回codeseek勉強会(ログって?)の資料公開
codeseek 25回勉強会でお話しした資料を公開しました。 codeseek 25回勉強会資料-ログ話いろいろ いいわけですが、これやる数日前からいろいろあって、もうちょっと実装寄りの話を入れようと思っていたのですが、入れられませんでした。期待していた人、ごめんなさい。セッション中にいくつか質問も頂きました。ここでQ&Aも公開します。忘れているぞ!というものがあれば教えてください。 ログをXMLで出すのは無し? 個人的にログとは「高速化を追求する」か、「その場で手軽に読める」のどちらかだと考えています。あと、少ないですけれどXMLだと異常系を考えると頭が痛いですしね。タグの途中でDisk 続きを読む

投稿日時 2008年3月2日 12:06 投稿者 kkamegawa | コメント数:0
タグ , , , , , , ,

Windowsでファイル名に使用できない文字(列)
Win32(※1)ではファイル名に使用できない文字(列)というものが決まっています。これはDOS時代からの互換性のためによるものです。 Naming a File (msdn2 library)から引用。ここではDOSからの仕様に基づいて書かれているようです。 AUX、CLOCK$、COM1 ~ COM9、CON、CONFIG$、LPT1 ~ LPT9、NUL、および PRN(※2) \ < > : " / \ | ? *(※3) period(.)はカレントディレクトリを表すので不可。 続きを読む

投稿日時 2008年1月15日 1:26 投稿者 kkamegawa | コメント数:2
タグ , , , , , , , ,

コモンダイアログになぜSharepointサイトがレンダリングされる?
Windows Sharepoint Serviceを便利に使い始めてちょっと気になったことがありました。Office製品ではSharepointのURLをコモンダイアログに指定するとこんなビューが表示されます。 これは2007 OfficeでSharepoint 3.0のサイトを開いたところ。ビューが表示されてわかりやすい。ところが、メモ帳(notepad)で同じURLを指定するとこんな感じ。 そのまんまWebDAVを見せている用に見えます。これでもまぁわかるといえばわかるのですが、できればOfficeのようにWebビューで表示してほしい。そこでどんな実装になっているのか、Spy++でみてみました。 続きを読む

投稿日時 2008年1月8日 0:52 投稿者 kkamegawa | コメント数:1
タグ , , , , , , ,

.NET Frameworkでのファイル最大長
Windowsのファイル名の最大長考察 で最大ファイル名を少し試してみました。最後のPowerShellでより長いファイル名が扱えないということが疑問だったので、.NET Frameworkで試してみましょう。 1: FileInfo fi = new FileInfo( @"c:\temp" ); 2: DirectoryInfo di = new DirectoryInfo( @"c:\temp" ); 3: FileInfo[] files = di.GetFiles( "*.txt" ); 続きを読む

投稿日時 2007年12月17日 1:31 投稿者 kkamegawa | コメント数:0
タグ , , , ,

Windowsのファイル名の最大長考察
NTFSファイルシステムにおいて、CRTでは 256文字と定義されています が、 CreateFile ではワイド文字であれば、32767文字まで指定できるとあります。ちょっと実験してみましょう。 1: void Win32UnicodeName( void ) 2: { 3: WCHAR wszLongLongName[] = L "\\\\?\\c:\\temp\\" 4: L" 123456789012345678901234567890 " 5: L" 123456789012345678901234567890 続きを読む

投稿日時 2007年12月13日 1:26 投稿者 kkamegawa | コメント数:1
タグ , , , ,

Windows のファイル-Part2 CRT とUNC
1: void SeparatePath( void ) 2: { 3: TCHAR szFile[] = _TEXT( "\\\\servername\\Sharename\\path\\base.txt" ); 4: TCHAR szDrive[_MAX_DRIVE + 1], szPath[_MAX_DIR + 1], szBase[_MAX_FNAME + 1], szExt[_MAX_EXT + 1]; 5: 6: _tsplitpath(szFile, szDrive, szPath, 続きを読む

投稿日時 2007年12月9日 2:40 投稿者 kkamegawa | コメント数:1
タグ , , , ,

Windows のファイル-Part1 CRT
Windowsのファイルについて、まずは基本のVisual C++ 2005 SP1 CRTでの定義から。includeディレクトリにあるstdlib.hではこうなっています。 1: #define _MAX_PATH 260 /* max. length of full pathname */ 2: #define _MAX_DRIVE 3 /* max. length of drive component */ 3: #define _MAX_DIR 256 /* max. length of 続きを読む

投稿日時 2007年12月6日 1:30 投稿者 kkamegawa | コメント数:2
タグ , ,

Windowsではほとんど大文字小文字区別されない
非常によく聞かれるネタ。 レジストリのキー(値)を大文字で入力しちゃったんですけど、大丈夫でしょうか? ファイル名小文字で入力したけど、大文字にしなくても大丈夫でしょうか? カーネルオブジェクト大文字小文字大丈夫でしょうか? コンピュータ名大文字小文字大丈夫でしょうか? アカウント名大文字小文字大丈夫でしょうか? どれも大丈夫です。さすがにファイル名は(ファイルシステム上は区別されているものの)大文字小文字を区別しないという認識が浸透していますが、レジストリのキーと値に関してはちょっとうまく動かないと必ず聞かれます。 続きを読む

投稿日時 2007年12月4日 0:39 投稿者 kkamegawa | コメント数:0
タグ , ,

EFS暗号化されたファイルを解除する
会社でEFSで暗号化したファイル群を元に戻すために作ったプログラムを整形したバージョン。ファイルの暗号化を戻した場合、タイムスタンプが書き換わってうれしくないので(仕様的には書き変わらないとまずいのでしょうが)、タイムスタンプを保持しておいて、戻すという技を使っています。 実際はエラーチェックとか入っていたり、構造がちょっと違いますが。エラーが出たら許してください 。参照にSystem.Security.dllを追加してください。 readonly(読み取り専用)をはずしているのはVSSなどにチェックインしたファイル対策。ReadOnly属性をはずしておかないと例外が発生します。 続きを読む

投稿日時 2007年8月12日 23:39 投稿者 kkamegawa | コメント数:0
タグ , , , , , ,

Application Init Failure 0xc0000022
Windowsのアプリケーションのexeファイルそのものに実行権限がない場合、「プログラム 'hoge.exe' の実行に失敗しました: アクセスが拒否されました。」というメッセージが出ます。GUIだとこんなメッセージ。 これはこれで非常にわかりやすいのです。が、アプリケーションから呼び出すDLLに実行権限がない場合、0xc0000022というエラーを出して、アプリケーションの起動に失敗します。 exeから呼び出されるdllに何があるかは Dependency Walker で調べることができます。Visual 続きを読む

投稿日時 2007年6月17日 13:47 投稿者 kkamegawa | コメント数:0
タグ , , ,

C++/CLIとC#混在ソリューション
Visual Studio 2005でC#とC++/CLIが混在するソリューションを作り、C++/CLI側でC#側のコードを呼び出すような構成の場合、C#側の修正がどんなに軽微でもC++/CLIはフルビルドが走ってしまいました。小さいプロジェクトならまだしも、大きいのになるとなかなかしんどいのではないでしょうか。私の場合、C++/CLIが2000行程度のプロジェクトですが、それでもいやだなと思うくらいです。 Orcas(Beta1)ではこの辺賢くなっているようで、C#側の内部処理が変わった程度ではC++/CLIのフルビルドまで行われなくなってます。これだけでもOrcasに移行したい 続きを読む

投稿日時 2007年6月1日 0:17 投稿者 kkamegawa | コメント数:0
タグ , ,

[Win32SDK]プリンタの物理トレイ番号を取得する。
Win32 SDKを使ってプリンタドライバで管理されている内部トレイ番号を取得する方法。 16以降 256以降がドライバ用みたいです。あーしまった。そういえば、テストしたとき、256以降が帰ってきていた… 。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 // プリンタのドライバ内で持っているトレイ番号を取得するロジック。 続きを読む

投稿日時 2007年4月20日 21:03 投稿者 kkamegawa | コメント数:2
タグ , , ,

C/C++でObsolete属性っぽいこと
C#(.NET Framework)の [Obsolete]属性 を見たとき、「ああ、C/C++にも欲しいなー」と痛切に思いました。APIが変わったり、実装を変更して、こっちを使って欲しい…といった場合、メールの告知や仕様書の改編では絶対に見てもらえない人がいるから。 ところが、似たような物はちゃんとあるんですね。たとえば、Visual C++ 2005でstrcpyを使うとC4996という警告が出ます。 1 2 TCHAR Dummy[256]; strcpy(Dummy, TEXT( "Dummy" 続きを読む

投稿日時 2007年4月16日 22:53 投稿者 kkamegawa | コメント数:2
タグ , ,

Vistaの新機能をAPIから探るパート2
2007/3/27にcodeseek+こみゅぷらす勉強会でしゃべったときの資料を公開します。ダウンロードからどうぞ( 直リンク )。 主にTask Scheduler 2.0についておはなししました。本当においしくなるのはLonghornからだと思いますけれど、調べてみるとUACのからみやらセキュリティのからみやらでイロイロと発見があって、おもしろいです。 ネタの解説はまたこっちのblogででも行います。今回は前以上に細かいスクリーンショットが多かったため、見づらくてすいませんでした…。>参加された方々 続きを読む

投稿日時 2007年3月28日 0:23 投稿者 kkamegawa | コメント数:0
タグ , , ,

続きを見る 次のページ »
Powered by Community Server, by Telligent Systems