Ntfs!LfsGetLbcb函数分析之nt!CcPreparePinWrite

Ntfs!LfsGetLbcb函数分析之nt!CcPreparePinWrite


第一部分:

1: kd> p
Ntfs!LfsPrepareLfcbForLogRecord+0x78:
f7179d72 e891210000      call    Ntfs!LfsGetLbcb (f717bf08)
1: kd> t
Ntfs!LfsGetLbcb:
f717bf08 6a40            push    40h
1: kd> kc
 #
00 Ntfs!LfsGetLbcb
01 Ntfs!LfsPrepareLfcbForLogRecord
02 Ntfs!LfsWriteLogRecordIntoLogPage
03 Ntfs!LfsWrite
04 Ntfs!NtfsWriteLog
05 Ntfs!NtfsCheckpointVolume
06 Ntfs!NtfsCheckpointAllVolumes
07 nt!ExpWorkerThread
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup


1: kd> dv
             Lfcb = 0xe1351768
    PageHeaderBcb = 0xffffffff
WrappedOrUsaError = 0xe1 ''
             Lbcb = 0x00000030
       PageHeader = 0xf78d27d0
 _LocalFileOffset = 0n150323855360

//
//  Id strings for the page headers.
//

#define LFS_SIGNATURE_RESTART_PAGE          "RSTR"
#define LFS_SIGNATURE_RESTART_PAGE_ULONG    0x52545352
#define LFS_SIGNATURE_RECORD_PAGE           "RCRD"
#define LFS_SIGNATURE_RECORD_PAGE_ULONG     0x44524352
#define LFS_SIGNATURE_BAD_USA               "BAAD"
#define LFS_SIGNATURE_BAD_USA_ULONG         0x44414142
#define LFS_SIGNATURE_MODIFIED              "CHKD"
#define LFS_SIGNATURE_MODIFIED_ULONG        0x444b4843
#define LFS_SIGNATURE_UNINITIALIZED         "\377\377\377\377"
#define LFS_SIGNATURE_UNINITIALIZED_ULONG   0xffffffff


#define LFCB_REUSE_TAIL                 (0x00000010)


        CcPreparePinWrite( (L)->FileObject,                     \
                           (PLARGE_INTEGER)&_LocalFileOffset,   \
                           (LEN),                               \
                           FALSE,                               \
                           TRUE,                                \
                           (B),                                 \
                           (BUF) );  


第二部分:

1: kd> p
Ntfs!LfsGetLbcb+0x8c:
f717bf94 ff15080116f7    call    dword ptr [Ntfs!_imp__CcPreparePinWrite (f7160108)]
1: kd> t
nt!CcPreparePinWrite:
80bf9b9e 6a2c            push    2Ch
1: kd> kc
 #
00 nt!CcPreparePinWrite
01 Ntfs!LfsGetLbcb
02 Ntfs!LfsPrepareLfcbForLogRecord
03 Ntfs!LfsWriteLogRecordIntoLogPage
04 Ntfs!LfsWrite
05 Ntfs!NtfsWriteLog
06 Ntfs!NtfsCheckpointVolume
07 Ntfs!NtfsCheckpointAllVolumes
08 nt!ExpWorkerThread
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> dv
     FileObject = 0x89469688
     FileOffset = 0xf78d2660 {7888896}
         Length = 0x1000
           Zero = 0x00 ''
          Flags = 1
            Bcb = 0xf78d2678

