ioctl.cpp

来自「IO函数调用测试」· C++ 代码 · 共 57 行

CPP
57
字号
#include "stdafx.h"

#include "ioctl.h"

/****************************************************************************
*                               IOCTL::display
* Result: CString
*       A displayable IOCTL string
*
*	CTL_CODE(DeviceType, function, METHOD_BUFFERED,    FILE_ANY_ACCESS  )
*				       METHOD_IN_DIRECT,   FILE_READ_ACCESS )
*				       METHOD_OUT_DIRECT,  FILE_WRITE_ACCESS)
*				       METHOD_NEITHER,     ----             )
*
*        31                            16 1514 13                     2 1  0
*	+--------------------------------+----+------------------------+----+
*	| DeviceType                     |Acce| Function               |Meth|
*	+--------------------------------+----+------------------------+----+
*		16 bits                   2bits    12 bits              2bits
****************************************************************************/

CString IOCTL::display()
    {
     CString s;
     if(!valid)
	return s;

     LPCTSTR method[] = {
     		_T("METHOD_BUFFERED"),
		_T("METHOD_IN_DIRECT"),
		_T("METHOD_OUT_DIRECT"),
		_T("METHOD_NEITHER")};
     LPCTSTR access[] = {
     		_T("FILE_ANY_ACCESS"),
		_T("FILE_READ_ACCESS"),
		_T("FILE_WRITE_ACCESS"),
		_T("FILE_READ_ACCESS | FILE_WRITE_ACCESS")
			};

     WORD devtype = (WORD)((code >> 16) & 0xFFFF);
     CString user;
     if(devtype & 0x8000)
        { /* user-defined */
	 devtype &= ~0x8000;
	 user = _T(" | 0x8000");
	} /* user-defined */

     s.Format(_T("CTL_CODE(%d%s, %d, %s, %s)"), 
     				devtype,
				user,
				(code >> 2)  & 0x0FFF,
				method[ (code & 3)],
				access[ (code >> 14) & 3]);
				
     return s;
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?