Mlungisi Ndlela
asked on
Dynamically allocate memory
Hi Guys.
I'm not a C++ developer and with this project I'm doing I was forced to use C++. The problem is that when I run my app and try to open a service its says Access violation reading location 0x00000000. The pointer is
I'm not a C++ developer and with this project I'm doing I was forced to use C++. The problem is that when I run my app and try to open a service its says Access violation reading location 0x00000000. The pointer is
lphService
I've looked around on how to allocate memory but I don't seem to understand as to how could I assign this as the size will be returned by a function and I don't know the size by head. Any help?
ASKER
@ZOPPO, here is the code, and I get error -26.
LPHSERVICE lphService;
lphService = 0; // I put 0 because the EXIT_SUCCESS is also 0
HRESULT hResult;
WFSVERSION SvcVersion, SpiVersion;
char szLogicalName[]="Epson1200";
hResult = (WFSOpen(szLogicalName,WFS_DEFAULT_HAPP,"Epson Print",WFS_TRACE_NONE,TWO_MINUTES,RECOGNISED_VERSIONS,&SvcVersion,&SpiVersion,lphService));
if(hResult == WFS_ERR_CANCELED)
{
cout << WFS_ERR_CANCELED << endl; // This returns -4
}else if(hResult == WFS_ERR_SERVICE_NOT_FOUND)
{
cout << WFS_ERR_SERVICE_NOT_FOUND << endl; // This is -43
}else if(hResult == WFS_ERR_CONNECTION_LOST)
{
cout << WFS_ERR_CONNECTION_LOST << endl; // -54
}else if(hResult == WFS_ERR_INTERNAL_ERROR)
{
cout << WFS_ERR_INTERNAL_ERROR << endl; // -15
}else if(hResult == WFS_ERR_INVALID_APP_HANDLE)
{
cout << WFS_ERR_INVALID_APP_HANDLE << endl; // -17
}else if(hResult == WFS_ERR_INVALID_POINTER)
{
cout << WFS_ERR_INVALID_POINTER << endl; // This is the error I get which is -26
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
BTW, in addition two hints:
1. you don't need the ( and ) surrounding the WSFOpen call
2. using a chain of if/else to check a variable against constant values is not optimal for performance, in your case a switch/case statement would perform better.
ZOPPO
1. you don't need the ( and ) surrounding the WSFOpen call
2. using a chain of if/else to check a variable against constant values is not optimal for performance, in your case a switch/case statement would perform better.
ZOPPO
ASKER
Thanks thats really helped, now I get this error: WFS_ERR_SERVICE_NOT_FOUND. Is this because of missing device or the name is not found on the registry?
Hm - sorry, that's hard to say for me since I don't know the API you're using - you could try if the program acts different when you dis- and re-connect the device, if so I would guess it's a problem with an unregistered (in registry) service.
ASKER
I would guess it's a problem with an unregistered (in registry) servicedo you mean my App is not registered or the device/service?
I would guess the service is unregistered or it is registered but not running.
ASKER
Thanks,
registered but not runningthat does make seance.
in general the error occurs in case a NULL-pointer is dereferenced, in your case the program tries to access (read) the value where the pointer lphService points to.
We need more info about this to help you, could you post some code (especially all parts where the lphService is instanced and used)?
Best regards,
ZOPPO