阅读:1032回复:9
这是为什么?
请看下面的程序:
KMemory Mem(I.Mdl()); // Declare a memory object // Use the memory object to create a pointer to the caller\'s buffer PUCHAR pBuffer = (PUCHAR) Mem.VirtualAddress(); ULONG dwTotalSize = I.ReadSize(CURRENT); // Requested read size ULONG dwBytesRead = 0; // Count of bytes read KIoRange m_ParPortIos; NTSTATUS status1 = m_ParPortIos.Initialize( 0x378, // LPT1 Bus address TRUE, //InCpuIoSpace 8, // Device size TRUE // Map to system space ); if(status1!=STATUS_SUCCESS) { I.Information() = 0; return I.PnpComplete(this, STATUS_SUCCESS); } #define CONTROL 2 //(37A) #define ADDRESS 3 //(37B) #define EDATA 4 //(37C) PUCHAR ppBuffer =new UCHAR[dwTotalSize+1]; for(int i=0;i<dwTotalSize;i++) *(ppBuffer+i)=\'0\'+i; m_ParPortIos.outb(CONTROL,0x80);//½ûÖ¹ÖÐ¶Ï m_ParPortIos.outb(ADDRESS,0); m_ParPortIos.outb(EDATA,ppBuffer,dwTotalSize); m_ParPortIos.inb(EDATA,pBuffer,dwTotalSize); ppBuffer[]的内容为\"0,1,2,3,4,5,6...\",可为什么pBuffer[]的内容为\"FF,FF,FF,FF....\"啊 [编辑 - 7/30/02 by yunfangfan] [编辑 - 7/30/02 by yunfangfan] |
|
|
沙发#
发布于:2002-07-29 16:44
for(int i=0;i<dwTotalSize;i++)
ppBuffer=\'0\'+i; ppBuffer是\"01234...\"吗? |
|
板凳#
发布于:2002-07-29 16:45
是呀,没错啊
|
|
|
地板#
发布于:2002-07-29 17:29
ppBuffer=\'0\'+i;什么语法?
应该是ppBuffer=\'0\'+i;吧? |
|
|
地下室#
发布于:2002-07-29 17:35
ppBuffer=\'0\'+i
ppBuffer应是指针 |
|
5楼#
发布于:2002-07-29 17:38
ppBuffer=\'0\'+i;什么语法? 本来就是嘛,ppBuffer本来是不需要的,我只是想看看读取的数据为什么不对,我用SOFTICE跟踪发现ppBuffer是0,1,2,3,4,5,6...可马上读出到pBuffer就不对了,变成了FF,FF,FF,FF,FF,FF,FF...你说咋会事啊 |
|
|
6楼#
发布于:2002-07-29 17:39
选上“不使用smileys?”再写代码,看看。
|
|
7楼#
发布于:2002-07-29 17:41
选上“不使用smileys?”再写代码,看看。 在哪儿选上“不使用smileys?” |
|
|
8楼#
发布于:2002-07-29 17:43
应写在: for(int i=0;i<dwTotalSize;i++) *(ppBuffer + i)=\'0\'+i; 对你的code表示强烈不解! |
|
|
9楼#
发布于:2002-07-29 18:07
在回复帖子的下面。
|
|