在线中文-在线在线ccc66-在线永久免费观看的毛片-在线永久免费观看的a站视频-久久精品最新免费国产成人-久久精品综合一区二区三区


曙海教育集團(tuán)論壇Windows驅(qū)動(dòng)開(kāi)發(fā)專題Windows驅(qū)動(dòng)開(kāi)發(fā) → 驅(qū)動(dòng)加入code_seg("INIT")出現(xiàn)藍(lán)屏,


  共有5413人關(guān)注過(guò)本帖樹(shù)形打印

主題:驅(qū)動(dòng)加入code_seg("INIT")出現(xiàn)藍(lán)屏,

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個(gè)性首頁(yè) | 博客 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信
等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊(cè):2010-11-12 11:08:23
驅(qū)動(dòng)加入code_seg("INIT")出現(xiàn)藍(lán)屏,  發(fā)帖心情 Post By:2010-12-17 11:59:04

DeviceExtension:
8207fea8  8207fdf0 00280026 f8a77150 001a0018
8207feb8  f8a77130 00000000 0000000d 8207fdf0

DriverEntry結(jié)束后8207feb8空間被釋放,驅(qū)動(dòng)卸載時(shí)調(diào)用IoDeleteSymbolicLink函數(shù)藍(lán)屏,如果將code_seg("INIT")去掉可正常,啟動(dòng)/停止。

驅(qū)動(dòng)源碼來(lái)自《windows驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳解》,詫異的是在網(wǎng)上查詢沒(méi)找到該問(wèn)題的答案然道都能正常運(yùn)行?

源碼如下:

代碼:
/************************************************************************
* 文件名稱:Driver.cpp                                                 
* 作    者:張帆
* 完成日期:2007-11-1
*************************************************************************/

#include "Driver.h"

/************************************************************************
* 函數(shù)名稱:DriverEntry
* 功能描述:初始化驅(qū)動(dòng)程序,定位和申請(qǐng)硬件資源,創(chuàng)建內(nèi)核對(duì)象
* 參數(shù)列表:
      pDriverObject:從I/O管理器中傳進(jìn)來(lái)的驅(qū)動(dòng)對(duì)象
      pRegistryPath:驅(qū)動(dòng)程序在注冊(cè)表的中的路徑
* 返回 值:返回初始化驅(qū)動(dòng)狀態(tài)
*************************************************************************/
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (
      IN PDRIVER_OBJECT pDriverObject,
      IN PUNICODE_STRING pRegistryPath  ) 
{
  NTSTATUS status;
  KdPrint(("Enter DriverEntry\n"));

  //注冊(cè)其他驅(qū)動(dòng)調(diào)用函數(shù)入口
  pDriverObject->DriverUnload = HelloDDKUnload;
  pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine;
  pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutine;
  pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutine;
  pDriverObject->MajorFunction[IRP_MJ_READ] = HelloDDKDispatchRoutine;
  
  //創(chuàng)建驅(qū)動(dòng)設(shè)備對(duì)象
  status = CreateDevice(pDriverObject);

  KdPrint(("DriverEntry end\n"));
  return status;
}

/************************************************************************
* 函數(shù)名稱:CreateDevice
* 功能描述:初始化設(shè)備對(duì)象
* 參數(shù)列表:
      pDriverObject:從I/O管理器中傳進(jìn)來(lái)的驅(qū)動(dòng)對(duì)象
* 返回 值:返回初始化狀態(tài)
*************************************************************************/
#pragma INITCODE
extern "C" NTSTATUS CreateDevice (
    IN PDRIVER_OBJECT  pDriverObject) 
{
  NTSTATUS status;
  PDEVICE_OBJECT pDevObj;
  PDEVICE_EXTENSION pDevExt;
  
  //創(chuàng)建設(shè)備名稱
  UNICODE_STRING devName;
  RtlInitUnicodeString(&devName,L"\\Device\\MyDDKDevice");
  
  //創(chuàng)建設(shè)備
  status = IoCreateDevice( pDriverObject,
            sizeof(DEVICE_EXTENSION),
            &(UNICODE_STRING)devName,
            FILE_DEVICE_UNKNOWN,
            0, TRUE,
            &pDevObj );
  if (!NT_SUCCESS(status))
    return status;

  pDevObj->Flags |= DO_BUFFERED_IO;
  pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;
  pDevExt->pDevice = pDevObj;
  pDevExt->ustrDeviceName = devName;
  //創(chuàng)建符號(hào)鏈接
  UNICODE_STRING symLinkName;
  RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK");
  pDevExt->ustrSymLinkName = symLinkName;
  status = IoCreateSymbolicLink( &symLinkName,&devName );
  if (!NT_SUCCESS(status)) 
  {
    IoDeleteDevice( pDevObj );
    return status;
  }
  return STATUS_SUCCESS;
}