1: kd> dx -r1 ((ntkrnlmp!_FILE_OBJECT *)0x89469688)
((ntkrnlmp!_FILE_OBJECT *)0x89469688)                 : 0x89469688 [Type: _FILE_OBJECT *]
    [+0x000] Type             : 5 [Type: short]
    [+0x002] Size             : 112 [Type: short]
    [+0x004] DeviceObject     : 0x894d1c08 : Device for "\Driver\Ftdisk" [Type: _DEVICE_OBJECT *]
    [+0x008] Vpb              : 0x899a7008 [Type: _VPB *]
    [+0x00c] FsContext        : 0x89469700 [Type: void *]
    [+0x010] FsContext2       : 0x0 [Type: void *]
    [+0x014] SectionObjectPointer : 0x89982e3c [Type: _SECTION_OBJECT_POINTERS *]
    [+0x018] PrivateCacheMap  : 0x89469608 [Type: void *]
    [+0x01c] FinalStatus      : 0 [Type: long]
    [+0x020] RelatedFileObject : 0x0 [Type: _FILE_OBJECT *]
    [+0x024] LockOperation    : 0x0 [Type: unsigned char]
    [+0x025] DeletePending    : 0x0 [Type: unsigned char]
    [+0x026] ReadAccess       : 0x1 [Type: unsigned char]
    [+0x027] WriteAccess      : 0x1 [Type: unsigned char]
    [+0x028] DeleteAccess     : 0x1 [Type: unsigned char]
    [+0x029] SharedRead       : 0x0 [Type: unsigned char]
    [+0x02a] SharedWrite      : 0x0 [Type: unsigned char]
    [+0x02b] SharedDelete     : 0x0 [Type: unsigned char]
    [+0x02c] Flags            : 0x40100 [Type: unsigned long]
    [+0x030] FileName         : "\$LogFile" [Type: _UNICODE_STRING]        //[+0x030] FileName         : "\$LogFile" [
    [+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 *]
1: kd> dx -r1 ((ntkrnlmp!_SECTION_OBJECT_POINTERS *)0x89982e3c)
((ntkrnlmp!_SECTION_OBJECT_POINTERS *)0x89982e3c)                 : 0x89982e3c [Type: _SECTION_OBJECT_POINTERS *]
    [+0x000] DataSectionObject : 0x899bf650 [Type: void *]
    [+0x004] SharedCacheMap   : 0x89469530 [Type: void *]
    [+0x008] ImageSectionObject : 0x0 [Type: void *]

1: kd> dx -r1 ((Ntfs!_LFCB *)0xe1351768)
((Ntfs!_LFCB *)0xe1351768)                 : 0xe1351768 [Type: _LFCB *]
    [+0x000] NodeTypeCode     : 2051 [Type: short]
    [+0x002] NodeByteSize     : 352 [Type: short]
    [+0x004] LfcbLinks        [Type: _LIST_ENTRY]
    [+0x00c] LchLinks         [Type: _LIST_ENTRY]
    [+0x014] FileObject       : 0x89469688 [Type: _FILE_OBJECT *]


1: kd> dv
     FileObject = 0x89469688
     FileOffset = 0xf78d2660 {7888896}            //FileOffset = 0xf78d2660 {7888896}


    LARGE_INTEGER LocalFileOffset = *FileOffset;

