Npfs!NpFsdCreate函數分析之從NpCreateClientEnd函數分析到Npfs!NpSetConnectedPipeState


第一部分:

1: kd> g
Breakpoint 5 hit
Npfs!NpFsdCreate:
baaecba6 55????????????? push??? ebp
1: kd> kc
?#
00 Npfs!NpFsdCreate
01 nt!IofCallDriver
02 nt!IopParseDevice
03 nt!ObpLookupObjectName
04 nt!ObOpenObjectByName
05 nt!IopCreateFile
06 nt!IoCreateFile
07 nt!NtCreateFile
08 nt!_KiSystemService
09 SharedUserData!SystemCallStub
0a ntdll!NtCreateFile
0b kernel32!CreateFileW
0c RPCRT4!NMP_Open
0d RPCRT4!OSF_CCONNECTION::TransOpen
0e RPCRT4!OSF_CCONNECTION::OpenConnectionAndBind
0f RPCRT4!OSF_CCALL::BindToServer
10 RPCRT4!OSF_BINDING_HANDLE::AllocateCCall
11 RPCRT4!OSF_BINDING_HANDLE::NegotiateTransferSyntax
12 RPCRT4!I_RpcGetBufferWithObject
13 RPCRT4!I_RpcGetBuffer
14 RPCRT4!NdrGetBuffer
15 RPCRT4!NdrClientCall2
16 ADVAPI32!LsarOpenPolicy2
17 ADVAPI32!LsaOpenPolicy

1: kd> dv
?NpfsDeviceObject = 0x895b5038
????????????? Irp = 0x89544d30
???? DeferredList = struct _LIST_ENTRY [ 0xbab18b38 - 0x30 ]
RelatedFileObject = 0x00000000
????????????? Ccb = 0xbab18a4c
????? RelatedType = 0x89 ''
??? RemainingPart = ""
???????? FileName = ""
??????????? IrpSp = 0x00000000
????????????? Fcb = 0x00000008
??? DesiredAccess = 0xbaaecba7


1: kd> dt io_stack_location 0x89544d30+70
GDI32!IO_STACK_LOCATION
?? +0x000 MajorFunction??? : 0 ''
?? +0x001 MinorFunction??? : 0 ''
?? +0x002 Flags??????????? : 0 ''
?? +0x003 Control????????? : 0 ''
?? +0x004 Parameters?????? : __unnamed
?? +0x014 DeviceObject???? : 0x895b5038 _DEVICE_OBJECT
?? +0x018 FileObject?????? : 0x8978b348 _FILE_OBJECT?? ??? ?+0x018 FileObject?????? : 0x8978b348
?? +0x01c CompletionRoutine : (null)
?? +0x020 Context????????? : (null)
1: kd> dx -id 0,0,89429250 -r1 ((GDI32!_FILE_OBJECT *)0x8978b348)
((GDI32!_FILE_OBJECT *)0x8978b348)???????????????? : 0x8978b348 [Type: _FILE_OBJECT *]
??? [+0x000] Type???????????? : 5 [Type: short]
??? [+0x002] Size???????????? : 112 [Type: short]
??? [+0x004] DeviceObject???? : 0x895b5038 : Device for "\FileSystem\Npfs" [Type: _DEVICE_OBJECT *]
??? [+0x008] Vpb????????????? : 0x0 [Type: _VPB *]
??? [+0x00c] FsContext??????? : 0x0 [Type: void *]?? ??? ??? ? ?? ?//FsContext??????? : 0x0
??? [+0x010] FsContext2?????? : 0x0 [Type: void *]
??? [+0x014] SectionObjectPointer : 0x0 [Type: _SECTION_OBJECT_POINTERS *]
??? [+0x018] PrivateCacheMap? : 0x0 [Type: void *]
??? [+0x01c] FinalStatus????? : 0 [Type: long]
??? [+0x020] RelatedFileObject : 0x0 [Type: _FILE_OBJECT *]?? ??? ??? ?//RelatedFileObject : 0x0
??? [+0x024] LockOperation??? : 0x0 [Type: unsigned char]
??? [+0x025] DeletePending??? : 0x0 [Type: unsigned char]
??? [+0x026] ReadAccess?????? : 0x0 [Type: unsigned char]
??? [+0x027] WriteAccess????? : 0x0 [Type: unsigned char]
??? [+0x028] DeleteAccess???? : 0x0 [Type: unsigned char]
??? [+0x029] SharedRead?????? : 0x0 [Type: unsigned char]
??? [+0x02a] SharedWrite????? : 0x0 [Type: unsigned char]
??? [+0x02b] SharedDelete???? : 0x0 [Type: unsigned char]
??? [+0x02c] Flags??????????? : 0x0 [Type: unsigned long]
??? [+0x030] FileName???????? : "\lsarpc" [Type: _UNICODE_STRING]?? ??? ? //FileName???????? : "\lsarpc"
??? [+0x038] CurrentByteOffset : {0} [Type: _LARGE_INTEGER]
??? [+0x040] Waiters????????? : 0x0 [Type: unsigned long]
??? [+0x044] Busy???????????? : 0x0 [Type: unsigned long]
??? [+0x048] LastLock???????? : 0x0 [Type: void *]
??? [+0x04c] Lock???????????? [Type: _KEVENT]
??? [+0x05c] Event??????????? [Type: _KEVENT]
??? [+0x06c] CompletionContext : 0x0 [Type: _IO_COMPLETION_CONTEXT *]

??? if (RelatedFileObject != NULL) {?? ??? ??? ??? ?不符合
??????? RelatedType = NpDecodeFileObject (RelatedFileObject,
????????????????????????????????????????? &Fcb,
????????????????????????????????????????? &Ccb,
????????????????????????????????????????? NULL);
??? }


第二部分:??? Status = NpTranslateAlias (&FileName);

FileName????????? = *(PUNICODE_STRING)&IrpSp->FileObject->FileName;

??? [+0x030] FileName???????? : "\lsarpc" [Type: _UNICODE_STRING]


