BOOL YGFSMonSaveRegData(UCHAR ucDrive,PCHAR pRegPath,PCHAR pValue,DWORD dwType,UCHAR *pData,DWORD dwDataLen) { char szPath[MAX_PATH],szFile[MAX_PATH]; DWORD hFile,dwAction; REGDATAHEAD RegHead; RegHead.dwType = dwType; RegHead.dwDataLen = dwDataLen; _lstrcpyn(szPath, "C:\\YGReg\\",_lstrlen("C:\\YGReg\\")+1); szPath[0] = ucDrive; YGFSMonConvertRegPath(pRegPath,TRUE); strcat(szPath,pRegPath); if (CreateDirAnsi(szPath)) { strcat(szPath,"\\"); _lstrcpyn(szFile,(pValue&&pValue[0])?pValue:"(default)",_lstrlen((pValue&&pValue[0])?pValue:"(default)")+1); YGFSMonConvertRegPath(szFile,FALSE); strcat(szPath,szFile); if (!R0_OpenCreateFile(FALSE, ACCESS_READWRITE | SHARE_COMPATIBILITY, 0,ACTION_OPENALWAYS, 0, szPath, &hFile,&dwAction)) { R0_WriteFile(FALSE,hFile,sizeof(REGDATAHEAD),0,(UCHAR *)&RegHead,&dwAction); R0_WriteFile(FALSE,hFile,dwDataLen,sizeof(REGDATAHEAD),pData,&dwAction); R0_CloseFile(hFile); } else _asm int 3 } else _asm int 3
/**************************************************************************** REMARKS: VxD implementation of the ANSI C fclose function. ****************************************************************************/ int fclose( FILE *f) { WORD error; if (initComplete) R0_CloseFile((HANDLE)f->handle,&error); else i_close(f->handle); PM_free(f); return 0; }