Windowsで表示されるエラーコードの見方
Windowsでエラーがあるたびに表示される「エラーコード」。コードを調べると原因がわかるとされているが、インターネットでキーワード検索をしてみたところで、まともな答えが得られないことのほうが多い。よくてエラーコードの意味を理解しないで、単に対策だけが記載されている程度だ。
そこで、今回はこのエラーコードを解説することにしよう。とりあえず、マイクロソフトが出している正式なドキュメントは以下にある。
●[MS-ERREF]: Windows Error Codes
https://msdn.microsoft.com/en-us/library/cc231196.aspx
基本的には、これを読めばいいわけなのだが、量も結構あって、しかも英語である。そこで、今回は、よく見かけるエラーコードなどを例に、ごく大まかに解説することにする。
Windowsのエラーコードは、32bit値で、通常は16進数で表現されている。大きく「HRESULT」「Win32エラーコード」「NTSTATUS」の3つがある。よく見かける0x8007xxxxというのがWin32エラーコード、0xCxxxxxxxというがNTSTATUSである。
また、場合によっては、システムがこれらのエラーコードに「拡張コード」を付けて詳細情報を付加する場合もある。たとえば、Windows Updateによるアップグレードなどは、エラーの発生タイミングを通知する拡張コードをつける場合がある。
まずは、エラーコードの構造から見ていこう。エラーコードは、32bitで表現される整数値を16進数で表現したものだ。エラーコードの先頭にある「0x」は以下が16進数であることを示すために使われる記法の1つだ。コンピュータ言語などで数値を表現する場合に使われる。
エラーコードは常に16進数とするというルールがあれば、先頭に0xをつける必要はなさそうだが、実際には、コンピュータ内部には16進数も2進数も10進数もなく、みな同じ32bitのデータでしかない。人間に見えるように数値を画面などに表示する際に、どのように表示するのかを決めているだけだ。しかし、単に数字だけを表示すると10進数解釈してしまうかもしれない。16進数でも、A~Fが一回も使われない数字というのもあるわけで、見た目に紛らわしい。このため、エラーコードは16進数で表現するために必ず先頭に0xをつけているようだ。
このエラーコードのうち、まずは、0xの次の文字が8なのかCなのかで解釈の方法が変わってくる。まずは、先頭が8のWin32エラーコードからみていくことにする。
Win32エラーコード
Win32エラーコードは、本来はHRESULTと呼ばれるAPI呼び出しなどの処理の結果状態(成功したのかエラーなのか)を表現するデータの一種だ。そのデータ構造は下の図のようになっている。
Win32エラーの場合には、エラーコードは0x8007というパターンから始まる
HRESULTは、32bitデータの下位5ビットでエラーの種類を表している。ただし、5ビット目(bit4。Xビット)は使われておらず0に固定である。最下位にあるSビットはエラーなのか、そうでないのかを表していて、エラーの場合ここが1になる。残りはゼロになるため、エラーコードの先頭は、必ず8、つまり0x8xxxxxxx」(xは任意の16進数)というパターンになる。
HRESULTでは、bit5(6ビット目)からbit15は、ファシリティ(Facility)と呼ばれるフィールドで、エラーの分類(発生位置)を示す。ここが0x007の場合は、Win32エラーだ。なお、ファシリティのリストは前述の文書にある。
●HRESULT
https://msdn.microsoft.com/en-us/library/cc231198.aspx
つまり、エラーコードの上位4桁が「0x8007」になっているのはWin32エラーとなる。エラーコードの下位4桁は、ファシリティごとに意味が違っていて、Win32用のリストは、同様に以下のページにある
●Win32 Error Codes
https://msdn.microsoft.com/en-us/library/cc231199.aspx
簡単にいえば、表示されたエラーコードの先頭が0x8007だった場合には、前記のページにあるリストから下位4桁の数字を探せばいいことになる。
NTSTATUS
エラーコードの最初の桁が「C」だった場合、パターンはまた変わってくる。
エラーコードがNTSTATUS形式の場合、0xCから始まるエラーコードとなる
Win32と似ているが、ちょっと違う。NTSTATUSの場合、ファシリティはbit4(5ビット目)からbit15(16ビット目)までとなる。コードの部分は、Win32と同じく16ビットになっている。ただし、NTSTATUSの場合、ファシリティとエラーコードを一緒にしたリストになっているので、以下のページから、エラーコードそのものを探す。
●NTSTATUS Values
https://msdn.microsoft.com/en-us/library/cc704588.aspx
なお、ファシリティ部分がどのような意味を持つのかは、以下のページに記述がある。
●Appendix A: Product Behaviorの<4>以下 https://msdn.microsoft.com/en-us/library/cc231214.aspx#Appendix_A_4
これで、とりあえず、エラーコードを「エラーメッセージ」に変換することが可能になる。では、次回はもうすこし具体的にエラーコードについて見ていくことにしよう。
・元ネタ
http://ascii.jp/elem/000/001/432/1432965/
[0回]
PR
バッチ(bat)や一括検索のためのコマンドの使い方
カレントディレクトリ以下のすべてのファイルから、
「hoge」という文字列を検索し表示する。
ファイル名とそのディレクトリも表示される。
windows 10 proで試しました。
※バイナリファイルも読み込むため、浅い階層でやるといい結果が得られないでしょう。
>findstr /s /i "hoge" *
fuga.txt:hoge = aaa
hoge.txt:hoge = aaa
LogDir001\fuga.txt:hoge = aaa
http://www.tecblo.com/site-navi/1165.html
オプションの「s」は、documentsディレクトリ配下のすべてのディレクトリを再帰的に検索、
「i」は大文字小文字を区別しないで検索します。
[0回]
インスタンスとは?
データベースの勉強を始めるにあたって、最初に出てくる非常になじみにくい言葉が“
インスタンス”です。
これは、おおざっぱにいうとデータベースシステムのまとまりのことであり、データベースを起動・停止する単位を表します。管理者の立場から見ると、1つのデータベース管理単位となります。UNIXの世界では環境変数「ORACLE_SID」で表されます。
[0回]
WindowsでWMIとwmicコマンドを使ってシステムを管理する(基本編)
http://www.atmarkit.co.jp/ait/articles/0804/18/news154.html
secedit
http://itpro.nikkeibp.co.jp/article/Windows/20051013/222731/?rt=nocnt
セキュリティ・テンプレートとコンピュータのセキュリティ設定とを比較し、システム・セキュリティの構成や分析をする。
使用例
「hisecws.sdb」データベースにセキュリティ・テンプレート「hisecws.inf」をインポートし、そのセキュリティ設定に基づいてシステムを構成する。また、セキュリティの構成を「hisecws.log」というログファイルに記録する。
secedit /configure /db hisecws.sdb /cfg hisecws.inf /overwrite /log hisecws.log
DNSキャッシュ削除方法1:コマンドプロンプトを使う
ipconfig /flushdns
netshコマンドでTCP/IPパラメータを設定する
http://www.atmarkit.co.jp/ait/articles/1002/05/news097.html
@@@@@@@@@@@@@@@@@@@@@@@@@
http://otndnld.oracle.co.jp/document/products/ofs/E06262-01/intro.htm
1 Oracle Fail Safeの基礎知識
ビジネスにおいて、24時間365日利用できる製品やサービスがますます求められるようになっています。100%の可用性を保証できるソリューションはありませんが、Oracle Fail Safeを使用すると、Microsoftクラスタ上で稼働してMicrosoft Cluster Server(MSCS)で構成されているOracleデータベースやその他のアプリケーションの停止時間を、最小限に抑えることが可能になります。
@@@@@@@@@@@@@@@@@@@@@
その他
ファイル変換ソフトウェア
FUJITSU Software F*TRAN(エフトラン)シリーズ
メインビジュアル
データ変換の定番ソフトウェア
F*TRANシリーズは、汎用機・オフコンなどのホストデータと
パソコンのデータとを相互に変換するためのオフライン型
データコンバーターの定番ソフトウェアです。
ホストデータがWindows®やUNIXのように、他のコンピュータとの
データ変換が難しいという様々な課題を20年間培ってきたノウハウで解決し、
F*TRAN2007では、IBMフロッピィの変換が可能なソフトウェアとして、
ファイル変換の分野でトップシェアを誇っています。
ACL
http://www.atmarkit.co.jp/ait/articles/0601/21/news011.html
Windows OSでは、ファイルやフォルダだけでなく、システム内部にあるさまざまな「オブジェクト」に対して、アクセスを許可するかどうかを管理している。このときに利用されるのが「アクセス制御リスト(Access Control List、以下ACL)」である。
[0回]
$beginDate = Get-Date -Date "2016/07/01"
$endDate = Get-Date -Date "2017/04/01"
#$a = @("taro1","jiro2","3ro","4ro","taro1","jiro2","taro1","jiro2","jiro2")
$a = Get-EventLog application -After $beginDate -Before $endDate | Where-Object { $_.EntryType -eq "Error" }
#$b = @(foreach($v in $a){ $v })
# 自分のディレクトリ
cd @@@@@
for ($i=0; $i -lt $a.Length; $i++){
$a | ? {
if(($a.Message -eq $_.Message).count -ge 2){
$_
}
} | sort | gu | out-file ./result.txt -encoding default
}
#http://d.hatena.ne.jp/sinjyama/20100817/1282035684
[0回]