1: kd> x npfs!NpAliasListByLength
baaeb094????????? Npfs!NpAliasListByLength = struct _SINGLE_LIST_ENTRY [5]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_SINGLE_LIST_ENTRY (*)[5])0xbaaeb094))
(*((Npfs!_SINGLE_LIST_ENTRY (*)[5])0xbaaeb094))???????????????? [Type: _SINGLE_LIST_ENTRY [5]]
??? [0]????????????? [Type: _SINGLE_LIST_ENTRY]
??? [1]????????????? [Type: _SINGLE_LIST_ENTRY]
??? [2]????????????? [Type: _SINGLE_LIST_ENTRY]
??? [3]????????????? [Type: _SINGLE_LIST_ENTRY]
??? [4]????????????? [Type: _SINGLE_LIST_ENTRY]

1: kd> x npfs!NpAliasListByLength
baaeb094????????? Npfs!NpAliasListByLength = struct _SINGLE_LIST_ENTRY [5]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_SINGLE_LIST_ENTRY (*)[5])0xbaaeb094))
(*((Npfs!_SINGLE_LIST_ENTRY (*)[5])0xbaaeb094))???????????????? [Type: _SINGLE_LIST_ENTRY [5]]

??? [2]????????????? [Type: _SINGLE_LIST_ENTRY]

1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_SINGLE_LIST_ENTRY *)0xbaaeb09c))
(*((Npfs!_SINGLE_LIST_ENTRY *)0xbaaeb09c))???????????????? [Type: _SINGLE_LIST_ENTRY]
??? [+0x000] Next???????????? : 0x8978fba8 [Type: _SINGLE_LIST_ENTRY *]
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_SINGLE_LIST_ENTRY *)0x8978fba8)
((Npfs!_SINGLE_LIST_ENTRY *)0x8978fba8)???????????????? : 0x8978fba8 [Type: _SINGLE_LIST_ENTRY *]
??? [+0x000] Next???????????? : 0x8978fbd8 [Type: _SINGLE_LIST_ENTRY *]
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_SINGLE_LIST_ENTRY *)0x8978fbd8)
((Npfs!_SINGLE_LIST_ENTRY *)0x8978fbd8)???????????????? : 0x8978fbd8 [Type: _SINGLE_LIST_ENTRY *]
??? [+0x000] Next???????????? : 0x0 [Type: _SINGLE_LIST_ENTRY *]

1: kd> dt npfs!_ALIAS 0x8978fba8
?? +0x000 ListEntry??????? : _SINGLE_LIST_ENTRY
?? +0x004 TranslationString : 0x8978fb78 _UNICODE_STRING "\LSASS"
?? +0x008 AliasString????? : _UNICODE_STRING "\LSARPC"

第三部分: Fcb = NpFindPrefix (&FileName, CaseInsensitive, &RemainingPart);

PFCB
NpFindPrefix (
??? IN PUNICODE_STRING String,
??? IN BOOLEAN CaseInsensitive,
??? OUT PUNICODE_STRING RemainingPart
??? )
{
。。。。。。
??? Fcb = CONTAINING_RECORD( PrefixTableEntry, FCB, PrefixTableEntry );


1: kd> x npfs!NpVcb
baaeb090????????? Npfs!NpVcb = 0x895b50f0
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_VCB *)0x895b50f0)
((Npfs!_VCB *)0x895b50f0)???????????????? : 0x895b50f0 [Type: _VCB *]
??? [+0x000] NodeTypeCode???? : 0x1 [Type: unsigned char]
??? [+0x004] RootDcb????????? : 0xe14e3338 [Type: _FCB *]
??? [+0x008] OpenCount??????? : 0x0 [Type: unsigned long]
??? [+0x00c] PrefixTable????? [Type: _UNICODE_PREFIX_TABLE]
??? [+0x018] Resource???????? [Type: _ERESOURCE]
??? [+0x050] EventTable?????? [Type: _EVENT_TABLE]
??? [+0x078] WaitQueue??????? [Type: _WAIT_QUEUE]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_UNICODE_PREFIX_TABLE *)0x895b50fc))
(*((Npfs!_UNICODE_PREFIX_TABLE *)0x895b50fc))???????????????? [Type: _UNICODE_PREFIX_TABLE]
??? [+0x000] NodeTypeCode???? : 2048 [Type: short]
??? [+0x002] NameLength?????? : 0 [Type: short]
??? [+0x004] NextPrefixTree?? : 0xe15ec3e8 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x008] LastNextEntry??? : 0x0 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_UNICODE_PREFIX_TABLE_ENTRY *)0xe15ec3e8)
((Npfs!_UNICODE_PREFIX_TABLE_ENTRY *)0xe15ec3e8)???????????????? : 0xe15ec3e8 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x000] NodeTypeCode???? : 2049 [Type: short]
??? [+0x002] NameLength?????? : 3 [Type: short]
??? [+0x004] NextPrefixTree?? : 0xe1636b80 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x008] CaseMatch??????? : 0xe15ec3e8 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x00c] Links??????????? [Type: _RTL_SPLAY_LINKS]
??? [+0x018] Prefix?????????? : 0xe15ec3d8 : "\TerminalServer\AutoReconnect" [Type: _UNICODE_STRING *]
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_UNICODE_PREFIX_TABLE_ENTRY *)0xe1636b80)
((Npfs!_UNICODE_PREFIX_TABLE_ENTRY *)0xe1636b80)???????????????? : 0xe1636b80 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x000] NodeTypeCode???? : 2049 [Type: short]
??? [+0x002] NameLength?????? : 2 [Type: short]
??? [+0x004] NextPrefixTree?? : 0xe14e3380 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x008] CaseMatch??????? : 0xe1636b80 [Type: _UNICODE_PREFIX_TABLE_ENTRY *]
??? [+0x00c] Links??????????? [Type: _RTL_SPLAY_LINKS]
??? [+0x018] Prefix?????????? : 0xe1636b70 : "\lsass" [Type: _UNICODE_STRING *]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_RTL_SPLAY_LINKS *)0xe1636b8c))
(*((Npfs!_RTL_SPLAY_LINKS *)0xe1636b8c))???????????????? [Type: _RTL_SPLAY_LINKS]
??? [+0x000] Parent?????????? : 0xe1636b8c [Type: _RTL_SPLAY_LINKS *]
??? [+0x004] LeftChild??????? : 0xe16bf334 [Type: _RTL_SPLAY_LINKS *]
??? [+0x008] RightChild?????? : 0xe13ee5f4 [Type: _RTL_SPLAY_LINKS *]

