38.9.4.16 查找有关符号、组、符号表的定义信息

搜索已定义的寄存器符号、组符号或符号表的定义信息,如数据格式和数据大小。

函数名称

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
{
 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,因为它为成员的组访问定义访问大小。