35.2. "msvcrt" --- MS VC++実行時システムの有用なルーチン群
**********************************************************

このモジュールの関数は、 Windows プラットフォームの便利な機能のいくつ
かに対するアクセス機構を提供しています。高レベルモジュールのいくつかは
、提供するサービスを Windows で実装するために、これらの関数を使ってい
ます。例えば、 "getpass" モジュールは関数 "getpass()" を実装するために
このモジュールの関数を使います。

ここに挙げた関数の詳細なドキュメントについては、プラットフォーム API
ドキュメントで見つけることができます。

このモジュールは、通常版とワイド文字列版の両方のコンソールI/O APIを実
装しています。通常版の API は ASCII 文字列のためのもので、国際化アプリ
ケーションでは利用が制限されます。可能な限りワイド文字列版APIを利用す
るべきです。


35.2.1. ファイル操作関連
========================

msvcrt.locking(fd, mode, nbytes)

   C 言語による実行時システムにおけるファイル記述子 *fd* に基づいて、
   ファイルの一部にロックをかけます。ロックされるファイルの領域は、現
   在のファイル位置から *nbytes* バイトで、ファイルの末端まで延長する
   ことができます。 *mode* は以下に列挙する "LK_*" のいずれか一つでな
   ければなりません。一つのファイルの複数の領域を同時にロックすること
   は可能ですが、領域が重複してはなりません。連接する領域をまとめて指
   定することはできません; それらの領域は個別にロック解除しなければな
   りません。

msvcrt.LK_LOCK
msvcrt.LK_RLCK

   指定されたバイト列にロックをかけます。指定領域がロックできなかった
   場合、プログラムは 1 秒後に再度ロックを試みます。10 回再試行した後
   でもロックをかけられない場合、 "IOError" が送出されます。

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

   指定されたバイト列にロックをかけます。指定領域がロックできなかった
   場合、 "IOError" が送出されます。

msvcrt.LK_UNLCK

   指定されたバイト列のロックを解除します。指定領域はあらかじめロック
   されていなければなりません。

msvcrt.setmode(fd, flags)

   ファイル記述子 *fd* に対して、行末文字の変換モードを設定します。テ
   キストモードに設定するには、 *flags* を "os.O_TEXT" にします; バイ
   ナリモードにするには "os.O_BINARY" にします。

msvcrt.open_osfhandle(handle, flags)

   C 言語による実行時システムにおけるファイル記述子をファイルハンドル
   *handle* から生成します。 *flags* パラメタは "os.O_APPEND" 、
   "os.O_RDONLY" 、および "os.O_TEXT" をビット単位で OR したものになり
   ます。返されるファイル記述子は "os.fdopen()" でファイルオブジェクト
   を生成するために使うことができます。

msvcrt.get_osfhandle(fd)

   ファイル記述子 *fd* のファイルハンドルを返します。 *fd* が認識でき
   ない場合、 *IOError* を送出します。


35.2.2. コンソール I/O 関連
===========================

msvcrt.kbhit()

   読み出し待ちの打鍵イベントが存在する場合に真を返します。

msvcrt.getch()

   打鍵を読み取り、読み出された文字を返します。コンソールには何もエコ
   ーバックされません。この関数呼び出しは読み出し可能な打鍵がない場合
   にはブロックしますが、文字を読み出せるようにするために "Enter" の打
   鍵を待つ必要はありません。打鍵されたキーが特殊機能キー (function
   key) である場合、この関数は "'\000'" または "'\xe0'" を返します; キ
   ーコードは次に関数を呼び出した際に返されます。この関数で
   "Control-C" の打鍵を読み出すことはできません。

msvcrt.getwch()

   "getch()" のワイド文字列版。Unicode の値を返します。

   バージョン 2.6 で追加.

msvcrt.getche()

   "getch()" に似ていますが、打鍵した字が印字可能な文字の場合エコーバ
   ックされます。

msvcrt.getwche()

   "getche()" のワイド文字列版。Unicode の値を返します。

   バージョン 2.6 で追加.

msvcrt.putch(char)

   キャラクタ *char* をバッファリングを行わないでコンソールに出力しま
   す。

msvcrt.putwch(unicode_char)

   "putch()" のワイド文字列版。Unicode の値を引数に取ります。

   バージョン 2.6 で追加.

msvcrt.ungetch(char)

   キャラクタ *char* をコンソールバッファに "押し戻し (push back)" ま
   す; これにより、押し戻された文字は "getch()" や "getche()" で次に読
   み出される文字になります。

msvcrt.ungetwch(unicode_char)

   "ungetch()" のワイド文字列版。Unicode の値を引数に取ります。

   バージョン 2.6 で追加.


35.2.3. その多の関数
====================

msvcrt.heapmin()

   "malloc()" されたヒープ領域を強制的に消去させて、未使用のメモリブロ
   ックをオペレーティングシステムに返します。失敗した場合、 "IOError"
   を送出します。