第三部分:

            if (!CcPinFileData( FileObject,
                                &LocalFileOffset,
                                Length,
                                FALSE,
                                TRUE,
                                Flags,
                                CurrentBcbPtr,
                                &LocalBuffer,
                                &BeyondLastByte )) {

1: kd> p
nt!CcPreparePinWrite+0x8e:
80bf9c2c e8adafe1ff      call    nt!CcPinFileData (80a14bde)
1: kd> t
nt!CcPinFileData:
80a14bde 6a68            push    68h
1: kd> dv
      FileObject = 0x89469688
      FileOffset = 0xf78d25ec {7888896}
          Length = 0x1000
        ReadOnly = 0x00 ''
       WriteOnly = 0x01 ''
           Flags = 1
             Bcb = 0xf78d2600
     BaseAddress = 0xf78d25fc
  BeyondLastByte = 0xf78d25e4 {7902739826480}

gu

第四部分:


1: kd> dx -r1 ((ntkrnlmp!_BCB * *)0xf78d2600)
((ntkrnlmp!_BCB * *)0xf78d2600)                 : 0xf78d2600 [Type: _BCB * *]
    0x8962bce8 [Type: _BCB *]
1: kd> dx -r1 ((ntkrnlmp!_BCB *)0x8962bce8)
((ntkrnlmp!_BCB *)0x8962bce8)                 : 0x8962bce8 [Type: _BCB *]
    [+0x000] Dummy            [Type: _MBCB]
    [+0x000] NodeTypeCode     : 765 [Type: short]
    [+0x002] Dirty            : 0x0 [Type: unsigned char]
    [+0x003] Reserved         : 0x0 [Type: unsigned char]
    [+0x004] ByteLength       : 0x1000 [Type: unsigned long]
    [+0x008] FileOffset       : {7888896} [Type: _LARGE_INTEGER]
    [+0x010] BcbLinks         [Type: _LIST_ENTRY]
    [+0x018] BeyondLastByte   : {7892992} [Type: _LARGE_INTEGER]
    [+0x020] OldestLsn        : {0} [Type: _LARGE_INTEGER]
    [+0x028] NewestLsn        : {0} [Type: _LARGE_INTEGER]
    [+0x030] Vacb             : 0x89988498 [Type: _VACB *]
    [+0x034] PinCount         : 0x1 [Type: unsigned long]
    [+0x038] Resource         [Type: _ERESOURCE]
    [+0x070] SharedCacheMap   : 0x89469530 [Type: _SHARED_CACHE_MAP *]
    [+0x074] BaseAddress      : 0xc2c46000 [Type: void *]                [+0x074] BaseAddress      : 0xc2c46000
1: kd> dx -r1 ((ntkrnlmp!_VACB *)0x89988498)
((ntkrnlmp!_VACB *)0x89988498)                 : 0x89988498 [Type: _VACB *]
    [+0x000] BaseAddress      : 0xc2c40000 [Type: void *]
    [+0x004] SharedCacheMap   : 0x89469530 [Type: _SHARED_CACHE_MAP *]
    [+0x008] Overlay          [Type: __unnamed]
    [+0x010] LruList          [Type: _LIST_ENTRY]
1: kd> db 0xc2c40000
c2c40000  52 43 52 44 28 00 09 00-eb 01 0f 08 00 00 00 00  RCRD(...........
c2c40010  01 00 00 00 14 00 10 00-58 0f 00 00 00 00 00 00  ........X.......
c2c40020  e0 01 0f 08 00 00 00 00-d7 0e 00 00 00 00 00 00  ................
c2c40030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c40040  08 00 0f 08 00 00 00 00-e5 ff 0e 08 00 00 00 00  ................
c2c40050  00 00 00 00 00 00 00 00-28 00 00 00 00 00 00 00  ........(.......
c2c40060  01 00 00 00 18 00 00 00-00 00 00 00 00 00 00 00  ................
c2c40070  1b 00 01 00 28 00 00 00-28 00 04 00 44 00 00 00  ....(...(...D...

1: kd> db 0xc2c46000
c2c46000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
c2c46070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................


第五部分:


1: kd>  dt _BCB  0x8962bce8
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x786000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x894c6668 - 0x894d1288 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x787000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : 0x89988498 _VACB
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : 0xc2c46000 Void


1: kd> dt _bcb 0x894c6668-10
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0x1 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x785000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x894792b8 - 0x8962bcf8 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x786000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : 0x89988498 _VACB
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : 0xc2c45000 Void

1: kd>  dt _BCB  0x894792b8-10
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x784000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x895c0018 - 0x894c6668 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x785000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : (null)
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : (null)
1: kd> dx -id 0,0,899a2278 -r1 ((ntkrnlmp!_LIST_ENTRY *)0x894792b8)
((ntkrnlmp!_LIST_ENTRY *)0x894792b8)                 : 0x894792b8 [Type: _LIST_ENTRY *]
    [+0x000] Flink            : 0x895c0018 [Type: _LIST_ENTRY *]
    [+0x004] Blink            : 0x894c6668 [Type: _LIST_ENTRY *]


1: kd>  dt _BCB  0x895c0018-10
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x783000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x89509778 - 0x894792b8 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x784000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : (null)
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : (null)


1: kd>  dt _BCB  0x89509778-10
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x782000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x894cd018 - 0x895c0018 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x783000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : (null)
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : (null)


1: kd>  dt _BCB  0x894cd018-10
nt!_BCB
   +0x000 Dummy            : _MBCB
   +0x000 NodeTypeCode     : 0n765
   +0x002 Dirty            : 0 ''
   +0x003 Reserved         : 0 ''
   +0x004 ByteLength       : 0x1000
   +0x008 FileOffset       : _LARGE_INTEGER 0x781000
   +0x010 BcbLinks         : _LIST_ENTRY [ 0x894d1280 - 0x89509778 ]
   +0x018 BeyondLastByte   : _LARGE_INTEGER 0x782000
   +0x020 OldestLsn        : _LARGE_INTEGER 0x0
   +0x028 NewestLsn        : _LARGE_INTEGER 0x0
   +0x030 Vacb             : (null)
   +0x034 PinCount         : 1
   +0x038 Resource         : _ERESOURCE
   +0x070 SharedCacheMap   : 0x89469530 _SHARED_CACHE_MAP
   +0x074 BaseAddress      : (null)

第六部分:

dv
    LocalBuffer = 0xc2c46000


 BeyondLastByte = {7892992}

1: kd> ?0n7888896
Evaluate expression: 7888896 = 00786000


        //
        //  In the normal (nonoverlapping) case we return the
        //  correct buffer address here.
        //

        if (CurrentBcbPtr == (PBCB *)&MyBcb) {
            *Buffer = LocalBuffer;
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86238.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试150 整数转罗马数字

思路 建立数字和字符的字典映射表&#xff0c;遍历映射表做差&#xff0c;将字符添加到结果中&#xff0c;当差为0的时候&#xff0c;break退出循环。返回最后的结果output class Solution:def intToRoman(self, num: int) -> str:if num<1:return num_to_map[(1000,M)…

大模型推理-高通qnn基础

一、高通ai 软件的介绍 QualcommAI Engine Direct SDK(qnn) 提供较低级别、高度可定制的统一API&#xff0c;通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时&#xff08;包括Qualcomm Neural Processing SDK、TensorFlow Li…

UE5 - 制作《塞尔达传说》中林克的技能 - 14 - 技能面板

让我们继续《塞尔达传说》中林克技能的制作&#xff01;&#xff01;&#xff01; UE版本&#xff1a;5.6.0 VS版本&#xff1a;2022 本章节的核心目标&#xff1a;技能面板 先让我们看一下完成后的效果&#xff1a; 第14章效果 本章节项目链接&#xff1a; 通过网盘分享的文件…

用Tensorflow进行线性回归和逻辑回归(八)

新的TensorFlow概念 创建简单的机器学习系统需要学习一些新的概念。 优化器 上两节介绍的元素已经提示了TensorFlow是如何完成机器学习的。你已学习了如何用张量操作来定义损失函数。缺少的是你不知道如何用TensorFlow进行梯度下降。尽管可以用TensorFlow元素直接用 Python定…

基于python代码的通过爬虫方式实现TK下载视频(2025年6月)

Tk的视频页面通常需要登录才能获取完整数据,但通过构造匿名游客的请求,我们可以绕过登录限制,提取视频的元信息(如标题、ID和播放地址)。核心思路如下: 构造匿名Cookie:通过模拟浏览器的请求,获取Tk服务器分配的游客Cookie。解析网页:利用BeautifulSoup解析HTML,定位…

火山 RTC 引擎14 设置CB

一、火山RTC引擎集成时,设置CB 1、统一设置 void NRTCEngine::SetByteRtcCBS() {UserPublishStreamCallback callback = [this](const std::string& roomId, const std::string& uid, bytertc::MediaStreamType type) {this->OnSigUserPublishStream(roomId, uid, …

BUUCTF在线评测-练习场-WebCTF习题[极客大挑战 2019]PHP1-flag获取、解析

解题思路 打开靶场&#xff0c;提示备份 常见的备份后缀名有.bak&#xff0c;.backup&#xff0c;.zip等等 这里肯定是要扫目录了&#xff0c;不知道是我的问题还是目录扫描工具的问题还是BUUCTF的问题&#xff0c;每次要扫目录能扫出一堆东西来&#xff0c;不管你用什么后缀…

对话云蝠智能:大模型如何让企业呼叫系统从 “成本中心” 变身 “价值枢纽”?

在人工智能重塑企业服务的浪潮中&#xff0c;云蝠智能&#xff08;南京星蝠科技有限公司旗下品牌&#xff09;以深厚的技术积累和行业实践&#xff0c;逐步成长为国内智能外呼领域的标杆企业。其发展路径揭示了技术自主创新与场景深度结合的必然性。 一、技术架构&#xff1a;全…

Python-文件管理

1. Open方法 Python 中的文件操作主要通过内置的 open() 函数来完成&#xff0c;该函数用于打开文件&#xff0c;并返回一个文件对象。通过文件对象&#xff0c;可以进行各种文件操作&#xff0c;如读取、写入、关闭等。 使用 open() 方法一定要保证关闭文件对象&#xff0c;即…

高速DIC技术之推进剂样品在霍普金森杆的高速冲击下的变形监测与不同材质头盔在不同冲击位置下的变形测试-VIC-3D HS非接触全场动态应变测量系统

工程领域对材料与结构在极端动态载荷下复杂变形行为的测量有强烈的需求&#xff0c;且这种测量必须是精确、全域、非接触式的&#xff0c;高速DIC技术应运而生并不断得到发展。 常见动态应用包括&#xff08;但不限于&#xff09;&#xff1a;碰撞测试、爆炸试验、冲击试验、跌…

微算法科技融合Grover算法与统一哈希函数的混合经典-量子算法技术,可在多领域高效提升文本处理效率

随着数据规模的不断扩大&#xff0c;尤其是在大数据和人工智能驱动的应用中&#xff0c;这些经典算法的线性复杂度逐渐成为瓶颈。面对数十亿级别的文本数据&#xff0c;线性时间的算法仍然难以满足实时性的要求。此外&#xff0c;经典算法在处理无序或随机文本时&#xff0c;性…

Spring Boot Security Core

依赖配置&#xff08;Maven&#xff09; xml 复制 下载 运行 <!-- Spring Security Core --> <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>6.2.5<…

【赵渝强老师】OceanBase云平台OCP

OCP的全称是OceanBase Cloud Platform&#xff0c;即&#xff1a;OceanBase云平台。OCP面向有OceanBase管理需求的中小型用户&#xff0c;提供了基础的主机管理、OceanBase 集群和租户运维等能力。在OCP中主要包含两个组成部分&#xff0c;它们分别是&#xff1a;MetaDB和OCP S…

快速定位Swagger文档请求地址‘/v2/api-docs‘,发生未知异常.NullPointerException:精准定位+根治方案

问题现场&#xff1a;访问 http://localhost:8080/v2/api-docs 时日志报错&#xff1a; 请求地址/v2/api-docs,发生未知异常. java.lang.NullPointerException: nullat springfox.documentation.swagger2.mappers.RequestParameterMapper.bodyParameter(RequestParameterMappe…

图像处理解决方案

证件照小工具微信小程序系统是基于微擎开源生态开发的多功能图像处理平台&#xff0c;专为用户提供便捷的证件照制作及图片编辑服务。微擎系统作为一款基于 PHP 开发的开源应用生态系统&#xff0c;具备快速搭建多端应用的能力&#xff0c;其模块化架构与跨平台兼容性为证件照工…

Qt联合Halcon开发四:【详细图解】海康相机配置并链接测试

1. 下载与安装海康 MVS SDK 首先&#xff0c;访问海康机器人官网的下载中心&#xff0c;选择 “Machine Vision” 模块下的 MVS 软件包。 1. 打开浏览器&#xff0c;进入&#xff1a;https://www.hikrobotics.com/cn/ 2. 下载最新版的 MVS 安装包&#xff08;通常以 MVS_x.x.…

vue3打包后,图片丢失

前言&#xff1a; 在 webpack 中使用 require() 来引入静态图片&#xff0c;但在 vite 中就不行。 代码实现 <template><div><img :src"empty"></div> </template><script setup> // 引入本地图片(注意改成您的路径) import em…

MongoDB 8.0.10 windows11安装记录

最近在学习node&#xff0c;看的教程用的是MongoDB 5.0的&#xff0c;安装上和新版的有一些区别&#xff0c;都安装完后不能直接在C:\Program Files\MongoDB\Server\8.0\bin 这个目录使用mongo 启动&#xff0c;因为都没那文件。 摸索了下弄好了。 下载社区版最新安装包&#…

信息系统项目管理师023:云计算(2信息技术发展,网络安全面试问题

2.关键技术 云计算的关键技术主要涉及虚拟化技术、云存储技术、多租户和访问控制管理、云安全技术等。 1&#xff09;虚拟化技术 虚拟化是一个广义术语&#xff0c;在计算机领域通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量&#x…

django csrf的局限性

Django的CSRF保护机制虽被广泛应用&#xff0c;但在实际场景中存在以下关键局限性&#xff0c;需开发者特别注意&#xff1a; 一、内容类型限制&#xff08;Content-Type约束&#xff09; 仅保护特定响应类型 CSRF中间件默认只对text/html和application/xmlxhtml响应生效&#…