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 Vista operating system with Service Pack 1 (SP1)

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 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.8: Aside from the HRESULT values explicitly defined in this specification, Windows uses return values as specified in [MS-ERREF].

<2> Section 1.8: Windows WSRM provides both a graphical user interface and a command line interface.

<3> Section 2.2.1.3: Windows exchanges an extra digit between date-month: date-month-day, separated by ":", which actually denotes the days of the week [0-6], 0 for Sunday, 1 for Monday, and  ending with 6 for Saturday.

<4> Section 2.2.2.8: This value was added with support for Terminal Services in Windows Vista operating system and Windows Server 2008.

<5> Section 2.2.2.8: Windows Server 2008, Windows 7, Windows Server 2008 R2 operating system, Windows 8, and Windows Server 2012: This option was added for computers on which Terminal Services is running.

<6> Section 2.2.2.9: This value corresponds to WSRM servers implemented on Windows Server 2008 and Windows Vista.

<7> Section 2.2.2.9: This value corresponds to WSRM servers implemented on Windows 7 and Windows Server 2008 R2 without DFSS.

<8> Section 2.2.2.9: This value corresponds to WSRM servers implemented on Windows 7 and Windows Server 2008 R2 with DFSS.

<9> Section 2.2.3.2: In the Windows implementation, several svchost.exe processes are included in the default user-defined exclusion list. Important operating system services run inside the svchost.exe processes. To ensure that these processes have access to their required CPU bandwidth, they are excluded from management.

<10> Section 2.2.5.9: In Windows Vista and Windows Server 2008, this function is not supported.

<11> Section 2.2.5.9: In Windows Vista and Windows Server 2008, this function is not supported.

<12> Section 2.2.5.11: Windows uses root element as Calendars instead of CalendarsCollection in CalendarsCollection schema.

<13> Section 2.2.5.21: For Windows, the name is the same as the value of the RefName attribute of the <ProcessMatchingCriteria> element.

<14> Section 2.2.5.22: Windows uses root element as Policy instead of PolicyCollection in Policy Collection schema.

<15> Section 2.2.5.25: Windows uses root element as ProcessMatchingCriteria instead of ProcessMatchingCriteriaCollection in ProcessMatchingCriteriaCollection schema.

<16> Section 3.2.1.1: This structure was added with support for Terminal Services in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.

<17> Section 3.2.1.1: This structure was added with support for Terminal Services in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.

<18> Section 3.2.1.2: The default location of the accounting database for Windows is:

 C:\windows\system32\Windows System Resource Manager\JetDb\wsrm.edb

<19> Section 3.2.3: WSRM in Windows ships with following hard-coded built-in policies:

Name

Description

Equal per process

When the Equal_Per_Process resource allocation policy is managing the system, each running process is given an equal percentage of CPU.

Equal per user

When the Equal_Per_User resource allocation policy is managing the system, processes are grouped according to the user account that is running them and each of these process groups is given an equal percentage of CPU.

Equal per session

When the Equal_Per_Session resource allocation policy is managing the system, resources are allocated on an equal basis for each session connected to the system. This policy is for use with terminal servers.

Equal per IIS application pool

When the Equal_Per_IISAppPool resource allocation policy is managing the system, each running IIS application pool is given an equal percentage of CPU, and applications that are not in an IIS application pool can use only resources that are not being consumed by IIS application pools.

Weighted Remote Sessions

When the Weighted_Remote_Sessions resource allocation policy is managing the system, the processes are grouped according to the priority assigned with the user account.

<20> Section 3.2.4: The following table shows support for interfaces of the WSRM protocol in client and server implementations by Windows version. See [MSDN-WSRM1] for more information.

Interface

Windows Version

Vista

Server 2008

7

Server 2008 R2

IResourceManager

X

X

X

X

IResourceManager2

X

X

IWRMAccounting

X

X

X

X

IWRMCalendar

X

X

X

X

IWRMConfig

X

X

X

X

IWRMMachineGroup

X

X

IWRMPolicy

X

X

X

X

IWRMProtocol

X

X

X

X

IWRMRemoteSessionMgmt

X

X

IWRMResourceGroup

X

X

X

X

<21> Section 3.2.4: This interface is not supported in Windows Vista and Windows Server 2008.

<22> Section 3.2.4: This interface is not supported in Windows Vista and Windows Server 2008.

<23> Section 3.2.4: This interface is not supported in Windows Vista and Windows Server 2008.

<24> Section 3.2.4.1: This method was added with support for Terminal Services in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.

<25> Section 3.2.4.1: This method was added with support for Terminal Services in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.

<26> Section 3.2.4.1: This method was added with support for Terminal Services in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.

<27> Section 3.2.4.1.3: Windows returns this value if the XML data is corrupt.

