Tal cual lo explica RedPic. Una estructura condicional, ya sea if, for o while, recibe como argumento un valor de verdad, q puede ser 0, o distinto de 0. Los comparadores < > = y != hacen eso, devuelven 0 o distinto de 0.
Por lo tanto, si tenes:
while(networkDescriptor)
{
//lo que hace
}
Sera verdadero en el caso de q "networdDescriptor" sea distinto de 0, y como es un puntero, el while se ejecuta solo si "networkDescriptor" esta apuntando a algun lado. Por este mismo motivo tendrias q inicializar el puntero con null, cosa de q no quede basura
NETWORK_DESCRIPTOR *networkDescriptor = NULL;
Saludos!