# `msvcrt` --- MS VC++ ランタイムの有用なルーチン群

Source code: PC/msvcrtmodule.c

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

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

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

Availability: Windows.

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

## ファイル操作関連

msvcrt.locking(fd, mode, nbytes)

  Lock part of a file based on file descriptor fd from the C runtime. Raises `OSError` on failure. The locked region of the file extends from the current file position for nbytes bytes, and may continue beyond the end of the file. mode must be one of the `LK_*` constants listed below. Multiple regions in a file may be locked at the same time, but may not overlap. Adjacent regions are not merged; they must be unlocked individually.

  引数 `fd`, `mode`, `nbytes` を指定して 監査イベント `msvcrt.locking` を送出します。

msvcrt.LK_LOCK
msvcrt.LK_RLCK

  Locks the specified bytes. If the bytes cannot be locked, the program immediately tries again after 1 second. If, after 10 attempts, the bytes cannot be locked, `OSError` is raised.

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)

  Create a C runtime file descriptor from the file handle handle. The flags parameter should be a bitwise OR of `os.O_APPEND`, `os.O_RDONLY`, `os.O_TEXT` and `os.O_NOINHERIT`. The returned file descriptor may be used as a parameter to `os.fdopen()` to create a file object.

  The file descriptor is inheritable by default. Pass `os.O_NOINHERIT` flag to make it non inheritable.

  引数 `handle`, `flags` を指定して 監査イベント `msvcrt.open_osfhandle` を送出します。

msvcrt.get_osfhandle(fd)

  Return the file handle for the file descriptor fd. Raises `OSError` if fd is not recognized.

  引数 `fd` を指定して 監査イベント `msvcrt.get_osfhandle` を送出します。

## コンソール I/O 関連

msvcrt.kbhit()

  Returns a nonzero value if a keypress is waiting to be read. Otherwise, return 0.

msvcrt.getch()

  Read a keypress and return the resulting character as a byte string. Nothing is echoed to the console. This call will block if a keypress is not already available, but will not wait for `Enter` to be pressed. If the pressed key was a special function key, this will return `'\000'` or `'\xe0'`; the next call will return the keycode. The `Control`-`C` keypress cannot be read with this function.

msvcrt.getwch()

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

msvcrt.getche()

  Similar to `getch()`, but the keypress will be echoed if it represents a printable character.

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 の値を引数に取ります。

## その多の関数

msvcrt.heapmin()

  Force the `malloc()` heap to clean itself up and return unused blocks to the operating system. On failure, this raises `OSError`.

msvcrt.set_error_mode(mode)

  Changes the location where the C runtime writes an error message for an error that might end the program. mode must be one of the `OUT_*` constants listed below or `REPORT_ERRMODE`. Returns the old setting or -1 if an error occurs. Only available in debug build of Python.

msvcrt.OUT_TO_DEFAULT

  Error sink is determined by the app's type. Only available in debug build of Python.

msvcrt.OUT_TO_STDERR

  Error sink is a standard error. Only available in debug build of Python.

msvcrt.OUT_TO_MSGBOX

  Error sink is a message box. Only available in debug build of Python.

msvcrt.REPORT_ERRMODE

  Report the current error mode value. Only available in debug build of Python.

msvcrt.CrtSetReportMode(type, mode)

  Specifies the destination or destinations for a specific report type generated by `_CrtDbgReport()` in the MS VC++ runtime. type must be one of the `CRT_*` constants listed below. mode must be one of the `CRTDBG_*` constants listed below. Only available in debug build of Python.

msvcrt.CrtSetReportFile(type, file)

  After you use `CrtSetReportMode()` to specify `CRTDBG_MODE_FILE`, you can specify the file handle to receive the message text. type must be one of the `CRT_*` constants listed below. file should be the file handle your want specified. Only available in debug build of Python.

msvcrt.CRT_WARN

  Warnings, messages, and information that doesn't need immediate attention.

msvcrt.CRT_ERROR

  Errors, unrecoverable problems, and issues that require immediate attention.

msvcrt.CRT_ASSERT

  Assertion failures.

msvcrt.CRTDBG_MODE_DEBUG

  Writes the message to the debugger's output window.

msvcrt.CRTDBG_MODE_FILE

  Writes the message to a user-supplied file handle. `CrtSetReportFile()` should be called to define the specific file or stream to use as the destination.

msvcrt.CRTDBG_MODE_WNDW

  Creates a message box to display the message along with the `Abort`, `Retry`, and `Ignore` buttons.

msvcrt.CRTDBG_REPORT_MODE

  Returns current mode for the specified type.

msvcrt.CRT_ASSEMBLY_VERSION

  The CRT Assembly version, from the `crtassem.h` header file.

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

  The VC Assembly public key token, from the `crtassem.h` header file.

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

  The Libraries Assembly name prefix, from the `crtassem.h` header file.