<28> Section 3.2.4.1.4: Windows uses this method for performing automatic backups of the WSRM system.

<29> Section 3.2.4.1.4: Windows returns this value if the XML data is corrupt.

<30> Section 3.2.4.1.5: If enumRestore is RESTORE_LAST_GOOD_STATE, the XML files from the backup folder "System32/Windows System Resource Manager/backup" are read.

<31> Section 3.2.4.1.5: Windows returns this value if the XML data is corrupt.

<32> Section 3.2.4.1.8: Windows returns the path for the system folder, such as "c:\windows\system32".

<33> Section 3.2.4.1.9: On Windows, if an error value is returned, it is the return value of the Windows SDK system information function GetComputerName, converted to an HRESULT.

<34> Section 3.2.4.2: This interface is not supported in Windows Vista and Windows Server 2008.

<35> Section 3.2.4.2.1: Windows returns 0x80004005 (Unspecified error) when enumObjectType set to OBJECT_SCHEDULE and pbstrObjectXml contains elements other than <Calendar> or <Schedule>.

<36> Section 3.2.4.2.2: Windows returns this value if the XML data is corrupt.

<37> Section 3.2.4.2.3: In Windows if this parameter is used with OVERRIDE_EXISTING_IMPORT then the error 0x80004005 can be returned. In some cases, this is a false error and data is actually imported successfully.

<38> Section 3.2.4.2.3: Windows can return this error if used with OVERRIDE_EXISTING_IMPORT.

<39> Section 3.2.4.2.3: Windows returns this value if the XML data is corrupt.

<40> Section 3.2.4.3.1: Windows uses a pre-built database and always returns the WRM_ERR_ACCOUNTING_FAILED error.

<41> Section 3.2.4.3.3: Windows returns this error when an accounting query is executed after the connection to the Windows internal database server has been lost.

<42> Section 3.2.4.3.3: Windows returns this error when the management service is busy executing the accounting query from another client.

<43> Section 3.2.4.3.4: Windows supports the Windows Internal Database, a built-in relational database component for use by other Windows components.

<44> Section 3.2.4.3.4: Windows returns this error when the management service tries to acquire the accounting semaphore before executing the accounting query.

<45> Section 3.2.4.3.5: Windows gets data in batches of 1,024 records.

<46> Section 3.2.4.3.5: Windows returns this error when the management service tries to acquire the accounting semaphore before executing the accounting query.

<47> Section 3.2.4.3.6: Windows Server 2008, Windows Server 2008 R2, and Windows Server 2012 support the Windows Internal Database, a built-in relational database component for use by other Windows components.

<48> Section 3.2.4.3.6: Windows returns S_OK when the bstrStartingDate or bstrEndingDate parameters are invalid and no data is deleted.

<49> Section 3.2.4.3.8: Windows returns this error when this method is called before accounting has been initialized or after accounting has been uninitialized. Because accounting executes on a separate thread, an accounting client can call CancelAccountingQuery while a command for shutdown has already been initiated.

<50> Section 3.2.4.3.9: Windows Server 2008, Windows Server 2008 R2, and Windows Server 2012 support the Windows Internal Database, a built-in relational database component for use by other Windows components.

<51> Section 3.2.4.3.9: To reproduce on a Windows implementation, perform the following steps:

  1. Use the WSRM management service running on a server (server A) to set up another server (server B) to log accounting data remotely by calling RegisterAccountingClient of WSRM management service running on server B.

  2. That server A is now an accounting client.

  3. Have another server (server C) call RegisterAccountingClient of WSRM management service on server A.

  4. This error is returned.

<52> Section 3.2.4.3.9: To reproduce on a Windows implementation, perform the following steps:

  1. Stop the WSRM management service on the accounting server machine:

     net stop wsrm
    
  2. Go to "%windir%\System32\Windows System Resource Manager" and corrupt the database folder by deleting, moving, or renaming some files in the database directory.

  3. Start the WSRM management service on the accounting server machine, which now will not be able to initialize its accounting because of the corrupt database:

     net start wsrm
    
  4. Have an accounting client call RegisterAccountingClient with a client machine name.

  5. WSRM is unable to connect to the Windows Internal Database, and this error is returned.

<53> Section 3.2.4.3.12: Windows returns an error if the SetAccountingClientStatus method is called to disable accounting functionality of an accounting client.

<54> Section 3.2.4.3.13: On Windows, this error is reproduced by the following procedure:

  1. Register an accounting client with a server.

  2. Set the accounting client status to disable.

  3. Call CheckAccountingConnection.

  4. The error is returned.

<55> Section 3.2.4.3.13: Windows calls the CheckAccountingConnection method prior to calling DumpAccountingData.

<56> Section 3.2.4.4.2: A value of FALSE causes the Windows WSRM management service to crash.