/************************************************************************
* 函數(shù)名稱:HelloDDKUnload
* 功能描述:負(fù)責(zé)驅(qū)動(dòng)程序的卸載操作
* 參數(shù)列表:
      pDriverObject:驅(qū)動(dòng)對(duì)象
* 返回 值:返回狀態(tài)
*************************************************************************/
#pragma PAGEDCODE
VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject) 
{
  PDEVICE_OBJECT  pNextObj;
  KdPrint(("Enter DriverUnload\n"));
  pNextObj = pDriverObject->DeviceObject;
  while (pNextObj != NULL) 
  {
    PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
      pNextObj->DeviceExtension;

    //刪除符號(hào)鏈接
    UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName;
    IoDeleteSymbolicLink(&pLinkName);
    pNextObj = pNextObj->NextDevice;
    IoDeleteDevice( pDevExt->pDevice );
  }
}

/************************************************************************
* 函數(shù)名稱:HelloDDKDispatchRoutine
* 功能描述:對(duì)讀IRP進(jìn)行處理
* 參數(shù)列表:
      pDevObj:功能設(shè)備對(duì)象
      pIrp:從IO請(qǐng)求包
* 返回 值:返回狀態(tài)
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
                 IN PIRP pIrp) 
{
  KdPrint(("Enter HelloDDKDispatchRoutine\n"));
  NTSTATUS status = STATUS_SUCCESS;
  // 完成IRP
  pIrp->IoStatus.Status = status;
  pIrp->IoStatus.Information = 0;  // bytes xfered
  IoCompleteRequest( pIrp, IO_NO_INCREMENT );
  KdPrint(("Leave HelloDDKDispatchRoutine\n"));
  return status;
}

代碼:
/************************************************************************
* 文件名稱:Driver.h                                                 
* 作    者:張帆
* 完成日期:2007-11-1
*************************************************************************/
#pragma once

#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h>
#ifdef __cplusplus
}
#endif 

#define PAGEDCODE code_seg("PAGE")
#define LOCKEDCODE code_seg()
#define INITCODE code_seg("INIT")

#define PAGEDDATA data_seg("PAGE")
#define LOCKEDDATA data_seg()
#define INITDATA data_seg("INIT")

#define arraysize(p) (sizeof(p)/sizeof((p)[0]))

typedef struct _DEVICE_EXTENSION {
  PDEVICE_OBJECT pDevice;
  UNICODE_STRING ustrDeviceName;  //設(shè)備名稱
  UNICODE_STRING ustrSymLinkName;  //符號(hào)鏈接名
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

// 函數(shù)聲明

extern "C" NTSTATUS CreateDevice (IN PDRIVER_OBJECT pDriverObject);
VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject);
NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
                 IN PIRP pIrp);

支持(0中立(0反對(duì)(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

驅(qū)動(dòng)加入code_seg("INIT")出現(xiàn)藍(lán)屏,








簽名
主站蜘蛛池模板: 国产成人综合精品一区 | 手机在线免费 | 亚洲六月丁香色婷婷综合久久 | 免费羞羞网站视频 | 精品久久久久久中文字幕欧美 | 五月激情网站 | 2021国产麻豆剧传媒古装 | 99热在线获取最新地址 | 香蕉97| 日韩在线欧美在线 | 一道本一区二区三区 | 羞羞视频免费网站com | 亚洲免费视频观看 | 在线国产区 | 国产精品久久久久久一级毛片 | 波多野结衣视频网站 | 久久精品国产一区二区三区 | 国产精品久久久久久影院 | 成人欧美一区二区三区黑人免费 | 亚洲五月花 | 欧美视频在线播放观看免费福利资源 | 这里只有久久精品 | 伊人久久大香 | 羞羞视频网站在线观看 | 四虎免费永久网站入口 | 人人爽天天爽 | 亚洲精品美女久久久aaa | 波多野结衣高清在线观看 | 在线你懂的视频 | 亚洲国产成人最新精品资源 | 久久免费精品视频 | 欧美在线日韩 | 四虎影视久久久免费 | 亚洲第一福利视频导航 | 四虎影院成人在线观看 | 激情五月婷婷丁香 | 国产精品一区二区久久精品 | 欧美一级久久久久久久久大 | 亚洲成人综合网站 | 午夜欧美精品久久久久久久 | 亚洲国产日韩欧美一区二区三区 |