我想让计算机显示蓝屏信息。
怎么样能蓝屏?

解决方案 »

  1.   

    用驱动来完成!很简单,只要随便该一个字母,立马就蓝屏,很管用
    =============================================
    我想也是用驱动,但是我没做驱动,下了几本书,全是WDM,虚拟机,即插即用什么的。
    我无从入手。能不给点代码?或写个简单的东西,我参考一下
      

  2.   

    内事不决问老婆,外事不决问google
    用google搜索“蓝屏炸弹”
      

  3.   

    /*******************************************************************
                        驱动入口函数
    ********************************************************************/
    NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
    {
    NTSTATUS status;
    UNICODE_STRING uniNameString,uniDosNameString;
    PDEVICE_OBJECT FdoDeviceObject;
    PDEVICE_EXTENSION pdx;    KdPrint(("进入驱动入口函数!\n"));
    KdPrint(("RegistryPath=%wZ\n",RegistryPath));    //指定设备名字
    RtlInitUnicodeString(&uniNameString,L"\\Device\\TestDriver");
    //创建符号连接
    RtlInitUnicodeString(&uniDosNameString,L"\\DosDevices\\TestDriver"); KdPrint(("uniNameString=%wZ\n",&uniNameString));    //创建设备
    status=IoCreateDevice(DriverObject,
                           sizeof(DEVICE_EXTENSION),
       &uniNameString,
       FILE_DEVICE_UNKNOWN,
       0,
       FALSE,
       &FdoDeviceObject);
     KdPrint(("创建设备完成!\n")); if(!NT_SUCCESS(status))
    {
    KdPrint(("!NT_SUCCESS(status)0x%8x\n",status));
    return status;
    }   //创建扩展设备对象
    pdx=(PDEVICE_EXTENSION)FdoDeviceObject->DeviceExtension; KdPrint(("PDEVICE_EXTENSION的地址为0x%8x\n",pdx)); //存储FdoDeviceObject
    pdx->fdo=FdoDeviceObject; //存储连接符号
    RtlInitUnicodeString(&pdx->ifSymLinkName,L"\\DosDevices\\TestDriver"); //存储下一个设备对象地址
    //pdx->NextStackDevice=IoAttachDeviceToDeviceStack(FdoDeviceObject,Pdo);    KdPrint(("创建扩展设备完成!\n"));    KdPrint(("uniDosNameString=%wZ\n",&pdx->ifSymLinkName)); //创建符号连接
    status = IoCreateSymbolicLink (&uniDosNameString, &uniNameString);
        if (!NT_SUCCESS(status))
        {
    //IoDetachDevice(pdx->NextStackDevice);
    IoDeleteDevice(FdoDeviceObject);
    KdPrint(("status=0x%8x\n",status));
            return status;
        }
         
       // 指定驱动程序有关操作的模块入口(函数指针)
        //DriverObject->DriverExtension->AddDevice = TestAddDevice;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]=TestControl;
    DriverObject->MajorFunction[IRP_MJ_CREATE]=TestCreate;
    DriverObject->DriverUnload = TestDriverUnload; return STATUS_SUCCESS;
    }/*
    NTSTATUS TestAddDevice(IN PDRIVER_OBJECT DriverObject,IN PDEVICE_OBJECT Pdo)
    {
       KdPrint(("驱动进入AddDevice函数\n"));   return STATUS_SUCCESS;
    }
    *///CreateFile()的分发例程
    NTSTATUS TestCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
    {
    NTSTATUS status;
    //PDEVICE_EXTENSION pdx; KdPrint(("驱动进入IRP_MJ_CREATE\n"));   //创建一个设备扩展对象pdx,用于存储指向fdo扩展设备的指针:
    //pdx=(PDEVICE_EXTENSION)DeviceObject->DeviceExtension; //IoSkipCurrentIrpStackLocation(Irp);    /*status=IoCallDriver(pdx->NextStackDevice,Irp);
    if(NT_SUCCESS(status))
    {
    KdPrint(("IoCallDriver()函数执行成功!\n"));
    KdPrint(("status=0x%8x\n",status));
    return status; 
    }
    */
        IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS;
    }NTSTATUS TestControl(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
    {   
    PIO_STACK_LOCATION IrpStack;
        ULONG              dwIoControlCode;
        PULONG             pvIOBuffer;
        NTSTATUS           ntStatus;
    //PDEVICE_EXTENSION dx=(PDEVICE_EXTENSION)DeviceObject->DeviceExtension; Irp->IoStatus.Status=STATUS_SUCCESS;
    Irp->IoStatus.Information=0; KdPrint(("驱动进入DeviceIoControl函数控制区!\n")); IrpStack=IoGetCurrentIrpStackLocation(Irp); // 输入输出共用的缓冲区
        // 因为我们在IOCTL中指定了METHOD_BUFFERED,
    pvIOBuffer=Irp->AssociatedIrp.SystemBuffer;
        
    dwIoControlCode=IrpStack->Parameters.DeviceIoControl.IoControlCode;
     switch (dwIoControlCode)
         {  case IOCTL_ONE:  
          KdPrint(("程序执行了IOCTL_ONE控制码!\n"));
              KdPrint(("pvIOBuffer[0]=%ld\n",pvIOBuffer[0]));
                  KdPrint(("pvIOBuffer[1]=%ld\n",pvIOBuffer[1]));
          pvIOBuffer[0]=120;
          pvIOBuffer[1]=20; 
                  Irp->IoStatus.Information = sizeof(pvIOBuffer)*2;  // 输出长度4*2
                  break;
     case IOCTL_TWO:
          KdPrint(("程序执行了IOCTL_TWO控制码!\n"));
          pvIOBuffer[0]=20;
          pvIOBuffer[1]=120; 
      Irp->IoStatus.Information = sizeof(pvIOBuffer)*2;  // 输出长度为8
                  break;
          default:        
             Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
         }
     ntStatus = Irp->IoStatus.Status;  //IoSkipCurrentIrpStackLocation(Irp);
    // IoCallDriver(dx->NextStackDevice,Irp);
      
        IoCompleteRequest (Irp, IO_NO_INCREMENT);  KdPrint(("完成IRP!\n"));
      
        return ntStatus;
    }void TestDriverUnload(IN PDRIVER_OBJECT DriverObject)
    {
    UNICODE_STRING uniDosNameString; KdPrint(("驱动卸载成功!\n")); RtlInitUnicodeString(&uniDosNameString,L"\\DosDevices\\TestDriver"); // 删除符号连接和设备
        IoDeleteSymbolicLink (&uniDosNameString);  //RtlFreeUnicodeString(&uniDosNameString);    IoDeleteDevice(DriverObject->DeviceObject);
    }
    你可以按照这个示例(这个示例是正常工作的),随便改,立马蓝屏(我的机器是重起)