当前位置: 首页 > news >正文

从hal!HalRequestSoftwareInterrupt到hal!HalpDispatchInterrupt到nt!_KiDispatchInterrupt和windbg扩展命令!irql原理

从hal!HalRequestSoftwareInterrupt到hal!HalpDispatchInterrupt到nt!_KiDispatchInterrupt和windbg扩展命令!irql原理

BOOLEAN
KeInsertQueueDpc (
IN PRKDPC Dpc,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2
)
{

if ((Dpc->Importance != LowImportance) ||
(DpcData->DpcQueueDepth >= Prcb->MaximumDpcQueueDepth) ||
(Prcb->DpcRequestRate < Prcb->MinimumDpcRate)) {

Prcb->DpcInterruptRequested = TRUE;
KiRequestSoftwareInterrupt(DISPATCH_LEVEL);

1: kd> g
Breakpoint 16 hit
eax=ffdff994 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee4f8 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
hal!HalRequestSoftwareInterrupt:
804ee4f8 643a0d95000000 cmp cl,byte ptr fs:[95h] fs:0030:00000095=00
0: kd> kc
#
00 hal!HalRequestSoftwareInterrupt
01 nt!KeInsertQueueDpc
02 USBPORT!USBPORT_InterruptService
03 nt!KiInterruptDispatch
04 hal!WRITE_PORT_UCHAR
05 PCIIDEX!BmArm
06 atapi!IdeReadWrite
07 atapi!IdeSendCommand
08 atapi!AtapiStartIo
09 atapi!IdeStartIoSynchronized
0a nt!KeSynchronizeExecution
0b atapi!IdePortAllocateAccessToken
0c PCIIDEX!BmReceiveScatterGatherList
0d hal!HalBuildScatterGatherList
0e hal!HalGetScatterGatherList
0f PCIIDEX!BmSetup
10 atapi!IdePortStartIo
11 nt!IoStartPacket
12 atapi!IdePortDispatch
13 nt!IofCallDriver
14 CLASSPNP!SubmitTransferPacket
15 CLASSPNP!ServiceTransferRequest
16 CLASSPNP!ClassReadWrite
17 nt!IofCallDriver
18 PartMgr!PmReadWrite
19 nt!IofCallDriver
1a ftdisk!FtDiskReadWrite
1b nt!IofCallDriver
1c volsnap!VolSnapWrite
1d nt!IofCallDriver
1e Ntfs!NtfsSingleAsync
1f Ntfs!NtfsNonCachedIo
20 Ntfs!NtfsCommonWrite
21 Ntfs!NtfsFsdWrite
22 nt!IofCallDriver
23 nt!IoSynchronousPageWrite
24 nt!MiFlushSectionInternal
25 nt!MmFlushSection
26 nt!CcFlushCache
27 Ntfs!NtfsCheckpointVolume
28 Ntfs!NtfsCheckpointAllVolumes
29 nt!ExpWorkerThread
2a nt!PspSystemThreadStartup
2b nt!KiThreadStartup
0: kd> kv 5
# ChildEBP RetAddr Args to Child
00 f78cdcb8 80a36611 89620bb0 898d4608 105ee601 hal!HalRequestSoftwareInterrupt (FPO: [0,0,0]) [d:\srv03rtm\base\hals\halmps\i386\mpswint.asm @ 84]
01 f78cdcd4 baed5f37 018d4608 898d460c 00000000 nt!KeInsertQueueDpc+0x18d (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ke\dpcobj.c @ 434]
02 f78cdcf0 80b003ed 89620bb0 898d4030 00010007 USBPORT!USBPORT_InterruptService+0x93 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\drivers\wdm\usb\hcd\usbport\int.c @ 106]
03 f78cdcf0 804f4d71 89620bb0 898d4030 00010007 nt!KiInterruptDispatch+0x8d (FPO: [0,2] TrapFrame @ f78cdd14) [d:\srv03rtm\base\ntos\ke\i386\intsup.asm @ 777]
04 f78cdd84 f73a91bb 000010c0 00000001 8948cf14 hal!WRITE_PORT_UCHAR+0x9 (FPO: [2,0,0]) [d:\srv03rtm\base\hals\halx86\i386\xxioacc.asm @ 241]
windbg> .open -a ffffffff80a36611
windbg> .open -a ffffffff804ee4f8
0: kd> r
eax=ffdff994 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee4f8 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
hal!HalRequestSoftwareInterrupt:
804ee4f8 643a0d95000000 cmp cl,byte ptr fs:[95h] fs:0030:00000095=00
0: kd> p
eax=ffdff994 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee4ff esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
hal!HalRequestSoftwareInterrupt+0x7:
804ee4ff 7434 je hal!HalRequestSoftwareInterrupt+0x3d (804ee535) [br=0]
0: kd> p
eax=ffdff994 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee501 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
hal!HalRequestSoftwareInterrupt+0x9:
804ee501 33c0 xor eax,eax
0: kd> p
eax=00000000 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee503 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalRequestSoftwareInterrupt+0xb:
804ee503 8ac1 mov al,cl
0: kd> p
eax=00000002 ebx=ffdff120 ecx=ffdff902 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee505 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalRequestSoftwareInterrupt+0xd:
804ee505 33c9 xor ecx,ecx
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00000000 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee507 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalRequestSoftwareInterrupt+0xf:
804ee507 8a88b8db4e80 mov cl,byte ptr hal!HalpIRQLtoTPR (804edbb8)[eax] ds:0023:804edbba=41
0: kd> x hal!HalpIRQLtoTPR
804edbb8 hal!HalpIRQLtoTPR = unsigned char [] ""
0: kd> db 804edbb8
804edbb8 00 3d 41 41 51 61 71 81-91 a1 b1 b1 b1 b1 b1 b1 .=AAQaq.........
804edbc8 b1 b1 b1 b1 b1 b1 b1 b1-b1 b1 b1 c1 d1 e1 ef ff ................
804edbd8 0f b6 d1 0f b6 8a b8 db-4e 80 a1 80 00 fe ff 89 ........N.......
804edbe8 0d 80 00 fe ff c1 e8 04-0f b6 80 1c a2 4f 80 c3 .............O..
804edbf8 8b 15 80 00 fe ff c7 05-80 00 fe ff 41 00 00 00 ............A...
804edc08 c1 ea 04 0f b6 82 1c a2-4f 80 c3 90 8b 15 80 00 ........O.......
804edc18 fe ff c7 05 80 00 fe ff-c1 00 00 00 c1 ea 04 0f ................
804edc28 b6 82 1c a2 4f 80 c3 90-33 c0 8a c1 8b 0d 80 00 ....O...3.......
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00000041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee50d esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalRequestSoftwareInterrupt+0x15:
804ee50d 81c900000400 or ecx,40000h
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee513 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
hal!HalRequestSoftwareInterrupt+0x1b:
804ee513 9c pushfd
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee514 esp=f78cdcb8 ebp=f78cdcd4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
hal!HalRequestSoftwareInterrupt+0x1c:
804ee514 fa cli
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee515 esp=f78cdcb8 ebp=f78cdcd4 iopl=0 nv up di pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000006
hal!HalRequestSoftwareInterrupt+0x1d:
804ee515 f7050003feff00100000 test dword ptr ds:[0FFFE0300h],1000h ds:0023:fffe0300=000c08e1
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee521 esp=f78cdcb8 ebp=f78cdcd4 iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalRequestSoftwareInterrupt+0x29:
804ee521 890d0003feff mov dword ptr ds:[0FFFE0300h],ecx ds:0023:fffe0300=000c08e1

0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee527 esp=f78cdcb8 ebp=f78cdcd4 iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalRequestSoftwareInterrupt+0x2f:
804ee527 f7050003feff00100000 test dword ptr ds:[0FFFE0300h],1000h ds:0023:fffe0300=000c08e1


0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee533 esp=f78cdcb8 ebp=f78cdcd4 iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalRequestSoftwareInterrupt+0x3b:
804ee533 9d popfd
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=804ee534 esp=f78cdcbc ebp=f78cdcd4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
hal!HalRequestSoftwareInterrupt+0x3c:
804ee534 c3 ret

0: kd> !idt

Dumping IDT: 8003f400

37: 804ed194 hal!PicSpuriousService37
3d: 804ee7d8 hal!HalpApcInterrupt
41: 804ee618 hal!HalpDispatchInterrupt
50: 804ed26c hal!HalpApicRebootService
62: 8949d58c atapi!IdePortInterrupt (KINTERRUPT 8949d550)

63: 895eb044 NDIS!ndisMIsr (KINTERRUPT 895eb008)

73: 896048d4 USBPORT!USBPORT_InterruptService (KINTERRUPT 89604898)

82: 894e9214 atapi!IdePortInterrupt (KINTERRUPT 894e91d8)

83: 89620bec USBPORT!USBPORT_InterruptService (KINTERRUPT 89620bb0)

93: 894fe9b4 i8042prt!I8042KeyboardInterruptService (KINTERRUPT 894fe978)

a3: 89564bbc i8042prt!I8042MouseInterruptService (KINTERRUPT 89564b80)

b1: 899069a4 ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 89906968)

