metamarty Posted March 17, 2005 Report Posted March 17, 2005 Hello, I got a report of an error with my addon utility that uses FSUIPC. The utility works for the large majority of users and this is the first report I got of an initialisation error. The lastest version of FSUIPC was used and the log shows: 661860 Client Application: "FSeconomy" (Id=3252) 661860 D:\games\FSTools\FSeconomy.exe 661860 Product="FSeconomy agent" 661860 Company="Marty Bochane" 661860 READ0 [P3252] 3304, 4 bytes: 02 00 00 00 661860 READ0 [P3252] 3308, 4 bytes: 02 00 00 00 661860 WRITE0 [P3252] (failed, read-only!) 330A, 2 bytes: EC 03 The library generates these calls in the FSUIPC_open() function: // Write our Library version number to a special read-only offset // This is to assist diagnosis from FSUIPC logging // But only do this on first try if ((i < 2) && !FSUIPC_Write(0x330a, 2, &FSUIPC_Lib_Version, pdwResult)) { FSUIPC_Close(); return FALSE; } The documentation says that 0x330a is a read only pattern of 0xFADE and that indeed the library writes its version here. Can anybody help me identify why FSUIPC seems to report an error here? As I said, I only got one report of this and the majority of users have no problems. Thanks! Marty
scruffyduck Posted March 17, 2005 Report Posted March 17, 2005 As I seem to recall this offset is indeed read only so an attempt to write to it will result in FSUIPC reporting an error. Does it have any material effect on the user then?
metamarty Posted March 17, 2005 Author Report Posted March 17, 2005 As I seem to recall this offset is indeed read only so an attempt to write to it will result in FSUIPC reporting an error. Does it have any material effect on the user then? Yes, the code I posted is directly from the C library, so it is the FSUIPC_open () call that fails. This code is called by every client and works everywhere, but seems to fail on one computer.
vdkeybus Posted March 18, 2005 Report Posted March 18, 2005 so it is the FSUIPC_open () call that fails I just tested it on my machine with a program I've written earlier using the C library. I get the same message: 314473 READ0 [P3972] 3304, 4 bytes: 00 00 50 34 314473 READ0 [P3972] 3308, 4 bytes: 07 00 DE FA 314473 WRITE0 [P3972] (failed, read-only!) 330A, 2 bytes: ED 03 However, my fsuipc->write() doesn't fail for that reason. I believe that we must rather treat the log message as a warning. From your post, however, it's a bit unclear if your program bails out on this. If it does, check the return value of the write() call (using single-stepping). It should definitely not fail. If anything fails, I expect this to be visible in the return value of the process() call. Have you actually checked this value ? It is one of the FSUIPC_ERR_... defines. If your program continues to work fine, I wouldn't bother and not forget to turn off the logging... Regards, J.
Pete Dowson Posted April 2, 2005 Report Posted April 2, 2005 The documentation says that 0x330a is a read only pattern of 0xFADE and that indeed the library writes its version here. Can anybody help me identify why FSUIPC seems to report an error here? As I said, I only got one report of this and the majority of users have no problems. This is not an initialisation error and it will not affect any program adversely. The whole point is for the library to deliberately try writing its version number to a read-only location so it will be logged, so that I can see the version number. Unfortunately the version number hasn't been kept up to date so it isn't much use in fact. However, ALL versions of the library have done this since FS2000 days, and FSUIPC has ALWAYS logged it. This is not recent nor unique to one person's system or one program. ALL programs and ALL versions of FSUIPC do it on ALL machines ALWAYS. Regards, Pete
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now