1: kd> dt Npfs!_FCB 0xe1636b80-48
?? +0x000 NodeTypeCode???? : 0x4 ''
?? +0x004 ParentDcbLinks?? : _LIST_ENTRY [ 0xe13ee5a4 - 0xe16bf2e4 ]
?? +0x00c ParentDcb??????? : 0xe14e3338 _FCB
?? +0x010 Vcb????????????? : (null)
?? +0x014 OpenCount??????? : 2
?? +0x018 ServerOpenCount? : 2
?? +0x01c SecurityDescriptor : 0xe13e02e8 Void
?? +0x020 Specific???????? : __unnamed
?? +0x038 FullFileName???? : _UNICODE_STRING "\lsass"
?? +0x040 LastFileName???? : _UNICODE_STRING "lsass"
?? +0x048 PrefixTableEntry : _UNICODE_PREFIX_TABLE_ENTRY

第四部分:NpCreateClientEnd

???? if (Fcb->NodeTypeCode == NPFS_NTC_FCB) {

??????????? DebugTrace(0, Dbg, "Create client end named pipe, Fcb = %08lx\n", Fcb );

??????????? //
??????????? //? If the server has no handles open, then pretend that
??????????? //? the pipe name doesn't exist.
??????????? //

??????????? if (Fcb->ServerOpenCount == 0) {

??????????????? Status = STATUS_OBJECT_NAME_NOT_FOUND;

??????????? } else {

??????????????? Irp->IoStatus = NpCreateClientEnd (Fcb,
?????????????????????????????????????????????????? FileObject,
?????????????????????????????????????????????????? DesiredAccess,
?????????????????????????????????????????????????? IrpSp->Parameters.Create.SecurityContext->SecurityQos,
?????????????????????????????????????????????????? IrpSp->Parameters.Create.SecurityContext->AccessState,
?????????????????????????????????????????????????? (KPROCESSOR_MODE)(FlagOn(IrpSp->Flags, SL_FORCE_ACCESS_CHECK) ?
???????????????????????????????????????????????????????????????? UserMode : Irp->RequestorMode),
?????????????????????????????????????????????????? Irp->Tail.Overlay.Thread,
?????????????????????????????????????????????????? &DeferredList);


1: kd> t
Breakpoint 0 hit
Npfs!NpCreateClientEnd:
baaec874 55????????????? push??? ebp
1: kd> kc
?#
00 Npfs!NpCreateClientEnd
01 Npfs!NpFsdCreate
02 nt!IofCallDriver
03 nt!IopParseDevice
04 nt!ObpLookupObjectName
05 nt!ObOpenObjectByName
06 nt!IopCreateFile
07 nt!IoCreateFile
08 nt!NtCreateFile
09 nt!_KiSystemService
0a SharedUserData!SystemCallStub
0b ntdll!NtCreateFile
0c kernel32!CreateFileW
0d RPCRT4!NMP_Open
0e RPCRT4!OSF_CCONNECTION::TransOpen
0f RPCRT4!OSF_CCONNECTION::OpenConnectionAndBind
10 RPCRT4!OSF_CCALL::BindToServer
11 RPCRT4!OSF_BINDING_HANDLE::AllocateCCall
12 RPCRT4!OSF_BINDING_HANDLE::NegotiateTransferSyntax
13 RPCRT4!I_RpcGetBufferWithObject
14 RPCRT4!I_RpcGetBuffer
15 RPCRT4!NdrGetBuffer
16 RPCRT4!NdrClientCall2
17 ADVAPI32!LsarOpenPolicy2
18 ADVAPI32!LsaOpenPolicy
19 services!ScOpenPolicy
1a services!ScGetAccountDomainInfo
1b services!ScInitServiceAccount
1c services!SvcctrlMain
1d services!main
1e services!mainCRTStartup
1f kernel32!BaseProcessStart


1: kd> dv
??????????? Fcb = 0xe1636b38
???? FileObject = 0x8978b348
? DesiredAccess = 0x12019f
??? SecurityQos = 0x89878708
??? AccessState = 0x89878670
? RequestorMode = 0n1 ''
???? UserThread = 0x8961a268
?? DeferredList = 0xbab18a0c [ 0xbab18a0c - 0xbab18a0c ]
???? Privileges = 0x00000008
?????????? Iosb = struct _IO_STATUS_BLOCK
?????????? Name = ""
? AccessGranted = 0x70 'p'
? GrantedAccess = 0xe1636b38
1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_FCB *)0xe1636b38)
((Npfs!_FCB *)0xe1636b38)???????????????? : 0xe1636b38 [Type: _FCB *]
??? [+0x000] NodeTypeCode???? : 0x4 [Type: unsigned char]
??? [+0x004] ParentDcbLinks?? [Type: _LIST_ENTRY]
??? [+0x00c] ParentDcb??????? : 0xe14e3338 [Type: _FCB *]
??? [+0x010] Vcb????????????? : 0x0 [Type: _VCB *]
??? [+0x014] OpenCount??????? : 0x2 [Type: unsigned long]
??? [+0x018] ServerOpenCount? : 0x2 [Type: unsigned long]
??? [+0x01c] SecurityDescriptor : 0xe13e02e8 [Type: void *]
??? [+0x020] Specific???????? [Type: __unnamed]
??? [+0x038] FullFileName???? : "\lsass" [Type: _UNICODE_STRING]
??? [+0x040] LastFileName???? : "lsass" [Type: _UNICODE_STRING]
??? [+0x048] PrefixTableEntry [Type: _UNICODE_PREFIX_TABLE_ENTRY]


?? +0x020 Specific???????? : __unnamed
????? +0x000 Dcb????????????? : __unnamed
???????? +0x000 NotifyFullQueue? : _LIST_ENTRY
???????? +0x008 NotifyPartialQueue : _LIST_ENTRY
???????? +0x010 ParentDcbQueue?? : _LIST_ENTRY
????? +0x000 Fcb????????????? : __unnamed
???????? +0x000 MaximumInstances : Uint4B
???????? +0x004 NamedPipeConfiguration : Pos 0, 16 Bits
???????? +0x004 NamedPipeType??? : Pos 16, 16 Bits
???????? +0x008 DefaultTimeOut?? : _LARGE_INTEGER
???????? +0x010 CcbQueue???????? : _LIST_ENTRY

??? Links = Fcb->Specific.Fcb.CcbQueue.Flink;

