prnpinfo.cpp File Reference#include <winsock2.h> #include <ws2spi.h> #include <windows.h> #include <objbase.h> #include <stdio.h> #include <stdlib.h> #include <af_irda.h> #include <wsrm.h> #include <ws2atm.h> #include <wsipx.h> #include <atalkwsh.h>
Include dependency graph for prnpinfo.cpp:
![]() Go to the source code of this file.
Function Documentation
Definition at line 47 of file prnpinfo.cpp. 00050 { 00051 WCHAR szGuidString[MAX_PATH], 00052 wszProviderPath[MAX_PATH]; 00053 INT dwProviderPathLen=MAX_PATH-1; 00054 int rc, error, i; 00055 00056 rc = WSCGetProviderPath( 00057 &wsapi->ProviderId, 00058 wszProviderPath, 00059 &dwProviderPathLen, 00060 &error 00061 ); 00062 if ( 0 != rc ) 00063 { 00064 fprintf(stderr, "WSCGetProviderPath failed: %d\n", error); 00065 lstrcpyW(wszProviderPath, L"(error)"); 00066 } 00067 00068 // 00069 // Display address family and protocol information 00070 // 00071 00072 printf("\nProtocol: %S\n", wsapi->szProtocol); 00073 printf("\n Path: %S\n", wszProviderPath); 00074 printf(" Address Family: "); 00075 switch ( wsapi->iAddressFamily ) 00076 { 00077 case AF_INET: 00078 case AF_INET6: 00079 printf("%s\n", (wsapi->iAddressFamily == AF_INET ? "AF_INET" : "AF_INET6")); 00080 printf(" Protocol: "); 00081 switch (wsapi->iProtocol) 00082 { 00083 case IPPROTO_IP: 00084 printf("IPROTO_IP\n"); 00085 break; 00086 case IPPROTO_ICMP: 00087 printf("IPROTO_ICMP\n"); 00088 break; 00089 case IPPROTO_IGMP: 00090 printf("IPROTO_IGMP\n"); 00091 break; 00092 case IPPROTO_GGP: 00093 printf("IPROTO_GGP\n"); 00094 break; 00095 case IPPROTO_TCP: 00096 printf("IPROTO_TCP\n"); 00097 break; 00098 case IPPROTO_PUP: 00099 printf("IPROTO_PUP\n"); 00100 break; 00101 case IPPROTO_UDP: 00102 printf("IPROTO_UDP\n"); 00103 break; 00104 case IPPROTO_IDP: 00105 printf("IPROTO_IDP\n"); 00106 break; 00107 case IPPROTO_ND: 00108 printf("IPROTO_ND\n"); 00109 break; 00110 case IPPROTO_RM: 00111 printf("IPPROTO_RM\n"); 00112 break; 00113 case IPPROTO_RAW: 00114 printf("IPROTO_RAW\n"); 00115 break; 00116 } 00117 break; 00118 00119 case AF_UNSPEC: 00120 printf("AF_UNSPEC\n"); 00121 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00122 break; 00123 00124 case AF_UNIX: 00125 printf("AF_UNIX\n"); 00126 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00127 break; 00128 00129 case AF_IMPLINK: 00130 printf("AF_IMPLINK\n"); 00131 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00132 break; 00133 00134 case AF_PUP: 00135 printf("AF_PUP\n"); 00136 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00137 break; 00138 00139 case AF_CHAOS: 00140 printf("AF_CHAOS\n"); 00141 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00142 break; 00143 00144 case AF_NS: 00145 printf("AF_NS or AF_IPX\n"); 00146 printf(" Protocol: "); 00147 00148 switch ( wsapi->iProtocol ) 00149 { 00150 case NSPROTO_IPX: 00151 printf("NSPROTO_IPX\n"); 00152 break; 00153 case NSPROTO_SPX: 00154 printf("NSPROTO_SPX\n"); 00155 break; 00156 case NSPROTO_SPXII: 00157 printf("NSPROTO_SPXII\n"); 00158 break; 00159 } 00160 break; 00161 00162 case AF_ISO: 00163 printf("AF_ISO or AF_OSI\n"); 00164 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00165 break; 00166 00167 case AF_ECMA: 00168 printf("AF_ECMA\n"); 00169 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00170 break; 00171 00172 case AF_DATAKIT: 00173 printf("AF_DATAKIT\n"); 00174 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00175 break; 00176 00177 case AF_CCITT: 00178 printf("AF_CCITT\n"); 00179 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00180 break; 00181 00182 case AF_SNA: 00183 printf("AF_SNA\n"); 00184 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00185 break; 00186 00187 case AF_DECnet: 00188 printf("AF_DECnet\n"); 00189 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00190 break; 00191 00192 case AF_DLI: 00193 printf("AF_DLI\n"); 00194 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00195 break; 00196 00197 case AF_LAT: 00198 printf("AF_LAT\n"); 00199 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00200 break; 00201 00202 case AF_HYLINK: 00203 printf("AF_HYLINK\n"); 00204 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00205 break; 00206 00207 case AF_APPLETALK: 00208 printf("AF_APPLETALK\n"); 00209 printf(" Protocol: "); 00210 00211 switch ( wsapi->iProtocol ) 00212 { 00213 case DDPPROTO_RTMP: 00214 printf("DDPPROTO_RTMP\n"); 00215 break; 00216 case DDPPROTO_NBP: 00217 printf("DDPPROTO_NBP\n"); 00218 break; 00219 case DDPPROTO_ATP: 00220 printf("DDPROTO_ATP\n"); 00221 break; 00222 case DDPPROTO_AEP: 00223 printf("DDPPROTO_AEP\n"); 00224 break; 00225 case DDPPROTO_RTMPRQ: 00226 printf("DDPPROTO_RTMPRQ\n"); 00227 break; 00228 case DDPPROTO_ZIP: 00229 printf("DDPPROTO_ZIP\n"); 00230 break; 00231 case DDPPROTO_ADSP: 00232 printf("DDPPROTO_ADSP\n"); 00233 break; 00234 case ATPROTO_ADSP: 00235 printf("ATPROTO_ADSP\n"); 00236 break; 00237 case ATPROTO_ATP: 00238 printf("ATPROTO_ATP\n"); 00239 break; 00240 case ATPROTO_ASP: 00241 printf("ATPROTO_ASP\n"); 00242 break; 00243 case ATPROTO_PAP: 00244 printf("ATPROTO_PAP\n"); 00245 break; 00246 } 00247 break; 00248 00249 case AF_NETBIOS: 00250 printf("AF_NETBIOS\n"); 00251 printf(" Protocol: "); 00252 printf("NetBIOS LANA %d\n", ((wsapi->iProtocol == 0x80000000) ? 0: abs(wsapi->iProtocol))); 00253 break; 00254 00255 case AF_VOICEVIEW: 00256 printf("AF_VOICEVIEW\n"); 00257 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00258 break; 00259 00260 case AF_FIREFOX: 00261 printf("AF_FIREFOX\n"); 00262 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00263 break; 00264 00265 case AF_UNKNOWN1: 00266 printf("AF_UNKNOWN1\n"); 00267 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00268 break; 00269 00270 case AF_BAN: 00271 printf("AF_BAN\n"); 00272 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00273 break; 00274 00275 case AF_ATM: 00276 printf("AF_ATM\n"); 00277 printf(" Protocol: "); 00278 00279 switch ( wsapi->iProtocol ) 00280 { 00281 case ATMPROTO_AALUSER: 00282 printf("ATMPROTO_AALUSER\n"); 00283 break; 00284 case ATMPROTO_AAL1: 00285 printf("ATMPROTO_AAL1\n"); 00286 break; 00287 case ATMPROTO_AAL2: 00288 printf("ATMPROTO_AAL2\n"); 00289 break; 00290 case ATMPROTO_AAL34: 00291 printf("ATMPROTO_AAL34\n"); 00292 break; 00293 case ATMPROTO_AAL5: 00294 printf("ATMPROTO_AAL5\n"); 00295 break; 00296 } 00297 break; 00298 00299 case AF_CLUSTER: 00300 printf("AF_CLUSTER\n"); 00301 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00302 break; 00303 case AF_12844: 00304 printf("AF_12844\n"); 00305 printf(" Protocol: UNKNOWN: %d", wsapi->iProtocol); 00306 break; 00307 case AF_IRDA: 00308 printf("AF_IRDA\n"); 00309 printf(" Protocol: "); 00310 00311 switch (wsapi->iProtocol) 00312 { 00313 case IRDA_PROTO_SOCK_STREAM: 00314 printf("IRDA_PROTO_SOCK_STREAM\n"); 00315 break; 00316 } 00317 break; 00318 00319 default: 00320 printf("Unknown: %d\n", wsapi->iAddressFamily); 00321 } 00322 00323 // 00324 // Display socket type information 00325 // 00326 00327 printf(" Socket Type: "); 00328 switch (wsapi->iSocketType) 00329 { 00330 case SOCK_STREAM: 00331 printf("SOCK_STREAM\n"); 00332 break; 00333 case SOCK_DGRAM: 00334 printf("SOCK_DGRAM\n"); 00335 break; 00336 case SOCK_RAW: 00337 printf("SOCK_RAW\n"); 00338 break; 00339 case SOCK_RDM: 00340 printf("SOCK_RDM\n"); 00341 break; 00342 case SOCK_SEQPACKET: 00343 printf("SOCK_SEQPACKET\n"); 00344 break; 00345 } 00346 00347 // 00348 // Display the various provider flags for this entry 00349 // 00350 00351 printf(" Connectionless: "); 00352 if (wsapi->dwServiceFlags1 & XP1_CONNECTIONLESS) 00353 printf("YES\n"); 00354 else 00355 printf("NO\n"); 00356 printf(" Guaranteed Delivery: "); 00357 if (wsapi->dwServiceFlags1 & XP1_GUARANTEED_DELIVERY) 00358 printf("YES\n"); 00359 else 00360 printf("NO\n"); 00361 printf(" Guaranteed Order: "); 00362 if (wsapi->dwServiceFlags1 & XP1_GUARANTEED_ORDER) 00363 printf("YES\n"); 00364 else 00365 printf("NO\n"); 00366 printf(" Message Oriented: "); 00367 if (wsapi->dwServiceFlags1 & XP1_MESSAGE_ORIENTED) 00368 printf("YES\n"); 00369 else 00370 printf("NO\n"); 00371 printf(" Pseudo Stream: "); 00372 if (wsapi->dwServiceFlags1 & XP1_PSEUDO_STREAM) 00373 printf("YES\n"); 00374 else 00375 printf("NO\n"); 00376 printf(" Graceful Close: "); 00377 if (wsapi->dwServiceFlags1 & XP1_GRACEFUL_CLOSE) 00378 printf("YES\n"); 00379 else 00380 printf("NO\n"); 00381 printf(" Expedited Data: "); 00382 if (wsapi->dwServiceFlags1 & XP1_EXPEDITED_DATA) 00383 printf("YES\n"); 00384 else 00385 printf("NO\n"); 00386 printf(" Connect Data: "); 00387 if (wsapi->dwServiceFlags1 & XP1_CONNECT_DATA) 00388 printf("YES\n"); 00389 else 00390 printf("NO\n"); 00391 printf(" Disconnect Data: "); 00392 if (wsapi->dwServiceFlags1 & XP1_DISCONNECT_DATA) 00393 printf("YES\n"); 00394 else 00395 printf("NO\n"); 00396 printf(" Supports Broadcast: "); 00397 if (wsapi->dwServiceFlags1 & XP1_SUPPORT_BROADCAST) 00398 printf("YES\n"); 00399 else 00400 printf("NO\n"); 00401 printf(" Supports Multipoint: "); 00402 if (wsapi->dwServiceFlags1 & XP1_SUPPORT_MULTIPOINT) 00403 printf("YES\n"); 00404 else 00405 printf("NO\n"); 00406 printf(" Multipoint Control Plane: "); 00407 if (wsapi->dwServiceFlags1 & XP1_MULTIPOINT_CONTROL_PLANE) 00408 printf("ROOTED\n"); 00409 else 00410 printf("NON-ROOTED\n"); 00411 printf(" Multipoint Data Plane: "); 00412 if (wsapi->dwServiceFlags1 & XP1_MULTIPOINT_DATA_PLANE) 00413 printf("ROOTED\n"); 00414 else 00415 printf("NON-ROOTED\n"); 00416 printf(" QoS Supported: "); 00417 if (wsapi->dwServiceFlags1 & XP1_QOS_SUPPORTED) 00418 printf("YES\n"); 00419 else 00420 printf("NO\n"); 00421 printf(" Unidirectional Sends: "); 00422 if (wsapi->dwServiceFlags1 & XP1_UNI_SEND) 00423 printf("YES\n"); 00424 else 00425 printf("NO\n"); 00426 printf(" Unidirection Receives: "); 00427 if (wsapi->dwServiceFlags1 & XP1_UNI_RECV) 00428 printf("YES\n"); 00429 else 00430 printf("NO\n"); 00431 printf(" IFS Handles: "); 00432 if (wsapi->dwServiceFlags1 & XP1_IFS_HANDLES) 00433 printf("YES\n"); 00434 else 00435 printf("NO\n"); 00436 printf(" Partial Messages: "); 00437 if (wsapi->dwServiceFlags1 & XP1_PARTIAL_MESSAGE) 00438 printf("YES\n"); 00439 else 00440 printf("NO\n"); 00441 printf(" Provider Flags: "); 00442 if (wsapi->dwProviderFlags & PFL_MULTIPLE_PROTO_ENTRIES) 00443 { 00444 printf("PFL_MULTIPLE_PROTO_ENTRIES "); 00445 } 00446 if (wsapi->dwProviderFlags & PFL_RECOMMENDED_PROTO_ENTRY) 00447 { 00448 printf("PFL_RECOMMENDED_PROT_ENTRY "); 00449 } 00450 if (wsapi->dwProviderFlags & PFL_HIDDEN) 00451 { 00452 printf("PFL_HIDDEN "); 00453 } 00454 if (wsapi->dwProviderFlags & PFL_MATCHES_PROTOCOL_ZERO) 00455 { 00456 printf("PFL_MATCHES_PROTOCOL_ZERO "); 00457 } 00458 if (wsapi->dwProviderFlags == 0) 00459 { 00460 printf("NONE"); 00461 } 00462 printf("\n"); 00463 00464 // 00465 // Display provider ID and catalog ID as well as LSP chain information 00466 // 00467 00468 StringFromGUID2( wsapi->ProviderId, szGuidString, MAX_PATH-1 ); 00469 00470 printf(" Provider Id: %S\n", szGuidString); 00471 printf(" Catalog Entry Id: %ld\n", wsapi->dwCatalogEntryId); 00472 printf(" Number of Chain Entries: %d {", 00473 wsapi->ProtocolChain.ChainLen); 00474 00475 for(i=0; i < wsapi->ProtocolChain.ChainLen ;i++) 00476 printf("%ld ", wsapi->ProtocolChain.ChainEntries[i]); 00477 00478 printf("}\n"); 00479 00480 // 00481 // Display the remaining information 00482 // 00483 00484 printf(" Version: %d\n", wsapi->iVersion); 00485 printf("Max Socket Address Length: %d\n", wsapi->iMaxSockAddr); 00486 printf("Min Socket Address Length: %d\n", wsapi->iMinSockAddr); 00487 printf(" Protocol Max Offset: %d\n", wsapi->iProtocolMaxOffset); 00488 00489 printf(" Network Byte Order: "); 00490 if (wsapi->iNetworkByteOrder == 0) 00491 printf("BIG-ENDIAN\n"); 00492 else 00493 printf("LITLE-ENDIAN\n"); 00494 00495 printf(" Security Scheme: "); 00496 if (wsapi->iSecurityScheme == SECURITY_PROTOCOL_NONE) 00497 printf("NONE\n"); 00498 else 00499 printf("%d\n", wsapi->iSecurityScheme); 00500 00501 printf(" Message Size: "); 00502 if (wsapi->dwMessageSize == 0) 00503 printf("N/A (Stream Oriented)\n"); 00504 else if (wsapi->dwMessageSize == 1) 00505 printf("Depended on underlying MTU\n"); 00506 else if (wsapi->dwMessageSize == 0xFFFFFFFF) 00507 printf("No limit\n"); 00508 else 00509 printf("%ld\n", wsapi->dwMessageSize); 00510 00511 printf(" Provider Reserved: %d\n", wsapi->dwProviderReserved); 00512 }
|