<57> Section 3.2.4.4.2: Windows returns this value if the XML data is corrupt.

<58> Section 3.2.4.4.2: Windows returns this error if the number of calendar events that already exist in the system is equal to 512.

<59> Section 3.2.4.4.3: A value of FALSE causes the Windows WSRM management service to crash.

<60> Section 3.2.4.4.3: Windows returns this value if the XML data is corrupt.

<61> Section 3.2.4.4.3: Windows returns a description of this error as an invalid day of the year.

<62> Section 3.2.4.4.4: A value of FALSE causes the Windows WSRM management service to crash.

<63> Section 3.2.4.4.5: Windows returns this error if the calendar name is longer than 200 characters.

<64> Section 3.2.4.4.8: Windows returns this value if the XML data is corrupt.

<65> Section 3.2.4.4.8: Windows returns this error if the number of schedules that already exist in the system is equal to 512.

<66> Section 3.2.4.4.9: A value of FALSE causes the Windows WSRM management service to crash.

<67> Section 3.2.4.4.9: Windows returns this value if the XML data is corrupt.

<68> Section 3.2.4.4.11: Windows returns this error if the schedule name is longer than 200 characters.

<69> Section 3.2.4.4.12: A value of FALSE causes the Windows WSRM management service to crash.

<70> Section 3.2.4.4.13: A value of FALSE causes the Windows WSRM management service to crash.

<71> Section 3.2.4.5: Windows Server 2008 supports the Windows Internal Database, a built-in relational database component for use by other Windows components.

<72> Section 3.2.4.5.2: Windows returns this error if the configuration value is longer than 260 characters.

<73> Section 3.2.4.5.2: Windows returns this value if the XML data is corrupt.

<74> Section 3.2.4.5.2:  In Windows Server 2008, Windows Server 2008 R2, and Windows Server 2012, the ERROR_ACCESS_DENIED error can occur even if SetClientPermissions (section 3.2.4.3.14) is called prior to SetConfig. The following additional action is required: Before calling SetConfig, add the machine account of the WSRM server acting as the remote accounting client to the "Administrators" group of the WSRM server acting as the remote accounting server.

<75> Section 3.2.4.5.4: Windows returns this error if EnableDisable method is called to disable calendar.

<76> Section 3.2.4.5.4: Windows implementations return this error in the following scenario:

  1. Create a new registry entry "AccountingEnabled" under the path "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WSRM".

  2. Set the value of "AccountingEnabled" to 0x00000001 (DWORD).

  3. Call the EnableDisable method to disable the WSRM configuration for accounting.

<77> Section 3.2.4.5.4: Windows implementations return this error when the EnableDisable method is called to manage the WSRM configuration for Accounting before the management service has started or completely initialized the Accounting thread.

<78> Section 3.2.4.5.4: Windows returns this error in the following scenario, in which a remote database server is used:

  1. Set a remote server to act as the database server of the current server.

  2. On the current server, use the EnableDisable method to enable the accounting configuration.

  3. Connect to the remote database server and stop the WSRM management service.

  4. On the current server, use the EnableDisable method to disable the accounting configuration.

<79> Section 3.2.4.5.5: Windows returns this error if a process name in the registry is longer than 260 characters.

<80> Section 3.2.4.5.5: Windows returns this error if the number of excluded processes in the registry is greater than 128.

<81> Section 3.2.4.5.6: Windows returns this error if a specified process name is longer than 260 characters.

<82> Section 3.2.4.5.6: Windows returns this error if the number of specified processes is greater than 128.

<83> Section 3.2.4.5.7: In Windows, the registry is located at "HKLM\SYSTEM\CurrentControlSet\Services\WSRM\Parameters\WSRMActivate". This registry value is set to "true" when WSRM is in active management state; otherwise, the registry key value is set to "false". The WSRM management service looks for this key while starting the service. The value of this key determines the state of the WSRM Protocol at startup.

<84> Section 3.2.4.6: This interface is not supported in Windows Vista and Windows Server 2008.

<85> Section 3.2.4.6.1: Windows does not validate the machine name or its presence in a domain while validating machine details.

<86> Section 3.2.4.6.1: Windows returns this value if the XML data is corrupt.

<87> Section 3.2.4.6.1: Windows returns this error if the number of machine groups is greater than 128.

<88> Section 3.2.4.6.1: Windows returns this error if the number of machines in a machine group is greater than 128.

<89> Section 3.2.4.6.3: Windows does not register the enumMGMergeOptions value and always responds as if it is OVERWRITE_MG_MERGE_OPTION.

<90> Section 3.2.4.6.3: Windows does not return E_INVALIDARG for an invalid enumMGMergeOptions value and always behaves as if it is OVERWRITE_MG_MERGE_OPTION.