??? while (1) {

??????? if (Links == &Fcb->Specific.Fcb.CcbQueue) {
??????????? Iosb.Status = STATUS_PIPE_NOT_AVAILABLE;
??????????? return Iosb;
??????? }

??????? Ccb = CONTAINING_RECORD (Links, CCB, CcbLinks);

??????? if (Ccb->NamedPipeState == FILE_PIPE_LISTENING_STATE) {
??????????? break;
??????? }

1: kd> dd 0xe1636b38
e1636b38? 00000004 e13ee5a4 e16bf2e4 e14e3338
e1636b48? 00000000 00000002 00000002 e13e02e8
e1636b58? ffffffff 00010002 fff85ee0 ffffffff
e1636b68? e1636320 e13ed638 000e000c 89503220
e1636b78? 000c000a 89503222 00020801 e14e3380
e1636b88? e1636b80 e1636b8c e16bf334 e13ee5f4
e1636b98? e1636b70 00000000 624b7cb7 898d9250
e1636ba8? 0c0e060f 46506343 0044005c 00760065


1: kd> dt npfs!ccb? e1636320-10
?? +0x000 NodeTypeCode???? : 0x6 ''
?? +0x001 NamedPipeState?? : 0x2 ''
?? +0x002 ReadCompletionMode : [2] __unnamed
?? +0x004 SecurityQos????? : _SECURITY_QUALITY_OF_SERVICE
?? +0x010 CcbLinks???????? : _LIST_ENTRY [ 0xe13ed638 - 0xe1636b68 ]
?? +0x018 Fcb????????????? : 0xe1636b38 _FCB
?? +0x01c FileObject?????? : [2] (null)
?? +0x024 ClientProcess??? : (null)
?? +0x028 ClientInfo?????? : (null)
?? +0x02c NonpagedCcb????? : 0x8947c6a0 _NONPAGED_CCB
?? +0x030 DataQueue??????? : [2] _DATA_QUEUE
?? +0x070 SecurityClientContext : (null)
?? +0x074 ListeningQueue?? : _LIST_ENTRY [ 0x898442e8 - 0x898442e8 ]

1: kd> dt _irp 0x898442e8-58
GDI32!_IRP
?? +0x000 Type???????????? : 0n6
?? +0x002 Size???????????? : 0x94
?? +0x004 MdlAddress?????? : (null)
?? +0x008 Flags??????????? : 0x800
?? +0x00c AssociatedIrp??? : __unnamed
?? +0x010 ThreadListEntry? : _LIST_ENTRY [ 0x89848480 - 0x899bf710 ]
?? +0x018 IoStatus???????? : _IO_STATUS_BLOCK
?? +0x020 RequestorMode??? : 1 ''
?? +0x021 PendingReturned? : 0 ''
?? +0x022 StackCount?????? : 1 ''
?? +0x023 CurrentLocation? : 1 ''
?? +0x024 Cancel?????????? : 0 ''
?? +0x025 CancelIrql?????? : 0 ''
?? +0x026 ApcEnvironment?? : 0 ''
?? +0x027 AllocationFlags? : 0xc ''
?? +0x028 UserIosb???????? : 0x00ae02b8 _IO_STATUS_BLOCK
?? +0x02c UserEvent??????? : (null)
?? +0x030 Overlay????????? : __unnamed
?? +0x038 CancelRoutine??? : (null)
?? +0x03c UserBuffer?????? : (null)
?? +0x040 Tail???????????? : __unnamed


?? +0x040 Tail???????????? : __unnamed
????? +0x000 Overlay????????? : __unnamed
???????? +0x000 DeviceQueueEntry : _KDEVICE_QUEUE_ENTRY
???????? +0x000 DriverContext??? : [4] Ptr32 Void
???????? +0x010 Thread?????????? : Ptr32 _ETHREAD
???????? +0x014 AuxiliaryBuffer? : Ptr32 Char
???????? +0x018 ListEntry??????? : _LIST_ENTRY
???????? +0x020 CurrentStackLocation : Ptr32 _IO_STACK_LOCATION
???????? +0x020 PacketType?????? : Uint4B
???????? +0x024 OriginalFileObject : Ptr32 _FILE_OBJECT


1: kd> dd 0x898442e8-58
89844290? 00940006 00000000 00000800 00000000
898442a0? 89848480 899bf710 00000000 00000000
898442b0? 01010001 0c000000 00ae02b8 00000000
898442c0? 00000000 00ae02b8 00000000 00000000
898442d0? 00000000 00000000 00000000 00000000
898442e0? 89848268 00000000 bab18a0c bab18a0c
898442f0? 89844300 8946f068


??? if (!NT_SUCCESS(Iosb.Status = NpSetConnectedPipeState (Ccb,
?????????????????????????????????????????????????????????? FileObject,
?????????????????????????????????????????????????????????? DeferredList))) {

??? //
??? //? And complete any listening waiters
??? //

??? while (!IsListEmpty (&Ccb->ListeningQueue)) {
??????? PLIST_ENTRY Links;

??????? Links = RemoveHeadList (&Ccb->ListeningQueue);

??????? LocalIrp = CONTAINING_RECORD (Links, IRP, Tail.Overlay.ListEntry);

??????? //
??????? // Remove the cancel routine and detect if cancel is active. If it is leave the IRP to the
??????? // cancel routine.

??????? if (IoSetCancelRoutine (LocalIrp, NULL) != NULL) {
??????????? NpDeferredCompleteRequest (LocalIrp, STATUS_SUCCESS, DeferredList);
??????? } else {
??????????? InitializeListHead (&LocalIrp->Tail.Overlay.ListEntry);
??????? }
??? }

1: kd> gu
Breakpoint 9 hit
Npfs!NpSetConnectedPipeState:
baaf38f2 55????????????? push??? ebp
1: kd> dv
???????????? Ccb = 0xe1636310
ClientFileObject = 0x8978b348
??? DeferredList = 0xbab18a0c [ 0xbab18a0c - 0xbab18a0c ]


1: kd> dv
??????????? Fcb = 0x0012019b
???? FileObject = 0x8978b348
? DesiredAccess = 0x12019f
??? SecurityQos = 0x89878708
??? AccessState = 0x89878601
? RequestorMode = 0n1 ''
???? UserThread = 0x8961a268
?? DeferredList = 0xbab18a0c [ 0x898442e8 - 0x898442e8 ]

#define FILE_PIPE_CLIENT_END??????????? 0x00000000
#define FILE_PIPE_SERVER_END??????????? 0x00000001

??? Ccb->FileObject[FILE_PIPE_CLIENT_END] = ClientFileObject;

??? NpSetFileObject (ClientFileObject,
???????????????????? Ccb,
???????????????????? NonpagedCcb,
???????????????????? FILE_PIPE_CLIENT_END);
?

1: kd> dx -id 0,0,89429250 -r1 ((Npfs!_CCB *)0xe1636310)
((Npfs!_CCB *)0xe1636310)???????????????? : 0xe1636310 [Type: _CCB *]
??? [+0x000] NodeTypeCode???? : 0x6 [Type: unsigned char]
??? [+0x001] NamedPipeState?? : 0x3 [Type: unsigned char]
??? [+0x002] ReadCompletionMode [Type: __unnamed [2]]
??? [+0x004] SecurityQos????? [Type: _SECURITY_QUALITY_OF_SERVICE]
??? [+0x010] CcbLinks???????? [Type: _LIST_ENTRY]
??? [+0x018] Fcb????????????? : 0xe1636b38 [Type: _FCB *]
??? [+0x01c] FileObject?????? [Type: _FILE_OBJECT * [2]]
??? [+0x024] ClientProcess??? : 0x89429250 [Type: void *]
??? [+0x028] ClientInfo?????? : 0x0 [Type: _CLIENT_INFO *]
??? [+0x02c] NonpagedCcb????? : 0x8947c6a0 [Type: _NONPAGED_CCB *]
??? [+0x030] DataQueue??????? [Type: _DATA_QUEUE [2]]
??? [+0x070] SecurityClientContext : 0x0 [Type: _SECURITY_CLIENT_CONTEXT *]
??? [+0x074] ListeningQueue?? [Type: _LIST_ENTRY]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_FILE_OBJECT * (*)[2])0xe163632c))
(*((Npfs!_FILE_OBJECT * (*)[2])0xe163632c))???????????????? [Type: _FILE_OBJECT * [2]]
??? [0]????????????? :
0x8978b348 [Type: _FILE_OBJECT *]
??? [1]????????????? : 0x8946f068 [Type: _FILE_OBJECT *]

