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

📄 filesrv.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
字号:
/******************************************************
Copyright(c) 版权所有,1998-2003微逻辑。保留所有权利。
******************************************************/

/*****************************************************
文件说明:文件系统管理模块-服务注册部分
版本号:1.0.0
开发时期:2000
作者:李林
修改记录:
******************************************************/

#include <eframe.h>
#include <efile.h>
#include <eapisrv.h>
#include <efsdmgr.h>
#include <filesrv.h>

#define FILESRV_ZONE 0
extern void InitRegistry( void );

///////////////////////////////////////////////////
// 文件系统API功能集
static const PFNVOID lpFileSysAPI[] = 
{
	NULL,
    (PFNVOID)FileSys_CreateDirectory,
    (PFNVOID)FileSys_CreateFile,
	(PFNVOID)FileSys_CloseFile,
    (PFNVOID)FileSys_DeleteAndRename,
    (PFNVOID)FileSys_Delete,
    (PFNVOID)FileSys_DeviceIoControl,
    (PFNVOID)FileSys_FindClose,
    (PFNVOID)FileSys_FindFirst,
    (PFNVOID)FileSys_FindNext,
    (PFNVOID)FileSys_FlushBuffers,
    (PFNVOID)FileSys_GetDiskFreeSpaceEx,
    (PFNVOID)FileSys_GetAttributes,
    (PFNVOID)FileSys_GetInformation,
    (PFNVOID)FileSys_GetSize,
    (PFNVOID)FileSys_GetTime,
    (PFNVOID)FileSys_Move,
    (PFNVOID)FileSys_Read,
    (PFNVOID)FileSys_ReadWithSeek,
    (PFNVOID)FileSys_RemoveDirectory,
    (PFNVOID)FileSys_SetEnd,
    (PFNVOID)FileSys_SetAttributes,
    (PFNVOID)FileSys_SetPointer,
    (PFNVOID)FileSys_SetTime,
    (PFNVOID)FileSys_Write,
    (PFNVOID)FileSys_WriteWithSeek,
    (PFNVOID)FileSys_Copy
};

// 文件系统API功能集-参数说明
static const DWORD dwFileSysArgs[] = 
{
	0,
    ARG2_MAKE( PTR, PTR ),//CreateDirectory,
    ARG7_MAKE( PTR, DWORD, DWORD, PTR, DWORD, DWORD, DWORD ),//CreateFile,
	ARG1_MAKE( DWORD ),//CloseFile,
    ARG2_MAKE( PTR, PTR ),//DeleteAndRename,
    ARG1_MAKE( PTR ),//Delete,
    ARG8_MAKE( DWORD, DWORD, PTR, DWORD, PTR, DWORD, PTR, PTR ),//DeviceIoControl,
    ARG1_MAKE( DWORD ),//FindClose,
    ARG2_MAKE( PTR, PTR ),//FindFirst,
    ARG2_MAKE( DWORD, PTR ),//FindNext,
    ARG1_MAKE( DWORD ),//FlushBuffers,
    ARG4_MAKE( PTR, PTR, PTR, PTR ),//GetDiskFreeSpaceEx,
    ARG1_MAKE( PTR ),//GetAttributes,
    ARG2_MAKE( DWORD, PTR ),//GetInformation,
    ARG2_MAKE( DWORD, PTR ),//GetSize,
    ARG4_MAKE( DWORD, PTR, PTR, PTR ),//GetTime,
    ARG2_MAKE( PTR, PTR ),//Move,
    ARG5_MAKE( DWORD, PTR, DWORD, PTR, PTR ),//Read,
    ARG7_MAKE( DWORD, PTR, DWORD, PTR, PTR, DWORD, DWORD ),//ReadWithSeek,
    ARG1_MAKE( PTR ),//RemoveDirectory,
    ARG1_MAKE( DWORD ),//SetEnd,
    ARG2_MAKE( PTR, DWORD ),//SetAttributes,
    ARG4_MAKE( DWORD, DWORD, PTR, DWORD ),//SetPointer,
    ARG4_MAKE( DWORD, PTR, PTR, PTR ),//SetTime,
    ARG5_MAKE( DWORD, PTR, DWORD, PTR, PTR ),//Write,
    ARG6_MAKE( DWORD, PTR, DWORD, PTR, DWORD, DWORD ),//WriteWithSeek,
    ARG3_MAKE( PTR, PTR, DWORD ),//Copy
};

