本文为转载,参考链接地址

https://blog.csdn.net/li_wen01/article/details/80137566

 https://www.cnblogs.com/lsh123/p/7354573.html

DeviceIoControl 将控制代码直接发送到指定的设备驱动程序,使相应的设备执行相应的操作。

这种通信方式,就是驱动程序和应用程序自定义一种IO控制码,然后调用DeviceIoControl函数,IO管理器会产生一个MajorFunction 为IRP_MJ_DEVICE_CONTROL(DeviceIoControl函数会产生此IRP),MinorFunction 为自己定义的控制码的IRP,系统就调用相应的处理IRP_MJ_DEVICE_CONTROL的派遣函数,你在派遣函数中判断MinorFunction ,是自定义的控制码你就进行相应的处理。

 

BOOL DeviceIoControl(
HANDLE       hDevice,
DWORD        dwIoControlCode,
LPVOID       lpInBuffer,
DWORD        nInBufferSize,
LPVOID       lpOutBuffer,
DWORD        nOutBufferSize,
LPDWORD      lpBytesReturned,
LPOVERLAPPED lpOverlapped
);

hDevice [in]
需要执行操作的设备句柄。该设备通常是卷,目录,文件或流,使用 CreateFile 函数打开获取设备句柄。具体的见备注
dwIoControlCode [in]
操作的控制代码,该值标识要执行的特定操作以及执行该操作的设备的类型,有关控制代码的列表,请参考备注。每个控制代码的文档都提供了lpInBuffernInBufferSizelpOutBuffernOutBufferSize参数的使用细节。
lpInBuffer [in, optional]
(可选)指向输入缓冲区的指针。这些数据的格式取决于dwIoControlCode参数的值。如果dwIoControlCode指定不需要输入数据的操作,则此参数可以为NULL。
nInBufferSize [in]
输入缓冲区以字节为单位的大小。单位为字节。
lpOutBuffer [out, optional]
(可选)指向输出缓冲区的指针。这些数据的格式取决于dwIoControlCode参数的值。如果dwIoControlCode指定不返回数据的操作,则此参数可以为NULL。
nOutBufferSize [in]
输出缓冲区以字节为单位的大小。单位为字节。
lpBytesReturned [out, optional]
(可选)指向一个变量的指针,该变量接收存储在输出缓冲区中的数据的大小。如果输出缓冲区太小,无法接收任何数据,则GetLastError返回ERROR_INSUFFICIENT_BUFFER,错误代码122(0x7a),此时lpBytesReturned是零。
如果输出缓冲区太小而无法保存所有数据,但可以保存一些条目,某些驱动程序将返回尽可能多的数据,在这种情况下,调用失败,GetLastError返回ERROR_MORE_DATA,错误代码234lpBytesReturned指示接收到的数据量。您的应用程序应该再次使用相同的操作调用DeviceIoControl,指定一个新的起点。
如果lpOverlapped为NULL,则lpBytesReturned不能为NULL。 即使操作没有返回输出数据并且lpOutBuffer为NULL,DeviceIoControl也会使用lpBytesReturned。在这样的操作之后,lpBytesReturned的值是没有意义的。
如果lpOverlapped不为NULL,则lpBytesReturned可以为NULL。 如果此参数不为NULL并且操作返回数据,则在重叠操作完成之前,lpBytesReturned是无意义的。要检索返回的字节数,请调用GetOverlappedResult,如果hDevice与I / O完成端口相关联,则可以检索通过调用GetQueuedCompletionStatus返回的字节数。
lpOverlapped [in, out, optional]
(可选)指向OVERLAPPED结构的指针,
如果在未指定FILE_FLAG_OVERLAPPED的情况下打开hDevice,则忽略lpOverlapped
如果使用FILE_FLAG_OVERLAPPED标志打开hDevice,则该操作将作为重叠(异步)操作执行。在这种情况下,lpOverlapped必须指向包含事件对象句柄的有效OVERLAPPED结构。 否则,该功能将以不可预知的方式失败。
对于重叠操作,DeviceIoControl会立即返回,并在操作完成时通知事件对象。 否则,该功能在操作完成或发生错误之前不会返回。


返回值:

如果操作成功完成,DeviceIoControl将返回一个非零值。

    如果操作失败或正在等待,则DeviceIoControl返回零。 要获得扩展的错误信息,请调用GetLastError。

 

