クライアントのマシン上のWindowsVista/ 7で散発的にクラッシュする低レベル(実際の低レベルのように、基本的にすべてのIOCTL呼び出しと列挙APIへのいくつかの呼び出し)があります。残念ながら、クラッシュダンプを取得することはできませんでしたが、ある有用なユーザーは、プログラムをXP互換モードで実行すると問題が解決したと述べました。
アプリケーションは常に完全な管理者権限で起動されるため(管理者認証が必要な別のプログラムから起動されます)、UACの問題ではありません。非推奨のAPIを使用せず、レジストリハックなどに依存していません。ディスクを列挙するための呼び出しを発行し、IOCTLコマンドを使用して、接続されているすべてのデバイスに関するより低レベルの情報を取得しています。
XP互換モードではどうなりますか?Windowsは、Vista / 7でのクラッシュを防ぐために、アプリケーションに何を注入するか、サンドボックス化するのですか?XP互換モードで正常に動作すると言われる前に、ヒープの破損を最初に疑っていました(ただし、複製または問題の追跡を試みて髪の毛を抜いてしまいました)。
XP互換モードで回避できる可能性のある問題を誰かが提案できますか?この問題に対処するために調査する必要がありますか?ありがとう!
編集:
おそらく非常に重要なもう1つのことは、WIN32 APIを介して公開されていない特定の機能を取得するために、ユーザースペースからDDK/カーネル関数を呼び出していることです。
ZwReadFile、ZwCreateFile、ZwWriteFile、RtlInitUnicodeString、ZwQueryVolumeInformationFile、ZwDeviceIoControlFile、ZwSetInformationFile、ZwCloseを使用しています。
私が呼び出しているIOCTLには、IOCTL_DISK_GET_PARTITION_INFO_EX、IOCTL_STORAGE_GET_DEVICE_NUMBER、IOCTL_DISK_GET_LENGTH_INFO、およびIOCTL_DISK_GET_DRIVE_LAYOUT_EXが含まれます。