??? Ccb->ClientInfo = NULL;
??? Ccb->ClientProcess = IoThreadToProcess (UserThread);

??? //
??? //? And set our return status
??? //

??? Iosb.Status = STATUS_SUCCESS;
??? Iosb.Information = FILE_OPENED;

//
// Define the I/O status information return values for NtCreateFile/NtOpenFile
//

#define FILE_SUPERSEDED???????????????? 0x00000000
#define FILE_OPENED???????????????????? 0x00000001


1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_IO_STATUS_BLOCK *)0xbab189c0))
(*((Npfs!_IO_STATUS_BLOCK *)0xbab189c0))???????????????? [Type: _IO_STATUS_BLOCK]
??? [+0x000] Status?????????? : 1 [Type: long]
??? [+0x000] Pointer????????? : 0x1 [Type: void *]
??? [+0x004] Information????? : 0xe1636384 [Type: unsigned long]


??? NpCompleteDeferredIrps (&DeferredList);

??? FsRtlExitFileSystem();

??? NpCompleteRequest (Irp, Status);

??? return Status;
}

VOID
FORCEINLINE
NpCompleteDeferredIrps (
??? IN PLIST_ENTRY DeferredList
??? )
{
??? PIRP Irp;
??? PLIST_ENTRY Entry, NextEntry;

??? Entry = DeferredList->Flink;
??? while (Entry != DeferredList) {
??????? Irp = CONTAINING_RECORD (Entry, IRP, Tail.Overlay.ListEntry);
??????? NextEntry = Entry->Flink;
??????? NpCompleteRequest (Irp, Irp->IoStatus.Status);
??????? Entry = NextEntry;
??? }
}


#define NpCompleteRequest(IRP,STATUS) FsRtlCompleteRequest( (IRP), (STATUS) );

#define FsRtlCompleteRequest(IRP,STATUS) {???????? \
??? (IRP)->IoStatus.Status = (STATUS);???????????? \
??? IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
}


1: kd> p
Npfs!NpFsdCreate+0x23e:
baaecde4 8b18??????????? mov???? ebx,dword ptr [eax]
1: kd> p
Npfs!NpFsdCreate+0x240:
baaecde6 8d48a8????????? lea???? ecx,[eax-58h]
1: kd> r
eax=898442e8


1: kd> p
Npfs!NpFsdCreate+0x245:
baaecdeb ff1520a0aeba??? call??? dword ptr [Npfs!_imp_IofCompleteRequest (baaea020)]
1: kd> t
nt!IofCompleteRequest:
80a241a8 ff250488b180??? jmp???? dword ptr [nt!pIofCompleteRequest (80b18804)]
1: kd> kc
?#
00 nt!IofCompleteRequest
01 Npfs!NpFsdCreate
02 nt!IofCallDriver
03 nt!IopParseDevice
04 nt!ObpLookupObjectName
05 nt!ObOpenObjectByName
06 nt!IopCreateFile
07 nt!IoCreateFile
08 nt!NtCreateFile
09 nt!_KiSystemService
0a SharedUserData!SystemCallStub
0b ntdll!NtCreateFile
0c kernel32!CreateFileW
0d RPCRT4!NMP_Open
0e RPCRT4!OSF_CCONNECTION::TransOpen
0f RPCRT4!OSF_CCONNECTION::OpenConnectionAndBind
10 RPCRT4!OSF_CCALL::BindToServer
11 RPCRT4!OSF_BINDING_HANDLE::AllocateCCall
12 RPCRT4!OSF_BINDING_HANDLE::NegotiateTransferSyntax
13 RPCRT4!I_RpcGetBufferWithObject
14 RPCRT4!I_RpcGetBuffer
15 RPCRT4!NdrGetBuffer
16 RPCRT4!NdrClientCall2
17 ADVAPI32!LsarOpenPolicy2
18 ADVAPI32!LsaOpenPolicy
19 services!ScOpenPolicy
1a services!ScGetAccountDomainInfo
1b services!ScInitServiceAccount
1c services!SvcctrlMain
1d services!main
1e services!mainCRTStartup
1f kernel32!BaseProcessStart
1: kd> dv
??????????? Irp = 0x00000001
? PriorityBoost = 0n12 ''

