The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: joerbanno on February 09, 2007, 04:33:30 PM

Title: MSDN
Post by: joerbanno on February 09, 2007, 04:33:30 PM
Hi,

I've just another question, it's Masm related.
I'm trying to access network interface information, like what network devices are presented, which of them are enabled and more.
I use the API GetIfTable returning me a


MIB_IFTABLE  struct
   dwNumEntries DWORD 0
   table MIB_IFROW ANY_SIZE dup(<>)
MIB_IFTABLE  ENDS


The entry table is of type MIB_IFROW

MIB_IFROW STRUCT
  wszName WORD MAX_INTERFACE_NAME_LEN dup(0)
  dwIndex DWORD 0
  dwType DWORD 0
  dwMtu DWORD 0
  dwSpeed DWORD 0
  dwPhysAddrLen DWORD 0
  bPhysAddr BYTE MAXLEN_PHYSADDR dup(0)
  .... abbreviated
  dwDescrLen DWORD 0
  bDescr BYTE MAXLEN_IFDESCR dup(0)
MIB_IFROW ENDS


The MSDN implements the wszName as unicode (16bits in windows) in the current implementation.
The MSDN says about wszName:
QuotewszName A pointer to a Unicode string that contains the name of the interface
If that's correct shouldn't wszName not be a DWORD? :dazzled:

What's the word on this?
The funny thing is if I check the length of the wszName string with ucLen, I always end up with 0 :red
Title: Re: MSDN
Post by: jag on February 10, 2007, 04:33:53 PM
A pointer is always a DWORD (well on x86 architecture.)
Normally in a string, each character is 8-bits ( 1 byte ) so each character can have 256 different values.
Unicode lets each character have 16-bits (2 bytes) so that each character can 65535 different values.

Your POINTER to the unicode string will still be a dword though the string structure differs.
Title: Re: MSDN
Post by: MichaelW on February 10, 2007, 04:53:26 PM
From lprtrmib.h in the SDK:

typedef struct _MIB_IFROW
{
    WCHAR   wszName[MAX_INTERFACE_NAME_LEN];
    DWORD    dwIndex;
    DWORD    dwType;
    DWORD    dwMtu;
    DWORD    dwSpeed;
...

wszName is a Unicode string, not a pointer. WCHAR is defined in the header files as an unsigned short, so for MASM it is a WORD, as it is defined in the MASM32 windows.inc.