BizTalk Utilities CV ,   Jobs ,   Code library
 
Go to the front page to continue learning about XML or select below:

Contents

ReBlogger Contents

Previous posts in Biztalk Adapters

 
 
Page 1210 of 17675

Windows CE: GetAdaptersInfo() handling when no Adapters are exist

Blogger : Geekswithblogs.net
All posts : All posts by Geekswithblogs.net
Category : Biztalk Adapters
Blogged date : 2008 Jun 04

I thought that I would experiment with GetAdaptersInfo() yesterday (this is GeeksWithBlogs!)  Being lazy, I googled to find example code to start with, and found GetAdaptersInfo Function on MSDN .  This certainly was a good starting point, but I soon found a problem.

As it turns out, the day before I had been working on Platform Builder: Find the Source of a Data Abort; an Example where I purposely added a Data Abort to my Ethernet driver.  As a result, I didn't have any Ethernet adapters to get information for.  This meant that when I called GetAdaptersInfo(), it failed returning ERROR_NO_DATA (232) which was not handled well in the sample code.

The original code contained:

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
            // Code removed
    }

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
            // Code removed
    } else {
        printf("GetAdaptersInfo failed with error: %d\n", dwRetVal);

    }

Note that neither of the calls to GetAdapterInfo() checked for ERROR_NO_DATA, although the second call is checking for success.  But on failure, the second call outputs a message which seems to suggest that something really unexpected occurred.

A more user friendly way to handle this would be:

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) ;
     if (dwRetVal  == ERROR_BUFFER_OVERFLOW) {
           // Code removed
    }
    else if( dwRetVal == ERROR_NO_DATA )
    {
          printf( "No adapters found\n" );
          return 0;
    }

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
            // Code removed
    } else {
        printf("GetAdaptersInfo failed with error: %d\n", dwRetVal);

    }


Read comments or post a reply to : Windows CE: GetAdaptersInfo() handling when no Adapters are exist
Page 1210 of 17675

Newest posts
 

    Email TopXML