Writefile函数和驱动中Write的对应关系,该如何解决
Writefile函数和驱动中Write的对应关系
在OK6410的驱动中有这样的定义:
DWORD SPI_Write(
DWORD hOpenContext,
LPVOID pBuffer,
DWORD Count)
当我调用Writefile函数想去写数据的时候,我不知道Writefile参数到底写到了哪里?我试验了一下既不是hOpenContext,也不是pBuffer,更不是Count,有谁指点一下Writefile函数是怎样吧数据传递给驱动的呢?
------解决方案--------------------
你看看它驱动入口怎么设置的IRP_MJ_WRITE
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/hardware/ff544174%28v=vs.85%29.aspx
SPI_Write肯定是间接调用的,DRIVER_OBJECT里MajorFunction是个虚函数表,里面有指向处理各种和虚拟设备通讯功能的函数指针,WriteFile对应的是其中的Write函数指针,所以不可能调用别的
------解决方案--------------------
Writefile->NtWriteFile->IopSynchronousServiceTail->IofCallDriver->DispatchRountine->.....->SPI_Write
------解决方案--------------------
看看有没有叫DriverEntry的函数或者长得像
在OK6410的驱动中有这样的定义:
DWORD SPI_Write(
DWORD hOpenContext,
LPVOID pBuffer,
DWORD Count)
当我调用Writefile函数想去写数据的时候,我不知道Writefile参数到底写到了哪里?我试验了一下既不是hOpenContext,也不是pBuffer,更不是Count,有谁指点一下Writefile函数是怎样吧数据传递给驱动的呢?
------解决方案--------------------
你看看它驱动入口怎么设置的IRP_MJ_WRITE
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/hardware/ff544174%28v=vs.85%29.aspx
SPI_Write肯定是间接调用的,DRIVER_OBJECT里MajorFunction是个虚函数表,里面有指向处理各种和虚拟设备通讯功能的函数指针,WriteFile对应的是其中的Write函数指针,所以不可能调用别的
------解决方案--------------------
Writefile->NtWriteFile->IopSynchronousServiceTail->IofCallDriver->DispatchRountine->.....->SPI_Write
------解决方案--------------------
看看有没有叫DriverEntry的函数或者长得像
- C/C++ code
NTSTATUS DriverEntry( __in struct _DRIVER_OBJECT *DriverObject, __in PUNICODE_STRING RegistryPath )