<91> Section 3.2.4.6.3: Windows returns this value if the XML data is corrupt.

<92> Section 3.2.4.6.3: Windows returns this error if the number of machine groups is greater than 128.

<93> Section 3.2.4.6.3: Windows returns this error if the number of machines in a machine group is greater than 128.

<94> Section 3.2.4.6.3: Windows only checks the current node and its children's group name for duplication while modifying the machine group. This error can be reproduced by making the following sequence of calls in a fresh configuration setup.

  1. Import the machine group XML given in the example in section 4.2.15, using the ImportXml method.

  2. Call ModifyMachineGroup with bstrMachineGroupId as "Communication Servers", enumMGMergeOptions as "OVERWRITE_MG_MERGE_OPTION", and bstrMachineGroupInfo as "<MachineGroup Name="Backup Servers" Description=""><Machine Name="BS1" Description="" /> </MachineGroup>".

  3. ModifyMachineGroup fails with WRM_ERR_MACHINEGROUP_ALREADY_EXISTS because the name of the machine group "Communication Servers" is being modified to "Backup Servers", which already exists in the configuration.

<95> Section 3.2.4.6.6: Windows does not validate machine name or its presence in domain while validating machine details.

<96> Section 3.2.4.6.6: Windows returns this value if the XML data is corrupt.

<97> Section 3.2.4.6.6: Windows returns this error if the number of machines in a machine group is greater than 128.

<98> Section 3.2.4.6.7: Windows returns WRM_ERR_MACHINEGROUPID_INVALID if the machine ID is invalid.

<99> Section 3.2.4.6.8: On Windows, a ModifyMachineInfo call stops the WSRM service if called with a non-existing parent machine group ID and a bstrMachineId which exists in some machine group. If this function is called with a non-existing parent machine group ID and a bstrMachineId which does not exist in any of the machine groups, then the server returns WRM_ERR_MACHINEID_INVALID.

<100> Section 3.2.4.6.8: Windows returns this value if the XML data is corrupt.

<101> Section 3.2.4.6.8: Windows returns WRM_ERR_MACHINEID_INVALID instead of WRM_ERR_MACHINEGROUPID_INVALID if the machine group ID is invalid.

<102> Section 3.2.4.6.8: Windows returns a WRM_ERR_MACHINEID_INVALID error if some machine with the new machine name already exists.

<103> Section 3.2.4.6.9: Windows does not recursively delete all instances of machines even if the value of bRecursive is set to TRUE in DeleteMachine call.

<104> Section 3.2.4.6.9: Windows returns WRM_ERR_MACHINEGROUPID_INVALID instead of WRM_ERR_MACHINEID_INVALID for an invalid machine ID.

<105> Section 3.2.4.7.2: Windows returns this value if the XML data is corrupt.

<106> Section 3.2.4.7.2: Windows returns this error if the number of RAPs is greater than 128.

<107> Section 3.2.4.7.3: Windows returns this value if the XML data is corrupt.

<108> Section 3.2.4.7.5: Windows returns this error if the number of characters in a RAPs name is greater than 200.

<109> Section 3.2.4.7.5: Windows returns this value if the XML data is corrupt.

<110> Section 3.2.4.7.9: Windows Server 2008, Windows Vista, Windows 7, and Windows Server 2008 R2 never return this error because a default resource allocation policy (RAP) is always set. EqualPerProcess is the default RAP.

<111> Section 3.2.4.7.14: Windows only accepts "GlobalCP" as the conditional policy name.

<112> Section 3.2.4.7.15: On Windows Server 2008, a value of NULL causes the Windows WSRM management service to crash.

<113> Section 3.2.4.9: This interface is not supported in Windows Vista and Windows Server 2008.

<114> Section 3.2.4.9.2: Windows returns this value if the XML data is corrupt.

<115> Section 3.2.4.10.2: Windows returns this value if the XML data is corrupt.

<116> Section 3.2.4.10.2: Windows returns this error if the resource group name is longer than 200 characters.

<117> Section 3.2.4.10.2: Windows returns this error if the length of the command line is greater than 4160 characters.

<118> Section 3.2.4.10.2: Windows returns this error if the user name or group value is longer than 1040 characters.

<119> Section 3.2.4.10.2: WSRM in Windows Server 2008 and Windows Server 2008 R2 has the following hard-coded built-in resource groups.

Name

Description

Residual

The residual process matching criterion matches all processes that are not included in the exclusion list and do not match another process matching criterion.

IISAppPool

Matches all IIS application pool worker processes.

<120> Section 3.2.4.10.3: Windows returns this error if the total number of resource groups exceeds 128.

<121> Section 3.2.4.10.5: Windows returns this error if the resource group name is longer than 200 characters.