一. 先谈一下这个定义IO控制码 ,其实可以看作是一种通信协议。

       看看CTL_CODE原型:

  #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)

   可以看到,这个宏四个参数,自然是一个32位分成了4部分,高16位存储设备类型,14~15位访问权限,2~13位操作功能,最后0,1两位就是确定缓冲区是如何与I/O和文件系统数据缓冲区进行数据传递方式,最常见的就是METHOD_BUFFERED。

 

       自定义CTL_CODE:

  #define IOCTL_Device_Function CTL_CODE(DeviceType, Function, Method, Access)

  IOCTL_Device_Function:生成的IRP的MinorFunction

  DeviceType:设备对象的类型。设备类型可参考:http://blog.csdn.net/liyun123gx/article/details/38058965

  Function :自定义的IO控制码。自己定义时取0x800到0xFFF,因为0x0到0x7FF是微软保留的。

  Method :数据的操作模式。

              METHOD_BUFFERED:缓冲区模式

              METHOD_IN_DIRECT:直接写模式

              METHOD_OUT_DIRECT:直接读模式

              METHOD_NEITHER :Neither模式

Access:访问权限,可取值有:

            FILE_ANY_ACCESS:表明用户拥有所有的权限

            FILE_READ_DATA:表明权限为只读

            FILE_WRITE_DATA:表明权限为可写

            也可以 FILE_WRITE_DATA | FILE_READ_DATA:表明权限为可读可写,但还没达到FILE_ANY_ACCESS的权限。

 

继续介绍这个缓冲区数据传递方式Method:

  Method表示Ring3/Ring0的通信中的内存访问方式,有四种方式:
#define METHOD_BUFFERED                0  
#define METHOD_IN_DIRECT               1  
#define METHOD_OUT_DIRECT              2  
#define METHOD_NEITHER                  3  


(1)如果使用METHOD_BUFFERED,表示系统将用户的输入输出都经过pIrp->AssociatedIrp.SystemBuffer来缓冲,因此这种方式的通信比较安全。

  METHOD_BUFFERED方式相当于对Ring3的输入输出都进行了缓冲。

       METHOD_BUFFERED方式(借图):

       

 


(2)如果使用METHOD_IN_DIRECT或METHOD_OUT_DIRECT方式,表示系统会将输入缓冲在pIrp->AssociatedIrp.SystemBuffer中,并将输出缓冲区锁定,然后在内核模式下重新映射一段地址,这样也是比较安全的。

  METHOD_IN_DIRECT和METHOD_OUT_DIRECT可称为"直接方式",是指系统依然对Ring3的输入缓冲区进行缓冲,但是对Ring3的输出缓冲区并没有缓冲,而是在内核中进行了锁定。这样Ring3输出缓冲区在驱动程序完成I/O请求之前,都是无法访问的,从一定程度上保障了安全性。如图21.1.14所示。
这两种方式,对于Ring3的输入缓冲区和METHOD_BUFFERED方式是一致的。对于Ring3的输出缓冲区,首先由系统锁定,并使用pIrp->MdlAddress来描述这段内存,驱动程序需要使用MmGetSystemAddressForMdlSafe函数将这段内存映射到内核内存地址(OutputBuffer),然后可以直接写入OutputBuffer地址,最终在驱动派遣例程返回后,由系统解除这段内存的锁定。

METHOD_IN_DIRECT和METHOD_OUT_DIRECT方式的内存访问
8METHOD_IN_DIRECT和METHOD_OUT_DIRECT方式的区别,仅在于打开设备的权限上,当以只读权限打开设备时,METHOD_IN_DIRECT方式的IoControl将会成功,而METHOD_OUT_DIRECT方式将会失败。如果以读写权限打开设备,两种方式都会成功。

  METHOD_IN_DIRECT和METHOD_OUT_DIRECT方式(借图):

       

 