////////////////////////////////////
// 文件系统管理API注册功能集
static const PFNVOID lpFsdMgrAPI[] = {
	NULL,
	(PFNVOID)FileMgr_GetDiskInfo,
	(PFNVOID)FileMgr_ReadDisk,
	(PFNVOID)FileMgr_WriteDisk,
	(PFNVOID)FileMgr_RegisterVolume,
	(PFNVOID)FileMgr_RegisterFSD,
	(PFNVOID)FileMgr_UnregisterFSD,
	(PFNVOID)FileMgr_GetVolumeName,
	(PFNVOID)FileMgr_DeregisterVolume,
	(PFNVOID)FileMgr_CreateFileHandle,
	(PFNVOID)FileMgr_CloseFileHandle,
	(PFNVOID)FileMgr_CreateSearchHandle,
	(PFNVOID)FileMgr_CloseSearchHandle,
	(PFNVOID)FileMgr_DeviceIoControl
};

// 文件系统管理API注册功能集-参数说明
static const DWORD dwFsdMgrArgs[] = {
	NULL,
	ARG2_MAKE( DWORD, PTR ),//GetDiskInfo,
	ARG5_MAKE( DWORD, DWORD, DWORD, PTR, DWORD ),//ReadDisk,
	ARG5_MAKE( DWORD, DWORD, DWORD, PTR, DWORD ),//WriteDisk,
	ARG3_MAKE( DWORD, PTR, DWORD ),//RegisterVolume,
	ARG2_MAKE( PTR, PTR ),//RegisterFSD,
	ARG1_MAKE( PTR ),//UnregisterFSD,
	ARG3_MAKE( DWORD, PTR, DWORD ),//GetVolumeName,
	ARG1_MAKE( DWORD ),//DeregisterVolume,
	ARG3_MAKE( DWORD, DWORD, DWORD ),//CreateFileHandle,
	ARG1_MAKE( DWORD ),//CloseFileHandle,
	ARG3_MAKE( DWORD, DWORD, DWORD ),//CreateSearchHandle,
	ARG1_MAKE( DWORD ),//CloseSearchHandle,
	ARG8_MAKE( DWORD, DWORD, PTR, DWORD, PTR, DWORD, PTR, PTR ),//DeviceIoControl
};

// 注册表API功能集
static const PFNVOID lpRegistryAPI[] = {
	NULL,
    (PFNVOID)FileReg_CloseKey,
    (PFNVOID)FileReg_CreateKeyEx,
    (PFNVOID)FileReg_DeleteKey,
    (PFNVOID)FileReg_DeleteValue,
    (PFNVOID)FileReg_EnumKeyEx,
    (PFNVOID)FileReg_FlushKey,
    (PFNVOID)FileReg_EnumValue,
    (PFNVOID)FileReg_OpenKeyEx,
    (PFNVOID)FileReg_QueryInfoKey,
    (PFNVOID)FileReg_QueryValueEx,
    (PFNVOID)FileReg_SetValueEx
};

// 注册表API功能集-参数说明
static const DWORD dwRegistryArgs[] = {
	0,
    ARG1_MAKE( DWORD ),//RegCloseKey,
    ARG9_MAKE( DWORD, PTR, DWORD, PTR, DWORD, DWORD, PTR, PTR, PTR ),//RegCreateKeyEx,
    ARG2_MAKE( DWORD, PTR ),//RegDeleteKey,
    ARG2_MAKE( DWORD, PTR ),//RegDeleteValue,
    ARG8_MAKE( DWORD, DWORD, PTR, PTR, PTR, PTR, PTR, PTR ),//RegEnumKeyEx,
    ARG1_MAKE( DWORD ),//RegFlushKey,
    ARG8_MAKE( DWORD, DWORD, PTR, PTR, PTR, PTR, PTR, PTR ),//RegEnumValue,
    ARG5_MAKE( DWORD, PTR, DWORD, DWORD, PTR ),
    ARG12_MAKE( DWORD, PTR, PTR, PTR, PTR, PTR, PTR, PTR, PTR, PTR, PTR, PTR ),//RegQueryInfoKey,
    ARG6_MAKE( DWORD, PTR, PTR, PTR, PTR, PTR ),//RegQueryValueEx,
    ARG6_MAKE( DWORD, PTR, DWORD, DWORD, PTR, DWORD ),//RegSetValueEx
};

