⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ioctl.c

📁 S3C24A0的完整BSP包,对开发此芯片的开发者很有用.
💻 C
📖 第 1 页 / 共 2 页
字号:
}

BOOL TestIOCTL2(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL2 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}

BOOL TestIOCTL3(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL3 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}

BOOL TestIOCTL4(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL 4$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}

BOOL TestIOCTL5(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL5 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}

BOOL TestIOCTL6(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL6 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}

BOOL TestIOCTL7(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
	RETAILMSG(1, (TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Arrived TestIOCTL7 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\r\n")));
	return TRUE;
}



const OAL_IOCTL_HANDLER g_oalIoCtlTable[] = {

{ IOCTL_EDBG_DEREGISTER_CLIENT ,	  	0,     TestIOCTLa    },
{ IOCTL_EDBG_GET_OUTPUT_DEBUG_FN,     	0,     TestIOCTLb    },
{ IOCTL_EDBG_IS_STARTED,              	0,     TestIOCTLc    },
{ IOCTL_EDBG_RECV,                    	0,     TestIOCTLd    },
{ IOCTL_EDBG_REGISTER_CLIENT  ,       	0,     TestIOCTLe    },
{ IOCTL_EDBG_REGISTER_DFLT_CLIENT,   	0,     TestIOCTLf    },
{ IOCTL_EDBG_SEND,                    	0,     TestIOCTLg    },
{ IOCTL_EDBG_SET_DEBUG,               	0,     TestIOCTLh    },
{ IOCTL_HAL_DISABLE_WAKE,             	0,     OALIoCtlHalDisableWake  },
{ IOCTL_HAL_ENABLE_WAKE,              	0, 	   OALIoCtlHalEnableWake   },
{ IOCTL_HAL_PRESUSPEND,               	0, 	   OALIoCtlHalPresuspend   },
{ IOCTL_HAL_GET_WAKE_SOURCE,          	0,     OALIoCtlHalGetWakeSource},
{ IOCTL_HAL_AUTHENTICATE_DEVICE,      	0,     TestIOCTLi    },
{ IOCTL_HAL_DDK_CALL,                 	0,     OALIoCtlHalDdkCall      },
{ IOCTL_HAL_GETREGSECUREKEYS,         	0,     SecureRegistry    },
{ IOCTL_HAL_GET_BIN_CHAIN,            	0,     TestIOCTLj    },
{ IOCTL_HAL_GET_BOOTLOADER_PARAMS,    	0,     TestIOCTLk    },
{ IOCTL_HAL_GET_CACHE_INFO,           	0,     OALIoCtlHalGetCacheInfo    },
{ IOCTL_HAL_GET_DEVICEID,             	0,     OALIoCtlHalGetDeviceId    },
{ IOCTL_HAL_GET_DEVICE_INFO,          	0,     OALIoCtlHalGetDeviceInfo    },
{ IOCTL_HAL_GET_HIVE_CLEAN_FLAG,      	0,     TestIOCTLl    },
{ IOCTL_HAL_GET_HIVE_RAM_REGION,      	0,     TestIOCTLm    },
{ IOCTL_HAL_GET_HWENTROPY,           	0,     TestIOCTLn    },
{ IOCTL_HAL_GET_IMAGE_SIGNED_STATE,   	0,     TestIOCTLo    },
{ IOCTL_HAL_GET_IP_ADDR,              	0,     TestIOCTLp    },
{ IOCTL_HAL_GET_POWERONREASON,        	0,     TestIOCTLq    },
{ IOCTL_HAL_GET_RANDOM_SEED,          	0,     GetRandomSeed    },
{ IOCTL_HAL_GET_RIO_INFO,             	0,     TestIOCTLr    },
{ IOCTL_HAL_GET_UUID,                 	0,     OALIoCtlHalGetUUID    },
{ IOCTL_HAL_ILTIMING,                 	0,     TestIOCTLs    },
{ IOCTL_HAL_INITREGISTRY,             	0,     OALIoCtlHalInitRegistry    },
{ IOCTL_HAL_OEM_PROFILER,             	0,     TestIOCTLt    },
{ IOCTL_HAL_POSTINIT,                 	0,     TestIOCTLu         },
{ IOCTL_HAL_PROFILE,                  	0,     TestIOCTLv    },
{ IOCTL_HAL_QUERY_DEVICE_SETTINGS,    	0,     TestIOCTLw    },
{ IOCTL_HAL_QUERY_DISPLAYSETTINGS,    	0,     S3C24A0IoCtlQueryDispSettings    },
{ IOCTL_HAL_RADIO_CNTRL,              	0,     TestIOCTLx    },
{ IOCTL_HAL_REBOOT,                   	0,     OALIoCtlHalReboot    },
{ IOCTL_HAL_RELEASE_SYSINTR,          	0,     OALIoCtlHalReleaseSysIntr},
{ IOCTL_HAL_REQUEST_IRQ,              	0,     OALIoCtlHalRequestIrq},
{ IOCTL_HAL_REQUEST_SYSINTR,          	0, 	   OALIoCtlHalRequestSysIntr    },
{ IOCTL_HAL_SAVE_HIVE_RAM_REGION,     	0,     TestIOCTLy    },
{ IOCTL_HAL_SET_DEVICE_INFO,          	0,     TestIOCTLz    },
{ IOCTL_HAL_TRANSLATE_IRQ,            	0, 	   OALIoCtlHalRequestSysIntr    },
{ IOCTL_HAL_WHQL_TEST_MODE,           	0,     TestIOCTL0    },
{ IOCTL_HAL_WRITE_XIP,                  0,     TestIOCTL1    },
{ IOCTL_HAL_XIPCHAIN,                 	0,     TestIOCTL2    },
{ IOCTL_KITL_GET_INFO,                	0,     TestIOCTL3   },
{ IOCTL_PROCESSOR_INFORMATION,        	0, 	   OALIoCtlProcessorInfo    },
{ IOCTL_PSL_NOTIFY,                   	0,     TestIOCTL4    },
{ IOCTL_QUERY_PHYSICALMEM,            	0,     TestIOCTL5    },
{ IOCTL_SET_KERNEL_COMM_DEV,          	0,     TestIOCTL6    },
{ IOCTL_SET_KERNEL_DEV_PORT,          	0,     TestIOCTL7    },
{ IOCTL_HAL_INIT_RTC,				  	0,	   OALIoCtlHalInitRTC},

#ifdef IMGSHAREETH

// Standard VBRIDGE/ KITL Support

{ IOCTL_VBRIDGE_802_3_MULTICAST_LIST,    0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_ADD_MAC,                 0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_CURRENT_PACKET_FILTER,   0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_GET_ETHERNET_MAC,        0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_GET_RX_PACKET,           0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE,  0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_GET_TX_PACKET,           0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE,  0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_SHARED_ETHERNET,         0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_WILD_CARD,               0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_WILD_CARD_RESET_BUFFER,  0,    OALIoCtlVBridge   },
{ IOCTL_VBRIDGE_WILD_CARD_VB_INITIALIZED, 0,    OALIoCtlVBridge   },

#endif


// Required Termination

{ 0,                                      0,   NULL              }
};


BOOL SecureRegistry(UINT32 code, VOID* lpInBuf , UINT32 nInBufSize , VOID* lpOutBuf , 
    UINT32 nOutBufSize , UINT32 *lpBytesReturned ) 
{

    RegSecureKey OEMSecNames[] = {
        // Protect HKEY_LOCAL_MACHINE\Name and all of its values/subkeys
        { REGSEC_HKLM, 4, L"Name" },
        
        // Protect HKEY_LOCAL_MACHINE\OtherName and
        // HKEY_CURRENT_USER\OtherName and all of their values/subkeys
        { REGSEC_HKLM | REGSEC_HKCU, 9, L"OtherName" },
    };
    RegSecureKeyList OEMSecList = {
        sizeof(OEMSecNames) / sizeof(RegSecureKey),
        OEMSecNames,
    };
    DWORD dwName;

    RETAILMSG(1, (TEXT("In SecureRegistry&^$$&**\r\n")));
    // First call: return the required buffer size
    //   lpInBuf      unused, should be NULL
    //   nInBufSize   unused, should be 0
    //   lpOutBuf     pointer to a DWORD buffer size
    //   nOutBufSize  sizeof(DWORD)
    if (!lpInBuf && !nInBufSize && lpOutBuf && (nOutBufSize ==     sizeof(DWORD))) {
        DWORD dwBufSize;

        dwBufSize = sizeof(OEMSecList) + sizeof(OEMSecNames);
        // size of structs without names
        for (dwName = 0; dwName < OEMSecList.dwNumKeys; dwName++) {
            dwBufSize += OEMSecNames[dwName].wLen * sizeof(WCHAR); 
            // no nulls
        }
        
        *((DWORD*)lpOutBuf) = dwBufSize;
        return TRUE;

    // Second call: fill the provided buffer
    // lpInBuf      unused, should be NULL
    // nInBufSize   unused, should be 0
    // lpOutBuf     pointer to the buffer to be filled
    // nOutBufSize  buffer size, should be the same as returned on first        call
    } else if (!lpInBuf && !nInBufSize && lpOutBuf
            && (nOutBufSize > sizeof(OEMSecList) + sizeof(OEMSecNames))) {
        
        RegSecureKeyList *pKeys = (RegSecureKeyList*)lpOutBuf;
        // pStr moves through the buffer as strings are written
        LPBYTE pStr = (LPBYTE)lpOutBuf + sizeof(OEMSecList) +           sizeof(OEMSecNames);

        pKeys->dwNumKeys = OEMSecList.dwNumKeys;
        pKeys->pList     = (RegSecureKey*) ((LPBYTE)lpOutBuf +           sizeof(OEMSecList));
        for (dwName = 0; dwName < OEMSecList.dwNumKeys; dwName++) {
            pKeys->pList[dwName].wRoots = OEMSecNames[dwName].wRoots;
            pKeys->pList[dwName].wLen   = OEMSecNames[dwName].wLen;
            pKeys->pList[dwName].pName  = (LPWSTR)pStr;
            memcpy(pStr, (LPBYTE)OEMSecNames[dwName].pName,
                OEMSecNames[dwName].wLen * sizeof(WCHAR));

            pStr += OEMSecNames[dwName].wLen * sizeof(WCHAR);
    }

        return TRUE;

    } else {
        // Invalid args
        DEBUGCHK(0);
		return FALSE;
    }
	
}

BOOL GetRandomSeed(UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer, 
    UINT32 outSize, UINT32 *pOutSize)
{
 
  static unsigned int temp = 0;
  unsigned int dwBufSize;

  RETAILMSG(1, (TEXT("In GetRandomSeed ****** %x\r\n"), (code >> 2)&0x0FFF));
  dwBufSize = 0x453773 + temp++;
  *(unsigned int *)pOutBuffer = dwBufSize;
 outSize = sizeof(unsigned int);
 return TRUE;
}
//------------------------------------------------------------------------------
 
BOOL S3C24A0IoCtlQueryDispSettings (
    UINT32 code, VOID *lpInBuf, UINT32 nInBufSize, VOID *lpOutBuf, 
    UINT32 nOutBufSize, UINT32 *lpBytesReturned
) {
    DWORD dwErr = 0;

	RETAILMSG(1, (TEXT("In S3C24A0IoCtlQueryDispSettings^^^^^\r\n")));

    if (lpBytesReturned) {
        *lpBytesReturned = 0;
    }

    if (!lpOutBuf) {
        dwErr = ERROR_INVALID_PARAMETER;
    } else if (sizeof(DWORD)*3 > nOutBufSize) {
        dwErr = ERROR_INSUFFICIENT_BUFFER;
    } else {
        // Check the boot arg structure for the default display settings.
        __try {

            ((PDWORD)lpOutBuf)[0] = (DWORD)240;
            ((PDWORD)lpOutBuf)[1] = (DWORD)320;
            ((PDWORD)lpOutBuf)[2] = (DWORD)16;

            if (lpBytesReturned) {
                *lpBytesReturned = sizeof (DWORD) * 3;
            }

        } __except (EXCEPTION_EXECUTE_HANDLER) {
            dwErr = ERROR_INVALID_PARAMETER;
        }
    }

    if (dwErr) {
        NKSetLastError (dwErr);
    }

    return !dwErr;
}
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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