(3)如果使用METHOD_NEITHER方式,"其他方式",虽然通信的效率提高了,但是不够安全。驱动的派遣函数中输入缓冲区可以通过I/O堆栈(IO_STACK_LOCATION)的stack->Parameters.DeviceIo Control.Type3InputBuffer得到。输出缓冲区可以通过pIrp->UserBuffer得到。由于驱动中的派遣函数不能保证传递进来的用户输入和输出地址,因此最好不要直接去读写这些地址的缓冲区。应该在读写前使用ProbeForRead和ProbeForWrite函数探测地址是否可读和可写。

  METHOD_ NEITHER方式是不进行缓冲的,在驱动中可以直接使用Ring3的输入输出内存地址,

  驱动程序可以通过pIrpStack->Parameters.DeviceIoControl.Type3InputBuffer得到Ring3的输入缓冲区地址(其中pIrpStack是IoGetCurrentIrpStackLocation(pIrp)的返回);通过pIrp-> UserBuffer得到Ring3的输出缓冲区地址。
由于METHOD_NEITHER方式并不安全,因此最好对Type3InputBuffer读取之前使用ProbeForRead函数进行探测,对UserBuffer写入之前使用ProbeForWrite函数进行探测,当没有发生异常时,再进行读取和写入操作。

  METHOD_NEITHER方式(借图):

  

二 .定义驱动设备名,符号链接名
定义好了IO控制码CTL_CODE,第二步驱动程序还要准备驱动设备名和符号链接名。     

    关于在Ring0层中要设置驱动设备名的同时还要设置符号链接名的原因,是因为只有符号链接名才可以被用户模式下的应用程序识别。

    windows下的设备是以"\Device\[设备名]”形式命名的。例如磁盘分区的c盘,d盘的设备名称就是"\Device\HarddiskVolume1”,"\Device\HarddiskVolume2”, 当然也可以不指定设备名称。                               如果IoCreateDevice中没有指定设备名称,那么I/O管理器会自动分配一个数字作为设备的名称。例如"\Device\00000001"。\Device\[设备名],不容易记忆,通常符号链接可以理解为设备的别名,更重要的是设备名,只能被内核模式下的其他驱动所识别,而别名可以被用户模式下的应用程序识别,例如c盘,就是名为"c:"的符号链接,其真正的设备对象是"\Device\HarddiskVolume1”,所以在写驱动时候,一般我们创建符号链接,即使驱动中没有用到,这也算是一个好的习惯吧。

驱动中符号链接名是这样写的
L"\\??\\HelloDDK" --->\??\HelloDDK

    或者
L"\\DosDevices\\HelloDDK"--->\DosDevices\HelloDDK


在应用程序中,符号链接名:
L"\\\\.\\HelloDDK"-->\\.\HelloDDK

    DosDevices的符号链接名就是??, 所以"\\DosDevices\\XXXX"其实就是\\??\\XXXX

              

1

2

3

4

#define DEVICE_OBJECT_NAME  L"\\Device\\BufferedIODeviceObjectName"

//设备与设备之间通信

#define DEVICE_LINK_NAME    L"\\DosDevices\\BufferedIODevcieLinkName"

//设备与Ring3之间通信

 

三.将符号链接名与设备对象名称关联 ,等待IO控制码

    驱动程序要做的最后一步,先用IoCreateDevice函数创建设备对象,再用IoCreateSymbolicLink将符号链接名与设备对象名称关联 ,大功告成,等待IO控制码。

    

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

    //创建设备对象名称

RtlInitUnicodeString(&DeviceObjectName,DEVICE_OBJECT_NAME);

//创建设备对象

Status = IoCreateDevice(DriverObject,NULL,

    &DeviceObjectName,

    FILE_DEVICE_UNKNOWN,

    0, FALSE,

    &DeviceObject);

if (!NT_SUCCESS(Status))

{

    return Status;

}

 

//创建设备连接名称

RtlInitUnicodeString(&DeviceLinkName, DEVICE_LINK_NAME);

//将设备连接名称与设备名称关联

Status = IoCreateSymbolicLink(&DeviceLinkName,&DeviceObjectName);

 

if (!NT_SUCCESS(Status))