c1: 804ed408 hal!HalpBroadcastCallService
d1: 804ec714 hal!HalpClockInterrupt
e1: 804ed83c hal!HalpIpiHandler
e3: 804ed650 hal!HalpLocalApicErrorService
fd: 804edde8 hal!HalpProfileInterrupt
fe: 804edfa0 hal!HalpPerfInterrupt

0: kd> bp hal!HalpDispatchInterrupt
0: kd> p
eax=00000002 ebx=ffdff120 ecx=00040041 edx=00000002 esi=ffdff980 edi=898d4608
eip=80a36611 esp=f78cdcc0 ebp=f78cdcd4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
nt!KeInsertQueueDpc+0x18d:
80a36611 8b4df8 mov ecx,dword ptr [ebp-8] ss:0010:f78cdccc=ffdff988
0: kd> p
eax=00000002 ebx=ffdff120 ecx=ffdff988 edx=00000002 esi=ffdff980 edi=898d4608
eip=80a36619 esp=f78cdcc0 ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KeInsertQueueDpc+0x195:
80a36619 8a4dff mov cl,byte ptr [ebp-1] ss:0010:f78cdcd3=07
0: kd> p
eax=00000002 ebx=ffdff120 ecx=ffdff907 edx=00000002 esi=ffdff980 edi=898d4608
eip=80a3661c esp=f78cdcc0 ebp=f78cdcd4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KeInsertQueueDpc+0x198:
80a3661c ff150431a080 call dword ptr [nt!_imp_KfLowerIrql (80a03104)] ds:0023:80a03104={hal!KfLowerIrql (804edc30)}
0: kd> t


