轉自:http://hi.baidu.com/alalmn/item/f02d5c866fc2d6eae496e089
IoCreateDevice 爲驅動創建一個設備對象 格式如下:
NTSTATUS IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN PUNICODE_STRING DeviceName OPTIONAL,
IN DEVICE_TYPE DeviceType,
IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject );
參數:
DriverObject
爲指針調用驅動程序對象。每個驅動程序接收一個參數的指針。
DeviceExtensionSize //0
給_DEVICE_OBJECT.DeviceExtension指定內存空間大小,具體看自己定義結構的大小
DeviceName
設備名字
DeviceType
設備類型 這裏我們用FILE_DEVICE_UNKNOWN
DeviceCharacteristics
設備特徵信息 一般爲0
Exclusive
是否指定設備爲獨佔 是爲TRUE,否爲FALSE
DeviceObject
指針變量接收一個指向新創建的DEVICE_OBJECT結構。用來回傳數據
返回值
調用成功會返回 STATUS_SUCCESS 如果出錯會返回下列值
STATUS_INSUFFICIENT_RESOURCES//資源不足
STATUS_OBJECT_NAME_EXISTS //指定對象名存在
STATUS_OBJECT_NAME_COLLISION//對象名有衝突
///////////////////////////////////////////////////////////////
IoCreateSymbolicLink
創建一個設備鏈接。驅動程序雖然有了設備名稱,但是這種設備名稱只能在內核 態可見,而對於應用程序是不可見的,因此,驅動需要要暴露一個符號鏈接,該鏈接指向真正的設備名稱
NTSTATUS IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,
IN PUNICODE_STRING DeviceName );
參數:
SymbolicLinkName
Unicode字符串指針,是一個用戶態可見的名稱。
DeviceName
Unicode字符串指針,是驅動程序創建的設備對象名稱。
Return Value
如果符號鏈接創建成功 返回STATUS_SUCCESS
///////////////////////////////////////////////////////////////
VOID IoDeleteDevice(
IN PDEVICE_OBJECT DeviceObject
);
參數
DeviceObject
PDEVICE_OBJECT類型的指針,指向需要刪除的設備對象
無返回值