{

    IoDeleteDevice(DeviceObject);

    return Status;

 

四.应用程序获取设备句柄,发送IO控制码。

    驱动程序铺垫打理好之后,应用程序就可以由符号链接名通过CreateFile函数获取到设备句柄DeviceHandle,再用本场的主角,DeviceIoControl通过这个DeviceHandle发送控制码了。

    先看看这两个函数:

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

BOOL WINAPI DeviceIoControl(

  _In_         HANDLE hDevice,       //CreateFile函数打开的设备句柄

  _In_         DWORD dwIoControlCode,//自定义的控制码

  _In_opt_     LPVOID lpInBuffer,    //输入缓冲区

  _In_         DWORD nInBufferSize,  //输入缓冲区的大小

  _Out_opt_    LPVOID lpOutBuffer,   //输出缓冲区

  _In_         DWORD nOutBufferSize, //输出缓冲区的大小

  _Out_opt_    LPDWORD lpBytesReturned, //实际返回的字节数,对应驱动程序中pIrp->IoStatus.Information。

  _Inout_opt_  LPOVERLAPPED lpOverlapped //重叠操作结构指针。同步设为NULL,DeviceIoControl将进行阻塞调用;否则,应在编程时按异步操作设计

);

 

 

 

 

 

 

 

HANDLE CreateFile(

  LPCTSTR lpFileName,                         //打开的文件名

  DWORD dwDesiredAccess,                    //访问权限

  DWORD dwShareMode,                      //共享模式

  LPSECURITY_ATTRIBUTES lpSecurityAttributes,   //安全属性

  DWORD dwCreationDisposition,               //文件存在与不存在时的文件创建模式

  DWORD dwFlagsAndAttributes,                //文件属性设定(隐藏、只读、压缩、指定为系统文件等)

  HANDLE hTemplateFile                       //文件副本句柄

);

  

  最后总结一下DeviceIoControl的通信流程:

    1.驱动程序和应用程序自定义好IO控制码 (CTL_CODE宏 四个参数,32位,4部分,存储设备类型,访问权限,操作功能,缓冲区数据传递方式(四种))

    2.驱动程序定义驱动设备名,符号链接名, 将符号链接名与设备对象名称关联 ,等待IO控制码(IoCreateDevice,IoCreateSymbolicLink)

    3.应用程序由符号链接名通过CreateFile函数获取到设备句柄DeviceHandle,再用本场的主角,DeviceIoControl通过这个设备句柄发送控制码给派遣函数。

 

 

 

 

  源代码:

  BufferedIO.h

  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#pragma once

#include <ntifs.h>

 

 

#define CTL_SYS \

    CTL_CODE(FILE_DEVICE_UNKNOWN,0x830,METHOD_BUFFERED,FILE_ANY_ACCESS)

 

 

#define DEVICE_OBJECT_NAME  L"\\Device\\BufferedIODeviceObjectName"

//设备与设备之间通信

#define DEVICE_LINK_NAME    L"\\DosDevices\\BufferedIODevcieLinkName"

//设备与Ring3之间通信

VOID DriverUnload(PDRIVER_OBJECT DriverObject);

NTSTATUS PassThroughDispatch(PDEVICE_OBJECT  DeviceObject, PIRP Irp);

NTSTATUS ControlThroughDispatch(PDEVICE_OBJECT  DeviceObject, PIRP Irp);

  

BufferedIO.c

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

#include "BufferedIO.h"

 

 

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegisterPath)

{

    NTSTATUS Status = STATUS_SUCCESS;

    PDEVICE_OBJECT  DeviceObject = NULL;

    UNICODE_STRING  DeviceObjectName;

    UNICODE_STRING  DeviceLinkName;

    ULONG           i;

    //   栈

    //   堆

    //   全局(global Static Const)

    DriverObject->DriverUnload = DriverUnload;

 

    //创建设备对象名称

    RtlInitUnicodeString(&DeviceObjectName,DEVICE_OBJECT_NAME);

 

    //创建设备对象

    Status = IoCreateDevice(DriverObject,NULL,

        &DeviceObjectName,

        FILE_DEVICE_UNKNOWN,

        0, FALSE,

        &DeviceObject);

    if (!NT_SUCCESS(Status))

    {

        return Status;

    }

    //创建设备连接名称

    RtlInitUnicodeString(&DeviceLinkName, DEVICE_LINK_NAME);

 

    //将设备连接名称与设备名称关联

    Status = IoCreateSymbolicLink(&DeviceLinkName,&DeviceObjectName);

 

    if (!NT_SUCCESS(Status))

    {

        IoDeleteDevice(DeviceObject);

        return Status;

    }

    //设计符合我们代码的派遣历程

    for (i=0;i<IRP_MJ_MAXIMUM_FUNCTION;i++)

    {

        DriverObject->MajorFunction[i] = PassThroughDispatch;   //函数指针

    }

    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ControlThroughDispatch;

    return Status;

}