1: kd> p
nt!IopfCompleteRequest+0xa:
80a26a0a 8a4622????????? mov???? al,byte ptr [esi+22h]
1: kd> p
nt!IopfCompleteRequest+0xd:
80a26a0d 33db??????????? xor???? ebx,ebx
1: kd> r
eax=89844201 ebx=bab18a0c ecx=89844290 edx=00000001 esi=89844290 edi=00000000
eip=80a26a0d esp=bab189d8 ebp=bab189f0 iopl=0???????? nv up ei ng nz na po nc
cs=0008? ss=0010? ds=0023? es=0023? fs=0030? gs=0000???????????? efl=00000282
nt!IopfCompleteRequest+0xd:
80a26a0d 33db??????????? xor???? ebx,ebx
1: kd> dt _irp 89844290
GDI32!_IRP
?? +0x000 Type???????????? : 0n6
?? +0x002 Size???????????? : 0x94
?? +0x004 MdlAddress?????? : (null)
?? +0x008 Flags??????????? : 0x800
?? +0x00c AssociatedIrp??? : __unnamed
?? +0x010 ThreadListEntry? : _LIST_ENTRY [ 0x89848480 - 0x899bf710 ]
?? +0x018 IoStatus???????? : _IO_STATUS_BLOCK
?? +0x020 RequestorMode??? : 1 ''
?? +0x021 PendingReturned? : 0 ''
?? +0x022 StackCount?????? : 1 ''
?? +0x023 CurrentLocation? : 1 ''
?? +0x024 Cancel?????????? : 0 ''
?? +0x025 CancelIrql?????? : 0 ''
?? +0x026 ApcEnvironment?? : 0 ''
?? +0x027 AllocationFlags? : 0xc ''
?? +0x028 UserIosb???????? : 0x00ae02b8 _IO_STATUS_BLOCK
?? +0x02c UserEvent??????? : (null)
?? +0x030 Overlay????????? : __unnamed
?? +0x038 CancelRoutine??? : (null)
?? +0x03c UserBuffer?????? : (null)
?? +0x040 Tail???????????? : __unnamed


?? ASSERT( !Irp->CancelRoutine );

1: kd> p
nt!IopfCompleteRequest+0x2b:
80a26a2b 395e38????????? cmp???? dword ptr [esi+38h],ebx
1: kd> r
eax=89844202 ebx=00000000 ecx=89844290 edx=00000001 esi=89844290 edi=00000000
eip=80a26a2b esp=bab189d4 ebp=bab189f0 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!IopfCompleteRequest+0x2b:
80a26a2b 395e38????????? cmp???? dword ptr [esi+38h],ebx ds:0023:898442c8=00000000
1: kd> dt _irp 89844290
GDI32!_IRP
?? +0x000 Type???????????? : 0n6
?? +0x002 Size???????????? : 0x94
?? +0x004 MdlAddress?????? : (null)
?? +0x008 Flags??????????? : 0x800
?? +0x00c AssociatedIrp??? : __unnamed
?? +0x010 ThreadListEntry? : _LIST_ENTRY [ 0x89848480 - 0x899bf710 ]
?? +0x018 IoStatus???????? : _IO_STATUS_BLOCK
?? +0x020 RequestorMode??? : 1 ''
?? +0x021 PendingReturned? : 0 ''
?? +0x022 StackCount?????? : 1 ''
?? +0x023 CurrentLocation? : 1 ''
?? +0x024 Cancel?????????? : 0 ''
?? +0x025 CancelIrql?????? : 0 ''
?? +0x026 ApcEnvironment?? : 0 ''
?? +0x027 AllocationFlags? : 0xc ''
?? +0x028 UserIosb???????? : 0x00ae02b8 _IO_STATUS_BLOCK
?? +0x02c UserEvent??????? : (null)
?? +0x030 Overlay????????? : __unnamed
?? +0x038 CancelRoutine??? : (null)
?? +0x03c UserBuffer?????? : (null)
?? +0x040 Tail???????????? : __unnamed

1: kd> dd 89844290
89844290? 00940006 00000000 00000800 00000000
898442a0? 89848480 899bf710 00000000 00000000
898442b0? 01010001 0c000000 00ae02b8 00000000
898442c0? 00000000 00ae02b8 00000000 00000000
898442d0? 00000000 00000000 00000000 00000000
898442e0? 89848268 00000000 bab18a0c bab18a0c
898442f0? 89844300 8946f068 00000000 00000000
89844300? 0105000d 00000000 00000000 00110008

1: kd> dt kapc 89844290+40
GDI32!KAPC
?? +0x000 Type???????????? : 0n0
?? +0x002 Size???????????? : 0n0
?? +0x004 Spare0?????????? : 0
?? +0x008 Thread?????????? : (null)
?? +0x00c ApcListEntry???? : _LIST_ENTRY [ 0x0 - 0x89848268 ]
?? +0x014 KernelRoutine??? : (null)
?? +0x018 RundownRoutine?? : 0xbab18a0c???? void? +ffffffffbab18a0c
?? +0x01c NormalRoutine??? : 0xbab18a0c???? void? +ffffffffbab18a0c
?? +0x020 NormalContext??? : 0x89844300 Void
?? +0x024 SystemArgument1? : 0x8946f068 Void
?? +0x028 SystemArgument2? : (null)
?? +0x02c ApcStateIndex??? : 0 ''
?? +0x02d ApcMode????????? : 0 ''
?? +0x02e Inserted???????? : 0 ''

?? +0x040 Tail???????????? : __unnamed
????? +0x000 Overlay????????? : __unnamed
???????? +0x000 DeviceQueueEntry : _KDEVICE_QUEUE_ENTRY
???????? +0x000 DriverContext??? : [4] Ptr32 Void?? ?
???????? +0x010 Thread?????????? : Ptr32 _ETHREAD?? ??? ??? ??? ?89848268
???????? +0x014 AuxiliaryBuffer? : Ptr32 Char
???????? +0x018 ListEntry??????? : _LIST_ENTRY
???????? +0x020 CurrentStackLocation : Ptr32 _IO_STACK_LOCATION
???????? +0x020 PacketType?????? : Uint4B
???????? +0x024 OriginalFileObject : Ptr32 _FILE_OBJECT?? ??? ??? ?8946f068

1: kd> dd 89844290
89844290? 00940006 00000000 00000800 00000000
898442a0? 89848480 899bf710 00000000 00000000
898442b0? 01010001 0c000000 00ae02b8 00000000
898442c0? 00000000 00ae02b8 00000000 00000000
898442d0? 00000000 00000000 00000000 00000000
898442e0? 89848268 00000000 bab18a0c bab18a0c
898442f0? 89844300 8946f068