0: kd> !idt

Dumping IDT: 8003f400

37: 804ed194 hal!PicSpuriousService37
3d: 804ee7d8 hal!HalpApcInterrupt
41: 804ee618 hal!HalpDispatchInterrupt

0: kd> kc
#
00 hal!HalpDispatchInterrupt
WARNING: Frame IP not in any known module. Following frames may be wrong.
01 0x0
02 CLASSPNP!ServiceTransferRequest
03 CLASSPNP!ClassReadWrite
04 nt!IofCallDriver
05 PartMgr!PmReadWrite
06 nt!IofCallDriver
07 ftdisk!FtDiskReadWrite
08 nt!IofCallDriver
09 volsnap!VolSnapWrite
0a nt!IofCallDriver

;
; interrupt vector definitions for assembler
;

ZERO_VECTOR equ 000h ; IRQL 00 placeholder
APIC_SPURIOUS_VECTOR equ 01fh ; Vector used for spurious handler
APC_VECTOR equ 03Dh ; IRQL 01 APC
DPC_VECTOR equ 041h ; IRQL 02 DPC
APIC_REBOOT_VECTOR equ 050h ; Vector used to reboot
DEVICE_LEVEL1 equ 051h
DEVICE_LEVEL2 equ 061h
DEVICE_LEVEL3 equ 071h
DEVICE_LEVEL4 equ 081h
DEVICE_LEVEL5 equ 091h
DEVICE_LEVEL6 equ 0A1h
DEVICE_LEVEL7 equ 0B1h
APIC_GENERIC_VECTOR equ 0C1h ; IRQL 27 broadcast function call
APIC_CLOCK_VECTOR equ 0D1h ; IRQL 28 APIC INTI0 - CLOCK2_LEVEL

cPublicProc _HalpDispatchInterrupt ,0

;
; Save machine state on trap frame
;

ENTER_INTERRUPT hdpi_a, hdpi_t

mov eax, DPC_VECTOR

