7 Appendix B: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

 

  • Windows NT 4.0 operating system

  • Windows 2000 Professional operating system

  • Windows 2000 Server operating system

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 operating system

  • Windows Server 2025 operating system

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 1.7: The Internet Information Services (IIS) Inetinfo Remote Protocol is implemented in Windows by Internet Information Services (IIS). The RPC interface and data types have been modified between versions of IIS (without changing the version number) in ways that make complete interoperability between versions difficult if not impossible.

The version described as the standard in this document is IIS version 5.0 that shipped with Windows 2000 Professional, and Windows 2000 Server.

<2> Section 2.1.1: When the Windows implementation specifies "ncacn_np" as the RPC protocol, a security descriptor is set on the endpoint (2) by using the RPC API RpcServerUseProtseqEpW(). The security descriptor grants access to members of the administrators group. The RPC runtime will then validate the client's identity against this security descriptor.

<3> Section 2.2.3: Some members of the INET_INFO_CONFIG_INFO structure are not persisted such as LangId and LocalId. These vary by version and by protocol.

<4> Section 2.2.3: The Windows implementation will return an empty string when retrieving szAnonPassword, even if the configuration value is set.

<5> Section 2.2.8: The Windows implementation will return an empty string when retrieving AccountPassword, even if the configuration value is set.

<6> Section 2.2.15: The INETA_CACHE_STATISTICS structure has been modified twice in different versions of IIS.

IIS version 3.0 of the structure is defined as follows:

  
  
 typedef struct _INETA_CACHE_STATISTICS
   {
    DWORD         CacheBytesTotal;
    DWORD         CacheBytesInUse;
    DWORD         CurrentOpenFileHandles;
    DWORD         CurrentDirLists;
    DWORD         CurrentObjects;
    DWORD         FlushesFromDirChanges;
    DWORD         CacheHits;
    DWORD         CacheMisses;
  } INETA_CACHE_STATISTICS * LPINETA_CACHE_STATISTICS;
       

CacheBytesTotal: The total size of the cache in bytes.

CacheBytesInUse: The number of bytes in the cache currently in use.

CurrentOpenFileHandles: The number of handles to currently open files stored in the cache.

CurrentDirLists: The number of current directory lists stored in the cache.

CurrentObjects: The number of current objects stored in the cache.

FlushesFromDirChanges: The number of flushes that have taken place as a result of directory changes.

CacheHits: The number of hits to the cache.

CacheMisses: The number of misses to the cache.

IIS version 6.0 of the structure is defined as follows:

  
  
 typedef struct _INETA_CACHE_STATISTICS
  {
     DWORD FilesCached;
     DWORD TotalFilesCached;
     DWORD FileHits;
     DWORD FileMisses;
     DWORD FileFlushes;
     DWORDLONG CurrentFileCacheSize;
     DWORDLONG MaximumFileCacheSize;
     DWORD FlushedEntries;
     DWORD TotalFlushed;
     DWORD URICached;
     DWORD TotalURICached;
     DWORD URIHits;
     DWORD URIMisses;
     DWORD URIFlushes;
     DWORD TotalURIFlushed;
     DWORD BlobCached;
     DWORD TotalBlobCached;
     DWORD BlobHits;
     DWORD BlobMisses;
     DWORD BlobFlushes;
     DWORD TotalBlobFlushed;
  } INETA_CACHE_STATISTICS, *LPINETA_CACHE_STATISTICS;
       

CurrentFileCacheSize and MaximumFileCacheSize are the only fields changed from the IIS version 5.0. Their data types have been changed from DWORD to DWORDLONG.

<7> Section 2.2.25: The Windows implementation can return error codes that have additional semantic meaning because it relates to the protocol beyond that which is specified in [MS-ERREF]. The following table summarizes these additional semantics.

Return value/code

Interpretation/condition

0x00000426

ERROR_SERVICE_NOT_ACTIVE

Used to indicate that the specified Internet protocol service is not recognized by the implementation.

0x00000002

ERROR_FILE_NOT_FOUND

Used by methods that operate on an Internet protocol server instance to indicate that the instance ID passed by the client is not recognized.

<8> Section 3.1.5: Opnums reserved for local use apply to Windows as follows.

Opnum

Description

16, 17

Only used locally by Windows, never remotely. These methods were added to the inetinfo interface in Windows 2000 Server and deprecated in Windows Server 2003.

<9> Section 3.1.5.1:  The Windows implementation of R_InetInfoGetVersion does not return Major Version = 5 and Minor Version = 1 for implementations of IIS released on Windows NT 4.0, Windows 2000 Professional, and Windows 2000 Server.

<10> Section 3.1.5.3: In IIS version 3.0, the R_InetInfoGetSites method is not implemented. Instead, the following method is defined at opnum 2.

              
              
 R_InetInfoDummy(
     [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer,
     [in] DWORD dwServerMask,
     [out] LPINET_INFO_CONFIG_INFO *ppConfig
     );

This method returns 0 and does nothing.

<11> Section 3.1.5.7: The Windows implementation of R_InetInfoQueryStatistics returns valid statistical data only when the dwServerMask parameter is 0.

<12> Section 3.1.5.8: The Windows implementation of R_InetInfoClearStatistics does nothing and returns ERROR_NOT_SUPPORTED. If dwServerMask is greater than 0x00000004, the return code is ERROR_INVALID_PARAMETER.

<13> Section 3.1.5.12: The Windows implementation of R_W3ClearStatistics2 does not reset all statistics values in the W3_STATISTICS_1 structure. Values related to client network connections and network bandwidth are not reset.

<14> Section 3.1.5.14: The Windows implementation of R_FtpClearStatistics2 does not reset all statistics values in the FTP_STATISTICS_0 structure. Values related to client network connections and network bandwidth are not reset.

<15> Section 3.1.5.15: The Windows implementation of R_IISEnumerateUsers returns ERROR_SUCCESS (0x00000000) for the HTTP server when the method is not implemented.

<16> Section 3.1.5.16: The Windows implementation of R_IISDisconnectUser for the FTP server will attempt to disconnect specific users in addition to all users, given appropriate values of dwIdUser. The HTTP server will only attempt to disconnect all users if dwIdUser is 0 and will ignore other values of this parameter and return ERROR_SUCCESS.