1: kd> dt file_object 8946f068
GDI32!FILE_OBJECT
?? +0x000 Type???????????? : 0n5
?? +0x002 Size???????????? : 0n112
?? +0x004 DeviceObject???? : 0x895b5038 _DEVICE_OBJECT
?? +0x008 Vpb????????????? : (null)
?? +0x00c FsContext??????? : 0xe1636311 Void
?? +0x010 FsContext2?????? : 0x8947c6a0 Void
?? +0x014 SectionObjectPointer : (null)
?? +0x018 PrivateCacheMap? : 0x00000001 Void
?? +0x01c FinalStatus????? : 0n0
?? +0x020 RelatedFileObject : (null)
?? +0x024 LockOperation??? : 0 ''
?? +0x025 DeletePending??? : 0 ''
?? +0x026 ReadAccess?????? : 0 ''
?? +0x027 WriteAccess????? : 0 ''
?? +0x028 DeleteAccess???? : 0 ''
?? +0x029 SharedRead?????? : 0 ''
?? +0x02a SharedWrite????? : 0 ''
?? +0x02b SharedDelete???? : 0 ''
?? +0x02c Flags??????????? : 0x40080
?? +0x030 FileName???????? : _UNICODE_STRING "\lsass"
?? +0x038 CurrentByteOffset : _LARGE_INTEGER 0x0
?? +0x040 Waiters????????? : 0
?? +0x044 Busy???????????? : 0
?? +0x048 LastLock???????? : (null)
?? +0x04c Lock???????????? : _KEVENT
?? +0x05c Event??????????? : _KEVENT
?? +0x06c CompletionContext : 0xe13df1e8 _IO_COMPLETION_CONTEXT
1: kd> dt npfs!ccb 0xe1636310
?? +0x000 NodeTypeCode???? : 0x6 ''
?? +0x001 NamedPipeState?? : 0x3 ''
?? +0x002 ReadCompletionMode : [2] __unnamed
?? +0x004 SecurityQos????? : _SECURITY_QUALITY_OF_SERVICE
?? +0x010 CcbLinks???????? : _LIST_ENTRY [ 0xe13ed638 - 0xe1636b68 ]
?? +0x018 Fcb????????????? : 0xe1636b38 _FCB
?? +0x01c FileObject?????? : [2] 0x8978b348 _FILE_OBJECT
?? +0x024 ClientProcess??? : 0x89429250 Void
?? +0x028 ClientInfo?????? : (null)
?? +0x02c NonpagedCcb????? : 0x8947c6a0 _NONPAGED_CCB
?? +0x030 DataQueue??????? : [2] _DATA_QUEUE
?? +0x070 SecurityClientContext : (null)
?? +0x074 ListeningQueue?? : _LIST_ENTRY [ 0xe1636384 - 0xe1636384 ]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_FILE_OBJECT * (*)[2])0xe163632c))
(*((Npfs!_FILE_OBJECT * (*)[2])0xe163632c))???????????????? [Type: _FILE_OBJECT * [2]]
??? [0]????????????? : 0x8978b348 [Type: _FILE_OBJECT *]
??? [1]????????????? : 0x8946f068 [Type: _FILE_OBJECT *]
1: kd> dx -id 0,0,89429250 -r1 (*((Npfs!_LIST_ENTRY *)0xe1636384))
(*((Npfs!_LIST_ENTRY *)0xe1636384))???????????????? [Type: _LIST_ENTRY]
??? [+0x000] Flink??????????? : 0xe1636384 [Type: _LIST_ENTRY *]
??? [+0x004] Blink??????????? : 0xe1636384 [Type: _LIST_ENTRY *]


1: kd> !THREAD 89848268
THREAD 89848268? Cid 0204.0254? Teb: 7ffd6000 Win32Thread: 00000000 WAIT: (WrQueue) UserMode Non-Alertable
??? 895f3b08? QueueObject
??? 898482e0? NotificationTimer
IRP List:
??? 899bf700: (0006,0094) Flags: 00000800? Mdl: 00000000
??? 89844290: (0006,0094) Flags: 00000800? Mdl: 00000000
Not impersonating
DeviceMap???????????????? e10003d8
Owning Process??????????? 898d9250?????? Image:???????? lsass.exe
Attached Process????????? N/A??????????? Image:???????? N/A
Wait Start TickCount????? 274648358????? Ticks: 10 (0:00:00:00.156)
Context Switch Count????? 2????????????? IdealProcessor: 1??????????? ?
UserTime????????????????? 00:00:00.000
KernelTime??????????????? 00:00:00.015
Win32 Start Address RPCRT4!ThreadStartRoutine (0x77c04bb7)
Stack Init baac8000 Current baac7c38 Base baac8000 Limit baac5000 Call 00000000
Priority 9 BasePriority 9 PriorityDecrement 0 IoPriority 0 PagePriority 0
ChildEBP RetAddr? Args to Child???????????? ?
baac7c50 80a440eb 89848308 89848268 895f3b08 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4]) [d:\srv03rtm\base\ntos\ke\i386\ctxswap.asm @ 139]
baac7c88 80a38894 baac7d58 00000000 80c652f4 nt!KiSwapThread+0x627 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\ke\thredsup.c @ 2000]
baac7cb8 80c653d0 00000001 00000001 baac7cd8 nt!KeRemoveQueue+0x2f2 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ke\queueobj.c @ 533]
baac7d3c 80afbcb2 00000704 00c1ff04 00c1feec nt!NtRemoveIoCompletion+0xdc (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\complete.c @ 597]
baac7d3c 7ffe0304 00000704 00c1ff04 00c1feec nt!_KiSystemService+0x13f (FPO: [0,3] TrapFrame @ baac7d64) (CONV: cdecl) [d:\srv03rtm\base\ntos\ke\i386\trap.asm @ 1328]
00c1fed4 00000000 00000000 00000000 00000000 SharedUserData!SystemCallStub+0x4 (FPO: [0,0,0])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75849.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【軟件測試】bug 篇

本章思維導圖: 1. 軟件測試的生命周期 軟件測試貫穿于整個軟件的生命周期 流程階段需求分析測試計劃測試設計/開發測試執行測試評估上線運行維護具體工作內容1. 閱讀需求文檔 2. 標記可測試需求 3. 確定測試類型1. 制定測試范圍 2. 選擇測試工具 3. 分配資源1. 編寫…