mov esi, dword ptr APIC[LU_TPR] ; get the old TPR
mov dword ptr APIC[LU_TPR], eax ; set the TPR

sti ; and allow interrupts

APICFIX edx

mov dword ptr APIC[LU_EOI], 0 ; send EOI to APIC local unit
APICFIX edx

;
; Go do Dispatch Interrupt processing
;

di10: stdCall _KiDispatchInterrupt


对应的汇编部分:省略:ENTER_INTERRUPT hdpi_a, hdpi_t


0: kd> p
eax=00000000 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=8948ccd0 edi=804edc60
eip=804ee6c4 esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalpDispatchInterrupt+0xac:
804ee6c4 b841000000 mov eax,41h
0: kd> p
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=8948ccd0 edi=804edc60
eip=804ee6c9 esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalpDispatchInterrupt+0xb1:
804ee6c9 8b358000feff mov esi,dword ptr ds:[0FFFE0080h] ds:0023:fffe0080=000000ff
0: kd> p
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=00000000 edi=804edc60
eip=804ee6cf esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalpDispatchInterrupt+0xb7:
804ee6cf a38000feff mov dword ptr ds:[FFFE0080h],eax ds:0023:fffe0080=000000ff
0: kd> p
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=00000000 edi=804edc60
eip=804ee6d4 esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
hal!HalpDispatchInterrupt+0xbc:
804ee6d4 fb sti
0: kd> p
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=00000000 edi=804edc60
eip=804ee6d5 esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalpDispatchInterrupt+0xbd:
804ee6d5 c705b000feff00000000 mov dword ptr ds:[0FFFE00B0h],0 ds:0023:fffe00b0=00000000
0: kd> p
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=00000000 edi=804edc60
eip=804ee6df esp=f78cdf6c ebp=f78cdf6c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalpDispatchInterrupt+0xc7:
804ee6df ff153cb04e80 call dword ptr [hal!_imp__KiDispatchInterrupt (804eb03c)] ds:0023:804eb03c={nt!KiDispatchInterrupt (80b00720)}
0: kd> t
eax=00000041 ebx=f78cdff8 ecx=8999e620 edx=00001002 esi=00000000 edi=804edc60
eip=80b00720 esp=f78cdf68 ebp=f78cdf6c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KiDispatchInterrupt:
80b00720 648b1d1c000000 mov ebx,dword ptr fs:[1Ch] fs:0030:0000001c=ffdff000

0: kd> !irql
Debugger saved IRQL for processor 0x0 -- 2 (DISPATCH_LEVEL)


KIRQL
FORCEINLINE
KeGetCurrentIrql (
VOID
)
{
ULONG tprValue;
KIRQL currentIrql;

tprValue = *APIC_TPR;
currentIrql = HalpVectorToIRQL[ tprValue / 16 ];
return currentIrql;
}

0x41
100 0001
4

0: kd> x hal!HalpVectorToIRQL
804fa21c hal!HalpVectorToIRQL = unsigned char [] ""
0: kd> db 804fa21c
804fa21c 00 ff ff 0102ff 05 06-07 08 09 0a 1b 1c 1d 1e ................
804fa22c 00 00 00 00 00 00 00 00-08 10 00 00 00 00 00 00 ................
804fa23c 00 00 00 00 00 00 00 00-00 00 80 00 00 00 00 00 ................


00 0
ff 1
ff 2
01 3
02 4

0: kd> x hal!HalpIRQLTo*
804edbb8 hal!HalpIRQLtoTPR = unsigned char [] ""
0: kd> db 804edbb8
804edbb8 00 3d4141 51 61 71 81-91 a1 b1 b1 b1 b1 b1 b1 .=AAQaq.........
804edbc8 b1 b1 b1 b1 b1 b1 b1 b1-b1 b1 b1 c1 d1 e1 ef ff ................
804edbd8 0f b6 d1 0f b6 8a b8 db-4e 80 a1 80 00 fe ff 89 ........N.......
804edbe8 0d 80 00 fe ff c1 e8 04-0f b6 80 1c a2 4f 80 c3 .............O..
804edbf8 8b 15 80 00 fe ff c7 05-80 00 fe ff 41 00 00 00 ............A...


0: kd> !idt

Dumping IDT: 8003f400

