搜索已定义的寄存器符号、组符号或符号表的定义信息,如数据格式和数据大小。
函数名称
INT WINAPI GetSymbolInformation(LPCSTR sNodeName,LPCSTR sSymbolName,INT iMaxCountOfSymbolMember,LPSTR osSymbolSheetName,SymbolInformation* oSymbolInformation,INT* oiGotCountOfSymbolMember);
参数
sNodeName:站名称固定为#WinGP。
sSymbolName:(In)符号、组名称、表名称
iMaxCountOfSymbolMember:(In)定义查找信息的最大值(1或更大)。在oSymbolInformation中定义数量。
osSymbolSheetName:(Out)返回属于sSymbolName的符号表名称。请准备一个66字节或更大的工作区。
oSymbolInformation:(Out)以数组形式返回详细信息。
请准备在iMaxCountOfSymbolMember中为工作区定义的数量。
oiGotCountOfSymbolMember:(Out)返回实际返回给oSymbolInformation的信息编号。
返回值(NULL)
正常结束: 0
重大错误:错误代码
特殊项目
SymbolInformation结构
构造SymbolInformation
{
WORD m_wAppKind;//数据类型-符号为1至12,组为0x8000。
WORD m_wDataCount; //数据大小。
DWORD m_dwSizeOf; // 缓冲字节大小。
char m_sSymbolName[64+1];//符号或组名称。
char m_bDummy1[3];//保留。
char m_sDeviceAddress[256+1]; //寄存器地址(对组来说为空)。
char m_bDummy2[3];//保留。
};
当在第一设置中设置了组、表或符号时,会以SymbolInformation数组的形式返回在oSymbolInformation中找到的信息。
至于第二及以后的设置,当sSymbolName是组时,设置组成员。
当sSymbolName是表时,设置整个表的信息。
当sSymbolName是符号时,将不再有其他设置。
当对象符号是位偏移符号时,请注意以下几点。
(1)若将位偏移符号用来直接指定原始符号信息(当把sSymbolName直接指定为位偏移符号时)在oSymbolInformation的第一个SymbolInformation字段m_dwSizeOf中,设置两个字节以便访问位符号。
由于原始信息是一个符号,因此只能有一个oSymbolInformation。
(2)将原始信息定义为组符号,当组包含位偏移符号时,第二个oSymbolInformation的m_dwSizeOf属性及之后的属性被设置为0,因为它为成员的组访问定义访问大小。
当成员数未知时,可使用GetCountOfSymbolMember(),建立一个成员计数返回值+1的SymbolInformation工作区,然后再调用此函数。