プチフリーズしてしまう…
イベントビューアを見ると、次のようなシステム イベントが残っています。
「デバイス \Device\RaidPort0 にリセットが発行されました。」
「ディスク 1 (PDO 名: \Device\00000033) の論理ブロック アドレス 0x7d367d0 で IO 操作が再試行されました。」
ーーー
結局私の場合、[電源オプション]、[PCI Express]→[リンク状態の電源管理]→[設定]=オフ にしたら、でなくなりました。
参考:
Freezes with storahci error 129 in Event Protocol
http://www.tomshardware.com/answers/id-2318245/freezes-storahci-error-129-event-protocol.html
ーーー
あと、AHCI Link Power Management - HIPM/DIPM を HIPM→Active に変更しました。
この設定を表示する方法は、こちら:
Storahci, ID 129, Reset to device, \Device\RaidPort0, was issued - fix for Windows 10 Technical Preview
http://www.nxhut.com/2015/01/storahci-id-129-reset-to-device.html#!/2015/01/storahci-id-129-reset-to-device.html
ーーー
あと、こちらも試しました。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\Parameters\Deviceにあるサブキー「NoLPM」の値を確認
デバイスマネージャーを確認してSSDの名前を値に追加し、その後に*をつける
storahciの件、直りました
http://mru.txt-nifty.com/blog/2016/08/storahci-26f3.html
ーーー
まとめますと… Windows か TS256GSSD370S か M/B か、どの部分かわかりませんが、
「送った DiskRead 要求が(恐らく省電力関係の)不具合により、ときどき忘れられてしまい、30 秒間応答が帰ってこないのでエラーと判断、再試行した。」
そんな感じがしました。これ、書き込み操作でこんなことが起こると大惨事ですよね。しっかりしてほしいものです。
ーーー
ためしたが、今回あてはまなかったこと…
Crystal Disk Info で、SMART 情報をチェック:正常でした。
Transcend SSD Scope でチェック:正常のようです
「Intel(R) 7 Series/C216 Chipset Family SATA AHCI Controller - 1E02」から「標準 SATA AHCI コントローラー」に変更:効果なし
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\StartOverride を 3 から 0 に変更する
→ StartOverride が見つからなかったので、試していません。
Windows 8/8.1で時々躓くような、カクカクとした重い操作が気になるようになったら確認してみること
http://dorodorodoroid.hatenablog.com/entry/2015/01/29/000622
ーーー
2016年9月29日木曜日
2016年9月12日月曜日
IShellExtInit::Initialize の IDataObject につきまして
IShellExtInit::Initialize の IDataObject で、EnumFormatEtc したら?
ショートカット 2 個を右クリック
PDF ファイル 1 個を右クリック
フォルダ 1 個を右クリック
ショートカット 2 個を右クリック
-16155 Shell IDList Array DVASPECT_CONTENT -1 TYMED_HGLOBAL
15 CF_HDROP DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16378 FileName DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16152 FileContents DVASPECT_CONTENT -1 TYMED_ISTREAM
-16377 FileNameW DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16150 FileGroupDescriptorW DVASPECT_CONTENT -1 TYMED_HGLOBAL
PDF ファイル 1 個を右クリック
-16155 Shell IDList Array DVASPECT_CONTENT -1 TYMED_HGLOBAL
-15488 DataObjectAttributes DVASPECT_CONTENT -1 TYMED_HGLOBAL
-15490 DataObjectAttributesRequiringElevation DVASPECT_CONTENT -1 TYMED_HGLOBAL
15 CF_HDROP DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16378 FileName DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16152 FileContents DVASPECT_CONTENT -1 TYMED_ISTREAM
-16377 FileNameW DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16150 FileGroupDescriptorW DVASPECT_CONTENT -1 TYMED_HGLOBAL
フォルダ 1 個を右クリック
-16155 Shell IDList Array DVASPECT_CONTENT -1 TYMED_HGLOBAL
-15488 DataObjectAttributes DVASPECT_CONTENT -1 TYMED_HGLOBAL
-15490 DataObjectAttributesRequiringElevation DVASPECT_CONTENT -1 TYMED_HGLOBAL
15 CF_HDROP DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16378 FileName DVASPECT_CONTENT -1 TYMED_HGLOBAL
-16377 FileNameW DVASPECT_CONTENT -1 TYMED_HGLOBAL
2016年8月12日金曜日
JavaScript for Acrobat で、Adobe Acrobat Reader DC を拡張
そういうことができるらしいです。
このような JavaScript を %AppData%\Adobe\Acrobat\Privileged\DC\JavaScripts\Hello.js とかに保存して、Adobe Acrobat Reader DC を起動し、PDF を開くと…
何やら右下にアドオンツールというものが追加されます。
試しにクリックすると、あら素敵! アドオンツールに、Hello World が!
クリックすると、
メッセージが表示されます。
これでもう簡単なプラグインは JavaScript でも書くことができるし、Reader でも使えるし、いいことずくめですか?
このような JavaScript を %AppData%\Adobe\Acrobat\Privileged\DC\JavaScripts\Hello.js とかに保存して、Adobe Acrobat Reader DC を起動し、PDF を開くと…
function helloWorld()
{
//Say Hello World
app.alert("Hello World with this " + this);
}
app.addToolButton({
cName: "helloWorldBtn", // A name for your button
cExec: "helloWorld()", //Function to Call
cLabel: "Hello World", //The Text on the Button
cTooltext: "Say Hello World" //The Help Text
});
何やら右下にアドオンツールというものが追加されます。
試しにクリックすると、あら素敵! アドオンツールに、Hello World が!
クリックすると、
メッセージが表示されます。
これでもう簡単なプラグインは JavaScript でも書くことができるし、Reader でも使えるし、いいことずくめですか?
2016年7月16日土曜日
OneNote one ファイル形式
ファイル形式の仕様書:
[MS-ONE]: OneNote File Format
https://msdn.microsoft.com/en-us/library/dd924743(v=office.12).aspx
[MS-ONESTORE]: OneNote Revision Store File Format
https://msdn.microsoft.com/en-us/library/dd951288(v=office.12).aspx
ファイル形式について:
XML に変換すると、多少分かり易くなるかもしれません。サンプル
仕様書と、サンプルの one ファイルと、解析結果の XML ファイルを見れば、解析作業を助けると思います。
読み込むだけであれば、まだ楽です。
よく現れる構造体 ExtendedGUID につきまして。
ExtendedGUID = GUID + int32 です。
例: Root Extended GUID: MUST be "{{ 4A3717F8- 1C14-49E7-9526-81D942DE1741 }, 1}".
GUID はそのままですが、int32 の意味は利用場所によって異なります。要は ID なので、(名前空間 + 整理番号) のような使われ方が基本です。もっと砕けば(一意なフォルダ番号 + ファイル番号) のような感じです
one ファイルは、多数のチャンク(オフセット+バイト数)が散りばめられた、
ファイルシステムのような構造を呈しております。
ファイルやフォルダーのような階層構造の概念があり、FileNode を使って表します。
FileNode の形式には 3 種類有り、
FileDataStoreObjectReferenceFND であれば、チャンクの中身は、添付ファイル+αの情報です。
ObjectDeclaration2RefCountFND 等には、oid と jcid が有ります。oid と jcid が付いている FileNode は、有用なデータを含みます。oid は、CompactID。ObjectID 中の CompactID として、他の FileNode から参照されます。
jcid は、FileNode の抽象的な意味です。jcidRichTextOENode とか、jcidOutlineElementNode とか、jcidOutlineNode とか、jcidPageNode とか。
リビジョン管理が有ります。
「ページのバージョンを表示」で、古いバージョンを参照できたりします。
新しいリビジョンは、前のリビジョンにちょっと変更を加えた程度のものと考えてください。古い FileNode を置き換える為に、同じ oid を指定します。
RevisionManifestStart6FND または RevisionManifestStart7FND で始まります。
rid と ridDependent を持っていて、親子関係を形成します。ridDependent が無くなるか、ridDependent が空になるまで遡ります。
Start と End の間に ObjectGroupListReferenceFND が有り、この FileNode の中に、起点となる jcidPageManifestNode (ObjectDeclaration2RefCountFND) が出て参ります。最初のリビジョンにだけ出現し、後の方のリビジョンには通常出て来ません。
jcidPageSeriesNode を収めています RevisionManifestListReferenceFND の中も ObjectGroupListReferenceFND が使われていますので、リビジョン管理の必要が有ります。
[MS-ONE]: OneNote File Format
https://msdn.microsoft.com/en-us/library/dd924743(v=office.12).aspx
[MS-ONESTORE]: OneNote Revision Store File Format
https://msdn.microsoft.com/en-us/library/dd951288(v=office.12).aspx
ファイル形式について:
- 完全にバイナリ。容易に可読できる形式には直りません。
- 概念が複雑。階層が深いし、内部参照も多い。
XML に変換すると、多少分かり易くなるかもしれません。サンプル
仕様書と、サンプルの one ファイルと、解析結果の XML ファイルを見れば、解析作業を助けると思います。
読み込むだけであれば、まだ楽です。
よく現れる構造体 ExtendedGUID につきまして。
ExtendedGUID = GUID + int32 です。
例: Root Extended GUID: MUST be "{{ 4A3717F8- 1C14-49E7-9526-81D942DE1741 }, 1}".
GUID はそのままですが、int32 の意味は利用場所によって異なります。要は ID なので、(名前空間 + 整理番号) のような使われ方が基本です。もっと砕けば(一意なフォルダ番号 + ファイル番号) のような感じです
- CompactID。出来上がりは ExtendedGUID ですが、中身は int8 + int24 です。
- 2 つ目の int24 で、GlobalIdTable 中の GUID を 1 つ指定、
- 1 つ目の int8 で、ExtendedGUID の int32 を埋めます。
- ObjectID。CompactID の配列。他の FileNode を参照。FileNode の oid と一致する物を参照します。FileNode は兄弟とは限りません。後記するリビジョン管理の為、親戚(親の子)の場合も有ります。
- ContextID。CompactID の配列
- ObjectSpaceID。CompactID の配列
one ファイルは、多数のチャンク(オフセット+バイト数)が散りばめられた、
ファイルシステムのような構造を呈しております。
ファイルやフォルダーのような階層構造の概念があり、FileNode を使って表します。
FileNode の形式には 3 種類有り、
- None。可変データ fnd が有ります。
- Node。子 FileNode を持っています。可変データ fnd も有ります。
- Data。ファイル中のチャンクへの参照(ObjectSpaceObjectPropSet 等)が有ります。可変データ fnd も有ります。
FileDataStoreObjectReferenceFND であれば、チャンクの中身は、添付ファイル+αの情報です。
ObjectDeclaration2RefCountFND 等には、oid と jcid が有ります。oid と jcid が付いている FileNode は、有用なデータを含みます。oid は、CompactID。ObjectID 中の CompactID として、他の FileNode から参照されます。
jcid は、FileNode の抽象的な意味です。jcidRichTextOENode とか、jcidOutlineElementNode とか、jcidOutlineNode とか、jcidPageNode とか。
リビジョン管理が有ります。
「ページのバージョンを表示」で、古いバージョンを参照できたりします。
新しいリビジョンは、前のリビジョンにちょっと変更を加えた程度のものと考えてください。古い FileNode を置き換える為に、同じ oid を指定します。
RevisionManifestStart6FND または RevisionManifestStart7FND で始まります。
rid と ridDependent を持っていて、親子関係を形成します。ridDependent が無くなるか、ridDependent が空になるまで遡ります。
Start と End の間に ObjectGroupListReferenceFND が有り、この FileNode の中に、起点となる jcidPageManifestNode (ObjectDeclaration2RefCountFND) が出て参ります。最初のリビジョンにだけ出現し、後の方のリビジョンには通常出て来ません。
jcidPageSeriesNode を収めています RevisionManifestListReferenceFND の中も ObjectGroupListReferenceFND が使われていますので、リビジョン管理の必要が有ります。
2016年7月7日木曜日
2016年7月1日金曜日
2016年6月28日火曜日
InvalidConstraintException
System.Data.InvalidConstraintException ForeignKeyConstraint FK_xxx_yyy によって制約が実行され、xxx に子行が存在するため、テーブル yyy を消去できません。
親テーブル yyy
└子テーブル xxx
「制約が有効」な状態です。
内部的には、親テーブル yyy の内容を消して(Clear)、フィル(Fill)しようとしている。
子テーブル xxx にデータが存在する場合、親が Clear によって消えてしまう。ここで制約違反が発生。
回避方法:
new yyyTableAdapter().Fill(dataSet1.yyy);リレーションが、
親テーブル yyy
└子テーブル xxx
「制約が有効」な状態です。
内部的には、親テーブル yyy の内容を消して(Clear)、フィル(Fill)しようとしている。
子テーブル xxx にデータが存在する場合、親が Clear によって消えてしまう。ここで制約違反が発生。
回避方法:
- yyyTableAdapter の ClearBeforeFill を False にしてから、Fill を実行。
- dataSet1.EnforceConstraint = False にしてから、Fill する。すると、制約違反は検知されなくなるので、自由にテーブルを構築できる。
登録:
投稿 (Atom)