//派遣历程

NTSTATUS PassThroughDispatch(PDEVICE_OBJECT  DeviceObject,PIRP Irp)

{

    Irp->IoStatus.Status = STATUS_SUCCESS;     //LastError()

    Irp->IoStatus.Information = 0;             //ReturnLength

    IoCompleteRequest(Irp, IO_NO_INCREMENT);   //将Irp返回给Io管理器

    return STATUS_SUCCESS;

}

NTSTATUS ControlThroughDispatch(PDEVICE_OBJECT  DeviceObject, PIRP Irp)

{

    NTSTATUS Status;

    ULONG_PTR Informaiton = 0;

    PVOID InputData = NULL;

    ULONG InputDataLength = 0;

    PVOID OutputData = NULL;

    ULONG OutputDataLength = 0;

    ULONG IoControlCode = 0;

    PIO_STACK_LOCATION  IoStackLocation = IoGetCurrentIrpStackLocation(Irp);  //Irp堆栈  

    IoControlCode = IoStackLocation->Parameters.DeviceIoControl.IoControlCode;

    InputData  = Irp->AssociatedIrp.SystemBuffer;

    OutputData = Irp->AssociatedIrp.SystemBuffer;

    InputDataLength  = IoStackLocation->Parameters.DeviceIoControl.InputBufferLength;

    OutputDataLength = IoStackLocation->Parameters.DeviceIoControl.OutputBufferLength;

    switch (IoControlCode)

    {

    case CTL_SYS:

    {

        if (InputData != NULL&&InputDataLength > 0)

        {

            DbgPrint("%s\r\n", InputData);

        }

        if (OutputData != NULL&&OutputDataLength >= strlen("Ring0->Ring3") + 1)

        {

            memcpy(OutputData, "Ring0->Ring3"strlen("Ring0->Ring3") + 1);

            Status = STATUS_SUCCESS;

            Informaiton = strlen("Ring0->Ring3") + 1;

        }

        else

        {

            Status = STATUS_INSUFFICIENT_RESOURCES;   //内存不够

            Informaiton = 0;

        }

        break;

    }

    default:

        break;

    }

    Irp->IoStatus.Status = Status;             //Ring3 GetLastError();

    Irp->IoStatus.Information = Informaiton;

    IoCompleteRequest(Irp, IO_NO_INCREMENT);  //将Irp返回给Io管理器

    return Status;                            //Ring3 DeviceIoControl()返回值

}

VOID DriverUnload(PDRIVER_OBJECT DriverObject)

{

    UNICODE_STRING  DeviceLinkName;

    PDEVICE_OBJECT  v1 = NULL;

    PDEVICE_OBJECT  DeleteDeviceObject = NULL;

     

    RtlInitUnicodeString(&DeviceLinkName, DEVICE_LINK_NAME);

    IoDeleteSymbolicLink(&DeviceLinkName);

 

    DeleteDeviceObject = DriverObject->DeviceObject;

    while (DeleteDeviceObject != NULL)

    {

        v1 = DeleteDeviceObject->NextDevice;

        IoDeleteDevice(DeleteDeviceObject);

        DeleteDeviceObject = v1;

    }

}

  

IO.cpp

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

// 缓冲区IO.cpp : 定义控制台应用程序的入口点。

//

 

#include "stdafx.h"

#include <windows.h>

#define DEVICE_LINK_NAME    L"\\\\.\\BufferedIODevcieLinkName"

 

 

#define CTL_SYS \

    CTL_CODE(FILE_DEVICE_UNKNOWN,0x830,METHOD_BUFFERED,FILE_ANY_ACCESS)

int main()