37: 804ed194 hal!PicSpuriousService37
3d:804ee7d8 hal!HalpApcInterrupt APC对应的中断向量号为0x3d
41:804ee618 hal!HalpDispatchInterrupt DPC对应的中断向量号为0x41
50: 804ed26c hal!HalpApicRebootService
62: 8949d58c atapi!IdePortInterrupt (KINTERRUPT 8949d550)

63: 895eb044 NDIS!ndisMIsr (KINTERRUPT 895eb008)

73: 896048d4 USBPORT!USBPORT_InterruptService (KINTERRUPT 89604898)

0: kd> kc
#
00 nt!KiDispatchInterrupt
01 hal!HalpDispatchInterrupt

02 hal!KfLowerIrql
03 nt!IoStartPacket
04 atapi!IdePortDispatch
05 nt!IofCallDriver
06 CLASSPNP!SubmitTransferPacket
07 CLASSPNP!ServiceTransferRequest
08 CLASSPNP!ClassReadWrite
09 nt!IofCallDriver
0a PartMgr!PmReadWrite
0b nt!IofCallDriver
0c ftdisk!FtDiskReadWrite
0d nt!IofCallDriver
0e volsnap!VolSnapWrite
0f nt!IofCallDriver
10 Ntfs!NtfsSingleAsync
11 Ntfs!NtfsNonCachedIo
12 Ntfs!NtfsCommonWrite
13 Ntfs!NtfsFsdWrite
14 nt!IofCallDriver
15 nt!IoSynchronousPageWrite
16 nt!MiFlushSectionInternal
17 nt!MmFlushSection
18 nt!CcFlushCache
19 Ntfs!NtfsCheckpointVolume
1a Ntfs!NtfsCheckpointAllVolumes
1b nt!ExpWorkerThread
1c nt!PspSystemThreadStartup
1d nt!KiThreadStartup

http://www.cnnetsun.cn/news/90219.html

相关文章:

  • IP6808至为芯支持PD快充输入的15W无线充电方案SOC芯片
  • 笔记本重装系统超详细指南(附系统备份还原技巧,告别电脑店花费)
  • 大型地源热泵机组多高
  • 别墅供暖地源热泵
  • Traefik:为云原生而生的自动化反向代理
  • P1043 [NOIP 2003 普及组] 数字游戏
  • Web安全攻防学习图谱:90天从网安小白到漏洞猎人(超详细),看这一篇就够了!
  • 【Docker镜像优化黄金法则】:让边缘Agent更小更快更安全
  • 前端vue3 web端中实现拖拽功能实现列表排序
  • 【音视频开发必看】Dify 1.7.0音频转换避坑指南:5大常见错误及修复方案
  • VSCode+PlatfoemIO+ESP32-Cam + MB烧录器 入门测试
  • 【加密PDF解析避坑指南】:Dify错误处理的5大核心策略与实战技巧
  • 性能测试入门:使用 Playwright 测量关键 Web 性能指标
  • 从入门到精通:R语言极值分布拟合在气象数据中的4个关键步骤
  • 仅1%人掌握的建模技术:R语言金融相关性矩阵稀疏化处理实战
  • 超越传统PLM理念,定义行业新标准:全星研发项目管理APQP软件系统
  • 【安全专家亲授】私有化Dify的SSL配置秘诀:保障数据传输不被窃取
  • Vue3+JS 高级前端面试题
  • 海康威视智能工厂,是如何走向“领航”的?
  • 《深入昇腾底层:Ascend C 编程模型与高性能算子开发实战》
  • 实战 Ascend C:从零实现高性能自定义算子
  • 掌握这3种R包,轻松完成空间转录组细胞轨迹建模!
  • 【Dify Tesseract字体适配终极指南】:破解OCR识别失败的9大字体陷阱
  • Docker + 智能Agent日志管理新思路(仅限高级工程师掌握的3种架构模式)
  • 揭秘空间转录组细胞类型注释:如何用R语言精准识别每一种细胞
  • [吾爱大神原创工具] 电话号码过滤,号码排序-乱序,清除非手机号,消重,导出(依旧颜值高)
  • Dify平台Agent版本管理全解析:从入门到高可用架构设计
  • 为什么90%的生物信息分析师都在用R做RNA结构研究?真相令人震惊
  • 【稀缺资源】Dify + Tesseract 5.3多语言支持实现路径首次公开
  • 还在手动写Dify用例?Agent驱动自动化测试已成主流!