📄 lock.c
字号:
/*
* lock.c
*
* Ethernet Packet Interface to NDIS drivers.
*
* Copyright 1998 Equivalence Pty. Ltd.
*
* Original code by William Ingle (address unknown)
*
* $Log: lock.c,v $
* Revision 1.1 2006/06/29 04:19:28 joegenbaclor
* *** empty log message ***
*
* Revision 1.1 1998/09/28 08:08:38 robertj
* Initial revision
*
*/
#define WANTVXDWRAPS
#include <basedef.h>
#include <vmm.h>
#include <vxdwraps.h> // must come last
#include "lock.h"
#pragma VxD_LOCKED_CODE_SEG
#pragma VxD_LOCKED_DATA_SEG
DWORD _stdcall PacketPageLock(DWORD lpMem, DWORD cbSize)
{
// lock a page
DWORD LinOffset = lpMem & 0xfff; // page offset of memory to map
DWORD LinPageNum = lpMem >> 12; // generate page number
DWORD nPages = ((lpMem + cbSize) >> 12) - LinPageNum + 1; // Calculate # of pages to map globally
// Return global mapping of passed in pointer, as this new pointer
// is how the memory must be accessed out of context.
return _LinPageLock(LinPageNum, nPages, PAGEMAPGLOBAL) + LinOffset;
}
void _stdcall PacketPageUnlock(void * lpMem, DWORD cbSize)
{
// unlock a page
DWORD LinPageNum = (DWORD)lpMem >> 12;
DWORD nPages = (((DWORD)lpMem + cbSize) >> 12) - LinPageNum + 1;
// Free globally mapped memory
_LinPageUnlock(LinPageNum, nPages, PAGEMAPGLOBAL);
}
// End of File ////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -