KeSaveExtendedProcessorState / KeRestoreExtendedProcessorStateを使用して、Windows 7 64 ビットのデバイス ドライバーで拡張プロセッサの状態を保存および復元する前に、KeSaveExtendedProcessorState で BSOD を取得しました。
RtlGetEnabledExtendedFeatures ((ULONG64)(-1)) を使用 して有効な拡張機能 (戻り値は 0x3) を取得し、それを KeSaveExtendedProcessorState の最初のパラメーターとして使用し、MmAllocateContiguousMemory ( sizeof (XSTATE_SAVE), highAddress) を highAddress と共に使用しました。 = 0xbffffffff を使用して、拡張状態を保存するために使用される非ページ メモリを割り当て、KeSaveExtendedProcessorState の前に IRQL を DISPATCH_LEVEL に上げました。次のメッセージでBSODを取得しました:
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
INVALID_EXTENDED_PROCESSOR_STATE (131)
Invalid combination of parameters was detected while saving or restoring
extended processor state.
Arguments:
Arg1: 0000000000000000, Invalid feature mask was passed or extended processor state is
not enabled.
Arg2: 0000000000800000, Nonzero if extended state is enabled.
Arg3: 0000000000000003, The low 32 bits of the feature mask.
Arg4: 0000000000000000, The high 32 bits of the feature mask.
私は何を取りこぼしたか?
ありがとう。
よろしく、デビッド