summaryrefslogblamecommitdiffstats
path: root/private/unimodem/new/mic/notes.txt
blob: 08a196351fc3fe3d3934e9f101bd8de2bd9e663e (plain) (tree)






































































































































































































































                                                                                                         
Modem Inf Compiler -- MIC
-------------------------

History:
	5/18/96 JosephJ	Created

Files:
	

Classes:

-------------------------------
	CIniFile
			Bind(FilePath pFilePath)
			Out(FilePath pFilePath)
			Section(szName)
			UnBind()
			Name

	CIniFileSection
			CIniFileSection
			EntryIterator
			Out(HFILE);
			Name
			Line

	CIniFileEntry
			Name
			RHS
			Out(HFILE);
			Line

	CIniFileEntryIterator
			NextEntry

	CIniFileLine
			//Can be one of: blank, annotations, section-header,
			//	entry, entry-continuation, or unknown
		    //State can be one of: ok, warning, error(%d)
			Type
			State
			Text


	CIniFileAnnotation

-------------------------------

	CInfFile

	CIniFile


	CInfDevice

	CSymbolTable
		Lookup

	CSymbol
		GetText
		GetTextLength

	CInfAddRegList
	CInfCopyFileList

	CInfRank

	CDisplay

--------------------------------

CModemDevice::CreateModem(CInfFile *pInf, CDeviceLocation *pDevLoc)
{
	// GetVersion
	pInf->Version 

	// Get manufacturer
	ptbszManufacturer = pDevLoc->ptbszManufacturer;

	// Get Device name.
	ptbszName = pDevLoc->Name

	// Get InstallSection
	pInstallSec = pInf->InstallSection(pDevice->ptbszInstallSection);

	// Walk Addreg list
	{
		DWORD rgdwChecksum[MAX];
		CAddregIterator pAddregIter = pDevLoc->AddregIterator();

		for (int i=0, CAddreg pAddReg=0;(pAddreg=pAddregIter->Iterate());i++)
		{
			// For mow, add checksum to array
			rgdwChecksum[i++] = pAddreg->Checksum();
		}

		// Compute Addreg checksum
		::CRC16((LPBYTE)rgdwChecksum, (i)? (i-1) : 0);
	}

	// Walk other list...
	// Copyfiles
	{
	}

}
-------------------------------

Files

Class headers:
	inf.h		CIniFile
	ini.h		CInfFile
	device.h	CInfDevice
	sym.h		CInfSymbol
---------------------------------

class CGenericIterator
{

public:
	CGenericIterator(void * pData, const CGenericIterator *pNext)
									{m_pData=pData; m_pNext = pNext;}
	~CGenericIterator();

	const	CGenericIterator	* Next (void) const {return pNext;}
			void  		   		* Data (void) const {return pData;}

private:

	const CGenericIterator * m_pNext;
	void	 		   * m_pNext;
};

for (; pIter, pIter = pIter->Next())
{
	const CAddregSection * pAddreg = (const CAddregSection *) pIter;
	// blah blah...
}

	CInfString
------------------------------------------

CSyncObject

	Load
	Unload

	DWORD OpenSession(void)
	void  CloseSession(DWORD)

	EnterCrit
	LeaveCrit

private:
	CRITICAL_SECTION
	Slist	EventList
	UINT	uRefCount;
	enum {UNLOADED, MARKED_FOR_UNLOAD, LOADED} eState;

--------------------------------------------------
[Support APIs from sdk\inc\setupi.h]
SetupGetInfInformation
SetupQueryInfFileInformation	useful?
SetupQueryInfVersionInformation	useful?
SetupGetInfFileList				useful?
SetupOpenInfFile
SetupOpenMasterInf
SetupOpenAppendInfFileW
SetupCloseInfFile
SetupFindFirstLineA				useful?
SetupFindNextLine				useful?
SetupFindNextMatchLine			useful?
SetupGetLineByIndex				useful?
SetupGetLineCount				useful?
SetupGetLineText				useful?
SetupGetFieldCount				useful?
SetupGetStringField				useful?
SetupGetIntField				useful?
SetupGetMultiSzField			useful?
SetupGetBinaryField				useful?
SetupGetFileCompressionInfo
SetupGetSourceFileLocation		useful?
SetupGetSourceFileSize
SetupGetTargetPath				useful?
Error codes:
	Inf parse outcomes:
		ERROR_EXPECTED_SECTION_NAME
		ERROR_BAD_SECTION_NAME_LINE
		ERROR_SECTION_NAME_TOO_LONG
		ERROR_GENERAL_SYNTAX

	Inf runtime errors:
		ERROR_WRONG_INF_STYLE
		ERROR_SECTION_NOT_FOUND
		ERROR_LINE_NOT_FOUND
--------------------
6/9/96

Inf:Load:

-- Read Version Information
-- Read Manufacturer List Section 
	Read  Manufacturer Entry
		Read Manufacturer Section
			Read Model Entry
				Read Install Section
					Read AddregSection
						...
				Read ControlFlags section

---------
6/12/96
-- concept of a Validate member function for each class:
BOOL Validate(void)
{
	if (!this) return FALSE;

	_try
	{
		test other things, like an object-type signature (each object can
		have an object-type signature, which is assigned by the constructur
		and cleared by the destructor.
	}
	_except(....)
	{
	}

end:
	
}