{

    HANDLE DeviceHandle = CreateFile(DEVICE_LINK_NAME,

        GENERIC_READ | GENERIC_WRITE,

        FILE_SHARE_READ | FILE_SHARE_WRITE,

        NULL,

        OPEN_EXISTING,

        FILE_ATTRIBUTE_NORMAL,

        NULL);

    if (DeviceHandle==INVALID_HANDLE_VALUE)

    {

        return 0;

    }

    char BufferData = NULL;

    DWORD ReturnLength = 0;

    BOOL IsOk = DeviceIoControl(DeviceHandle, CTL_SYS,

        "Ring3->Ring0",

        strlen("Ring3->Ring0")+1,

        (LPVOID)BufferData,

        0,

        &ReturnLength,

        NULL);

    if (IsOk == FALSE)

    {

        int LastError = GetLastError();

 

        if (LastError == ERROR_NO_SYSTEM_RESOURCES)

        {

            char BufferData[MAX_PATH] = { 0 };

            IsOk = DeviceIoControl(DeviceHandle, CTL_SYS,

                "Ring3->Ring0",

                strlen("Ring3->Ring0") + 1,

                (LPVOID)BufferData,

                MAX_PATH,

                &ReturnLength,

                NULL);

 

            if (IsOk == TRUE)

            {

                printf("%s\r\n", BufferData);

            }

        }

    }

    if (DeviceHandle != NULL)

    {

        CloseHandle(DeviceHandle);

        DeviceHandle = NULL;

    }

    printf("Input AnyKey To Exit\r\n");

 

    getchar();

    return 0;

}

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