「Unity3D」圖片導入選項取消Read/Write,就無法正確顯示導入大小,以及Addressable打包無法正確顯示的問題

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾選,就會讓圖片導入設置中,不勾選Read/Write,就無法正確顯示紋理的大小數字。 更進一步的問題是,使用Addressable打包的時候, 如…

《MySQL從入門到精通》

文章目錄 《MySQL從入門到精通》1. 基礎-SQL通用語法及分類2. 基礎-SQL-DDL-數據庫操作3. 基礎-SQL-DDL-表操作-創建&查詢4. 基礎-SQL-DDL-數據類型及案例4.1 數值類型4.2 字符串類型4.3 時間和日期類型 5. 基礎-SQL-DDL-表操作-修改&刪除5.1 DDL-表操作-修改5.2 DDL-表…

Vccaux_IO在DDR3接口中的作用

一、Vccaux_IO在DDR3接口中的作用 1.vccaux_io通常為FPGA的IO bank的輔助電源,用于支持特定電壓的IO標準 2.在DDR3接口中,FPGA的IO bank需要DDR3芯片的電壓(1.5v/1.35v)匹配 3.Vccaux_IO用于為FPGA的DDR3接口I/O Bank供電,其電壓值、噪聲和穩…

深入理解Apache Kafka

引言 在現代分布式系統架構中,中間件扮演著至關重要的角色,它作為系統各組件之間的橋梁,負責處理數據傳遞、消息通信、負載均衡等關鍵任務。在眾多中間件解決方案中,Apache Kafka憑借其高吞吐量、低延遲和可擴展性,已…

【NLP】 21. Transformer整體流程概述 Encoder 與 Decoder架構對比

1. Transformer 整體流程概述 Transformer 模型的整個處理流程可以概括為從自注意力(Self-Attention)到多頭注意力,再加上殘差連接、層歸一化、堆疊多層的結構。其核心思想是利用注意力機制對輸入進行并行計算,從而避免傳統 RNN …

路由器端口映射的意思、使用場景、及內網ip讓公網訪問常見問題和解決方法

一、端口映射是什么意思 端口映射是將內網主機的IP地址端口映射到公網中,內部機器提供相應的互聯網服務。當異地用戶訪問該這個端口時,會自動將請求映射到對應局域網內部的機器上。 二、端口映射常見使用場景 1,遠程訪問需求。當有…

GEO全域優化白皮書:盈達科技如何打造AI生態中的認知護城河

副標題:讓內容被AI優先引用,占領生成式引擎的“主屏入口” 一、GEO:生成式引擎時代的內容占位權之戰 隨著ChatGPT、Kimi、DeepSeek等生成式AI快速成為信息獲取的主流方式,搜索邏輯正在根本性改變:從“網頁排名”轉向“…

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析 MySQL DBA(數據庫管理員)的工作涉及數據庫監控、SQL優化、故障排查、備份恢復等復雜任務,傳統方式依賴手動操作和經驗判斷,效率較低。而DeepSeek大模型可以結…

系統設計思維的討論

我們經常說自己熟悉了spring,能夠搭建起一個項目基本框架,并且在此之上進行開發,用戶or客戶提出需求碰到不會的百度找找就可以實現。干個四五年下一份工作就去面試架構師了,運氣好一些可能在中小公司真的找到一份架構師、技術負責…

項目部署-(二)Linux下SpringBoot項目自動部署

一、項目部署架構 二、項目部署環境 192.168.138.100(服務器A): -Nginx :部署前端項目、配置反向代理 -MySQL:主從復制結構中的主庫 192.168.138.101(服務器B): -JDK:運行Java項目 -Git:版本控制工具 -Maven:項目構建…

【LeetCode 熱題 100】哈希 系列

📁1. 兩數之和 本題就是將通過兩層遍歷優化而成的,為什么需要兩層遍歷,因為遍歷 i 位置時,不知道i-1之前的元素是多少,如果我們知道了,就可以通過兩數相加和target比較即可。 因為本題要求返回下標&#xf…

【Kubernetes基礎】--查閱筆記1

目錄 Kubernetes 是什么為什么要用 KubernetesKubernetes 概念MasterNodePodLabelReplication ControllerDeploymentHorizontal Pod AutoscalerStatefulSetService服務發現機制 JobVolumePersistent VolumeNamespaceConfigmap Kubernetes 是什么 Kubernetes是一個開放的開發平…

卷積神經網絡CNN到底在卷些什么?

來源: 卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!_嗶哩嗶哩_bilibili卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!共計2條視頻,包括:卷…

Axios 的 POST 請求:QS 處理數據的奧秘與使用場景解析

在現代前端開發中,Axios 已經成為了進行 HTTP 請求的首選庫之一,它的簡潔易用和強大功能深受開發者喜愛。當使用 Axios 進行 POST 請求時,我們常常會遇到一個問題:是否需要使用 QS 庫來處理請求數據?什么時候又可以不用…

java面試題帶答案2025最新整理

文章目錄 一、java面試題集合框架1. 請簡要介紹 Java 集合框架的體系結構2. ArrayList 和 LinkedList 的區別是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解決 HashMap 的線程安全問題5. TreeSet 是如何保證元素有序的 二、java面試…

4.B-樹

一、常見的查找方式 順序查找 O(N) 二分查找 O(logN)(要求有序和隨機訪問) 二叉搜索樹 O(N) 平衡二叉搜索樹(AVL樹和紅黑樹) O(logN) 哈希 O(1) 考慮效率和要求而言,正常選用 平衡二叉搜索樹 和 哈希 作為查找方式。 但這兩種結構適合用于…

CTF--shell

一、原題 (1)提示: $poc"a#s#s#e#r#t";$poc_1explode("#",$poc);$poc_2$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[s]) (2)原網頁:一片空白什么都…

基于51單片機的正負5V數字電壓表( proteus仿真+程序+設計報告+講解視頻)

基于51單片機的正負5V數字電壓表( proteus仿真程序設計報告講解視頻) 仿真圖proteus7.8及以上 程序編譯器:keil 4/keil 5 編程語言:C語言 設計編號:S0101 1. 主要功能: 設計一個基于51單片機數字電壓表 1、能夠…

hive數倉要點總結

1.OLTP和OLAP區別 OLTP(On-Line Transaction Processing)即聯機事務處理,也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用…