我按照书上的例子创建了一个VS2005的基于WM6 SDK的Win32 DLL工程,然后输入源代码,如下
#include <windows.h>
#include <tchar.h>
#define MAX_LENGTH 1024
HANDLE ghFile = NULL;
BOOL WINAPI DllEntryPoint(HANDLE hinstDLL, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
DWORD LOG_Init(DWORD dwContext)
{
ghFile = NULL;
return 1;
}
DWORD LOG_Deinit(DWORD dwContext)
{
ghFile = NULL;
return 1;
}
DWORD LOG_Open(DWORD hDeviceContext, DWORD dwAccessCode, DWORD dwShareMode)
{
ghFile = ::CreateFile(L "\\driver_log.txt ", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
return (ghFile != INVALID_HANDLE_VALUE);
}
DWORD LOG_Close(DWORD hOpenContext)
{
if (ghFile != NULL && ghFile != INVALID_HANDLE_VALUE)
{
::CloseHandle(ghFile);
ghFile = NULL;
return TRUE;
}
return FALSE;
}
BOOL LOG_IOControl(DWORD hOpenContext,
DWORD dwCode,
PBYTE pBufIn,
DWORD dwLenIn,
PBYTE pBufOut,
DWORD dwLenOut,
PDWORD pdwActualOut)
{
return TRUE;
}
void LOG_PowerDown(DWORD hDeviceContext)
{
}
void LOG_PowerUp(DWORD hDeviceContext)
{
}
DWORD LOG_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD dwCount)
{
DWORD dwActualCount = 0;
if (::ReadFile(ghFile, pBuffer, dwCount, &dwActualCount, NULL))
{
return dwActualCount;