Third party application that worked with HIS 2004 no longer works. They get an Application Log event error:
Event ID: 1000
Task Category: Application Crashing Events
Level: Error
Keywords: Classic
User: N/A
Computer: <Computer Name>
Description:
Faulting application name: ApplicationName.exe, version: 0.0.0.0, time stamp: 0x510fa045
Faulting module name: SNANLS.dll, version: 8.0.3608.0, time stamp: 0x49b9e5c8
Exception code: 0xc0000005
Fault offset: 0x000036d1
Faulting process id: 0x149c
Faulting application start time: 0x01ce20f361f636f4
Faulting application path: C:\path\Application.exe
Faulting module path: C:\Program Files\Microsoft Host Integration Server 2009\system\SNANLS.dll
Cause:
The SnaNlsMapString API changed in HIS 2006 to include an extra parameter called lConvRequiredLen.
http://msdn.microsoft.com/en-us/library/gg164950.aspx
lConvRequiredLen
Returned parameter. Required buffer length if call failed.
The problem with the application is that it is calling SNANLS and the call does not include the lConvRequiredLen parameter, so it fails.
Solution:
Update the application to include the new parameter.
Event ID: 1000
Task Category: Application Crashing Events
Level: Error
Keywords: Classic
User: N/A
Computer: <Computer Name>
Description:
Faulting application name: ApplicationName.exe, version: 0.0.0.0, time stamp: 0x510fa045
Faulting module name: SNANLS.dll, version: 8.0.3608.0, time stamp: 0x49b9e5c8
Exception code: 0xc0000005
Fault offset: 0x000036d1
Faulting process id: 0x149c
Faulting application start time: 0x01ce20f361f636f4
Faulting application path: C:\path\Application.exe
Faulting module path: C:\Program Files\Microsoft Host Integration Server 2009\system\SNANLS.dll
Cause:
The SnaNlsMapString API changed in HIS 2006 to include an extra parameter called lConvRequiredLen.
http://msdn.microsoft.com/en-us/library/gg164950.aspx
int WINAPI SnaNlsMapString(
LPCTSTR lpSrcStr,LPTSTR lpDestStr,UINT inCodePage,UINT outCodePage,Int in_length,int out_length,UINT in_type,UINT out_type,WORD *Options,LONG*lConvRequiredLen);
lConvRequiredLen
Returned parameter. Required buffer length if call failed.
The problem with the application is that it is calling SNANLS and the call does not include the lConvRequiredLen parameter, so it fails.
Solution:
Update the application to include the new parameter.