// **************************************************
// 声明:void InstallFileServer( void )
// 参数:
//	无
// 返回值:
//	无	
// 功能描述:
//	安装文件系统
// 引用: 
//	被 fsmain.c 调用
// **************************************************

void InstallFileServer( void )
{
	DEBUGMSG( FILESRV_ZONE, ( "InstallFileServer API_FILESYS.\r\n" ) );
	API_RegisterEx( API_FILESYS,  lpFileSysAPI, dwFileSysArgs, sizeof( lpFileSysAPI ) / sizeof(PFNVOID) );
	DEBUGMSG( FILESRV_ZONE, ( "InstallFileServer API_FSDMGR.\r\n" ) );
    API_RegisterEx( API_FSDMGR,  lpFsdMgrAPI, dwFsdMgrArgs, sizeof( lpFsdMgrAPI ) / sizeof(PFNVOID) );
	DEBUGMSG( FILESRV_ZONE, ( "InstallFileServer API_REGISTRY.\r\n" ) );
    API_RegisterEx( API_REGISTRY,  lpRegistryAPI, dwRegistryArgs, sizeof( lpRegistryAPI ) / sizeof(PFNVOID) );
}

//HANDLE hFileSysEvent;
// **************************************************
// 声明:int CALLBACK FileSys_Init( void )
// 参数:
//	无	
// 返回值:
//	假如成功,返回TRUE; 否则,返回FALSE
// 功能描述:
//	文件系统初始化
// 引用: 
//	
// **************************************************
#define DEBUG_FileSys_Init 0
int CALLBACK FileSys_Init( void )
{
	extern BOOL _LoadRamdisk( void );
	extern BOOL _LoadRomdisk( void );
	extern BOOL _InstallKMFS( void );


    //DbgOutString( "InitFileSystemMgr\r\n" );
    //if( _InitFileSystemMgr() == FALSE )
      //  return FALSE;
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "InitFileSystemMgr.\r\n" ) );
	InstallFileServer();
//    DbgOutString( "_Install Kingmos file system.\r\n" );
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "Install Kingmos file system.\r\n" ) );
    if( _InstallKMFS() == FALSE )
	{
		DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "InstallDefaultFAT return FALSE.\r\n" ) );
        return FALSE;    
	}

	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys ramdisk device-begin\r\n" ) );
	_LoadRamdisk();
	//_LoadSRAMDISK();
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys ramdisk device-ok\r\n" ) );

#ifndef INLINE_PROGRAM
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys romfsd device-begin.\r\n" ) );
	InitRomFsd();  // 
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys romfsd device-end.\r\n" ) );
#endif

	_LoadRomdisk();
	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys registry-begin.\r\n" ) );
    InitRegistry();

	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "now load sys registry-end.\r\n" ) );
	API_SetReady( API_FILESYS );
	API_SetReady( API_FSDMGR );

	DEBUGMSG( FILESRV_ZONE | DEBUG_FileSys_Init, ( "filesys is ready.\r\n" ) );
	return TRUE;
}

// **************************************************
// 声明:void CALLBACK FileSys_Deinit( void )
// 参数:
//		无
// 返回值:
//		无
// 功能描述:
//		与 FileSys_Init 相反,卸载文件系统
// 引用: 
// **************************************************

void CALLBACK FileSys_Deinit( void )
{
	extern void _UnInstallKMFS( void );
    _UnInstallKMFS();
}

/*
int CALLBACK FileSys_WinMain(
							 HINSTANCE hInstance,
							 HINSTANCE hPrevInstance,
							 LPSTR     lpCmdLine,
							 int       nCmdShow )

{

    DbgOutString( "InitFileSystemMgr\r\n" );
    if( _InitFileSystemMgr() == FALSE )
        return FALSE;
	InstallFileServer();
    DbgOutString( "_InstallDefaultFAT\r\n" );
    if( _InstallDefaultFAT() == FALSE )
        return FALSE;    

	hFileSysEvent = CreateEvent( NULL, FALSE, FALSE, "filesys_event" );

	while( 1 )
	{
		int rv;
		rv = WaitForSingleObject( hFileSysEvent, INFINITE );
		break;
	}
	
	CloseHandle( hFileSysEvent );
	return 0;
}


  */

⌨️ 快捷键说明

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