相关文章

  1. APP的安装过程

    Android音频进阶Android系统音频发挥巨大作用,比如Speaker、蓝牙音乐、蓝牙电话、USB声卡、语音唤醒和识别、MIC阵列等,都需要Android系统音频做支撑,这些模块联系起来确是极其复杂,本栏会以高通平台为例深入分享几个模块.慢慢的燃烧9.90去订阅APP的安装过程...

    2024/3/19 3:12:12
  2. mac 下连接数据库,导入sql表

    首先找到mamp 中mysql的安装目录:/Applications/MAMP/Library/bin/mysql然后进入: /Applications/MAMP/Library/bin/mysql -u root -p1,导入 打开终端输入:(前提是已经配置过MySQL环境变量) 1,show databases; 2,create database name; 3,use name; 4,source 『将.sql文件…...

    2024/3/19 3:12:11
  3. es 聚合查询 满足多个字段同时匹配

    需求:去除 types = 0且ispublic = 1 的数据参看网上看到的的es查询语句:决解:...

    2024/3/19 3:12:09
  4. pytorch第一周作业

    1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的版本 import torch print("hello torch{}".format(torch.__version__)) print(torch.cuda.is_available())输出 hello torch1.2.0+cu92 True2. 张量与矩阵、向…...

    2024/3/19 3:12:08
  5. 点击//练习

    点击有惊喜 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>点击<title><style type="text/css">*{padding:0;margin:0;}#surprised{width:400px;height:200px;font-size:30p…...

    2024/3/19 3:12:08
  6. SpringBoot整合RabbitMQ的五种模式示例

    RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习。那么也就剩下5种。基本消息模型:生产者–>队列–>一个消费者work消息模型:生产者–>队列–>多个消费者共同消费订阅模型-Fanout:广播,将消息交给所有绑定到交换机的队列,每个消费者都…...

    2024/3/19 3:12:07
  7. webpack 打包后与index.html同级文件的配置

    起因:项目开发过程中,需要在根目录下配置一个iOS包的文件,这个文件只能在根目录下访问,就需要将这个文件打包后放在根目录中,通常我们使用webpack-cli 进行项目打包,会打包一个文件夹,然后包含页面与资源,如下图static 文件夹包含了css,js,静态资源文件等等。如果我们想…...

    2024/3/19 3:12:06
  8. Leetcode题解:5315. 6和9组成的最大数字

    题目描述 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。 请返回你可以得到的最大数字。 解题思路 思路一:利用区间夹出第一个不为6的数字,加上3*10^n; 思路二:转化为字符串/字符数组找到第一个不为‘6’的字符,将…...

    2024/3/19 3:12:05
  9. mysql基础篇-引擎区别

    引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 在文件系统中,…...

    2024/3/19 3:12:03
  10. 系统架构师考试 2019

    背景 ​做了多年的软件开发和项目管理,总觉得自己专业方面的知识和经验非常零散,不成体系。继18年通过PMP考试,让自己项目管理方面的知识完成了一次系统化的串联,对项目管理获得了更深刻的理解之后,就开始考虑学习系统架构师课程,本意还是期望通过考试,以考促学,把自己…...

    2024/3/24 17:30:58
  11. 测试工程师的2019年终总结

    一、基本情况本人女,测试工程师,坐标北京,2017年毕业。毕业后开始从事软件测试工作,到目前已经2年半,刚开始是外派到一家B公司,半年后就上2018年4月份入职到某学历培训的S公司,2019年10月份入职到某会计培训的D公司。现在来看,感觉跳槽是有些许的频繁,但是本人也不想啊…...

    2024/3/20 2:15:34
  12. Leetcode题解: LCP2 分式化简

    题目描述 有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,…...

    2024/3/12 16:42:06
  13. Sublime的使用技巧

    最常用的 1、新建文件-输入"html:xt"后 按"Ctrl+E键"或 “tab键” ,可快速生成xhtml 1.0的模板 2、新建文件-输入"html:5"后 按"Ctrl+E键"或 “tab键” ,可快速生成HTML5的模板 3、新建文件-输入"!"后 按"C…...

    2024/2/28 10:09:32
  14. Git Bash中Git log中文乱码——终极解决方案(转)

    RT在网上搜寻良久,大部分是:git config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding gbkexport LESSCHARSET=utf-8但是问题依然存在。再看上述命令,提交的编码是utf-8,日志输出确实gbk,不解,于是换成如下:git config --global i18n.…...

    2024/2/28 10:09:30
  15. java实现旋转图像算法:给定一个n×n的二维矩阵,将它顺时针旋转90°

    旋转图像算法:给定一个nn的二维矩阵,将它顺时针旋转90 例如: 输入: [1, 2, 3] [4, 5, 6] [7, 8, 9] 输出: [7, 4, 1] [8, 5, 2] [9, 6, 3] 输入: [1, 2, 3, 4] [5, 6, 7, 8] [9, 10, 11, 12] [13, 14, 15, 16] 输出: [13, 9, 5, 1] [14, 10, 6, 2] [15, 11, 7, 3] [16, 12, 8, …...

    2024/2/27 11:41:46
  16. 信安第一周

    南邮ctf签到题 第一题:key在哪里? 按ctrl+u查看源码或F12得到flag。<html><title>key在哪里?</title><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><a style="display:none"&…...

    2024/2/28 10:09:29
  17. 蓝桥杯ALGO-202 算法训练 二进制数数

    蓝桥杯ALGO-202 算法训练 二进制数数 问题描述给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。如5的二进制为101,包含2个“1”。 输入格式第一行包含2个数L,R 输出格式一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。 样例输入 2 3 样…...

    2024/3/22 17:42:31
  18. mysql基础篇-archive引擎

    1.archive 引擎特点 Archive引擎作用:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。 优点: 1.可以压缩:以zlib对表数据进行压缩,磁盘I/O更少,数据存储在ARZ为后缀的文件中。 2.存储空间小:Archive表比MyISAM表要小大约75%,比支持事务处理的…...

    2024/3/11 15:51:10
  19. Optional类

    Optional类 Optional是java8中新出现的一个类,最初是源自google gava库。目的是对臭名昭著的NullPointerException的异常做预防性的检查。Tips: Optional类的源码比较简单,建议大家在使用前仔细看下。我在下面的会给出简单的使用样例,包括一些代码的使用区别,阅读源码有利理…...

    2024/3/28 16:54:11
  20. Vue 组件间通信方法汇总

    传送门...

    2024/3/10 19:49:14

最新文章

  1. 如何压缩视频到最小?教会你压缩原理~

    在网上上传视频时&#xff0c;经常会遇到因为视频体积过大上传失败等情况发生&#xff0c;怎么降低视频体积呢&#xff1f;科普一个小知识&#xff1a;视频体积和视频的时长、编码格式、分辨率和比特率&#xff08;又称码率&#xff09;有关。视频文件大小计算公式&#xff1a;…...

    2024/3/29 3:23:00
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 零基础自学C语言|文件操作

    ✈为什么使用文件&#xff1f; 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化…...

    2024/3/28 21:15:14
  4. 【数据结构】String常量池

    文章目录 String常量池一、常量池的概念二、常见的常量池三、字符串常量池&#xff08;StringTable&#xff09;1.String的创建过程2.intern方法 String常量池 一、常量池的概念 public static void main(String[] args) {String s1 "happy";String s2 "happ…...

    2024/3/28 9:34:45
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/29 2:45:46
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/26 20:58:42
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/24 5:55:47
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/29 1:13:26
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/26 23:04:51
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/26 11:20:25
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/28 9:10:53
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/29 0:49:46
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57