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

======================================================================

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

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

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

バージョン 3.3 で変更: このモジュールの操作で以前は "IOError" が送出さ
れていたところで "OSError" が送出されるようになりました。


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

msvcrt.locking(fd, mode, nbytes)

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

msvcrt.LK_LOCK
msvcrt.LK_RLCK

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

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

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

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* が認識でき
   ない場合、 "OSError" を送出します。


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

msvcrt.kbhit()

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

msvcrt.getch()

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

msvcrt.getwch()

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

msvcrt.getche()

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

msvcrt.getwche()

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

msvcrt.putch(char)

   バイト文字列 *char* をバッファリングを行わないでコンソールに出力し
   ます。

msvcrt.putwch(unicode_char)

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

msvcrt.ungetch(char)

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

msvcrt.ungetwch(unicode_char)

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


34.2.3. その多の関数
====================

msvcrt.heapmin()

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