[CDRIVER-4263] Remove calls to GetVersion() and GetVersionEx() Created: 14/Jan/22  Updated: 14/Apr/23

Status: Backlog
Project: C Driver
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Minor - P4
Reporter: Ezra Chung Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: neweng
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Quarter: FY24Q2

 Description   

Per Microsoft Docs:

GetVersion may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper functions. For Windows 10 apps, please see Targeting your applications for Windows.

With the release of Windows 8.1, the behavior of the GetVersion API has changed in the value it will return for the operating system version. The value returned by the GetVersion function now depends on how the application is manifested.

Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersion will always return the version that the application is manifested for in future releases.

In short, GetVersion is no longer a reliable or accurate method for obtainin the Windows OS version. This also applies to GetVersionEx (docs). Alternatives should be investigated, or its usage should be removed entirely.

The C driver currently invokes GetVersionEx in mongoc-handshake.c in _get_os_version, used to set the value of the "version" field in handshake messages:

{ "isMaster" : 1, "helloOk" : true, "os" : { "type" : "Windows", "name" : "Windows", "version" : "6.2 (9200)", "architecture" : "x86_64" }, ...}

The C driver also invokes GetVersion in TestSuite.c in TestSuite_PrintJsonSystemHeader, used to report the release version of the host environment's operating system in which the test suite is executed:

{
  "host": {
    "sysname": "Windows",
    "release": "6.2 (9200)",
    "machine": "8664",
    "memory": {
      "pagesize": 4096,
      "npages": 0
    }
  },
  ...
}



 Comments   
Comment by Githook User [ 14/Apr/23 ]

Author:

{'name': 'Ezra Chung', 'email': '88335979+eramongodb@users.noreply.github.com', 'username': 'eramongodb'}

Message: CDRIVER-4599 Reducing Warnings - MSVC and MinGW Compilation Warnings (#1229)

  • Disable C4756 when compiling with VS 2013 or older
  • client-side-encryption-auto-decryption.c: address C4267 size_t conversion warnings
  • client-side-encryption-explicit.c: address C4267 size_t conversion warnings
  • client-side-encryption-helpers.c: address C4267 size_t conversion warnings
  • mcd-azure.c: address -Wmissing-braces warnings
  • mcd-azure.c: address C4028 parameter inconsistency warnings
  • mongoc-async-cmd.c: address C4018 signedness mismatch warnings
  • mongoc-bulk-operation.c: address C4018 signedness mismatch warnings
  • mongoc-client-side-encryption.c: address C4018 signedness mismatch warnings
  • mongoc-client-side-encryption.c: address C4028 parameter inconsistency warnings
  • mongoc-client.c: address -Wmissing-braces warnings
  • mongoc-cluster.c: address C4018 signedness mismatch warnings
  • mongoc-cluster.c: address C4267 size_t conversion warnings
  • mongoc-collection.c: address -Wmissing-braces warnings
  • mongoc-compression.c: address C4267 size_t conversion warnings
  • mongoc-crypt.c: address C4018 signedness mismatch warnings
  • mongoc-crypt.c: address C4244 narrowing conversion warnings
  • mongoc-cyrus.c: address 4267 size_t conversion warnings
  • mongoc-gridfs-bucket-file.c: address C4267 size_t conversion warnings
  • mongoc-gridfs-file.c: address C4018 signedness mismatch warnings
  • mongoc-gridfs-file.c: address C4244 narrowing conversion warnings
  • mongoc-gridfs-file.c: address scan-build uninitialized value warnings
  • mongoc-handshake.c: address C4018 signedness mismatch warnings
  • mongoc-http.c: address C4244 narrowing conversion warnings
  • mongoc-http.c: address C4267 size_t conversion warnings
  • mongoc-log.c: address C4018 signedness mismatch warnings
  • mongoc-opts-helpers.c: address C4267 size_t conversion warnings
  • mongoc-rpc.c: address C4267 size_t conversion warnings
  • mongoc-scram.c: address C4018 signedness mismatch warnings
  • mongoc-scram.c: address C4267 size_t conversion warnings
  • mongoc-server-monitor.c: address -Wmissing-braces warnings
  • mongoc-server-monitor.c: address C4244 narrowing conversion warnings
  • mongoc-server-monitor.c: address C4267 size_t conversion warnings
  • mongoc-set.c: address C4018 signedness mismatch warnings
  • mongoc-set.c: address C4244 narrowing conversion warnings
  • mongoc-set.c: address C4267 size_t conversion warnings
  • mongoc-shared.c: address C4028 parameter inconsistency warnings
  • mongoc-socket.c: address C4018 signedness mismatch warnings
  • mongoc-socket.c: address C4267 size_t conversion warnings
  • mongoc-stream-file.c: address C4267 size_t conversion warnings
  • mongoc-stream-socket.c: address C4018 signedness mismatch warnings
  • mongoc-stream-tls-openssl.c: address C4018 signedness mismatch warnings
  • mongoc-stream-tls-openssl.c: address C4244 narrowing conversion warnings
  • mongoc-stream-tls-openssl.c: address C4267 size_t conversion warnings
  • mongoc-stream-tls-secure-channel.c: address C4018 signedness mismatch warnings
  • mongoc-stream-tls-secure-channel.c: address C4244 narrowing conversion warnings
  • mongoc-stream-tls.c: address C4244 narrowing conversion warnings
  • mongoc-stream.c: address C4018 signedness mismatch warnings
  • mongoc-topology-background-monitoring.c: address C4018 signedness mismatch warnings
  • mongoc-topology-background-monitoring.c: address C4267 size_t conversion warnings
  • mongoc-topology-description.c: address C4018 signedness mismatch warnings
  • mongoc-topology-description.c: address C4267 size_t conversion warnings
  • mongoc-topology-scanner.c: address C4267 size_t conversion warnings
  • mongoc-topology.c: address C4028 parameter inconsistency warnings
  • mongoc-topology.c: address C4244 narrowing conversion warnings
  • mongoc-util.c: address C4267 size_t conversion warnings
  • mongoc-util.c: address scan build null pointer warnings
  • mongoc-write-command-legacy.c: address C4018 signedness mismatch warnings
  • mongoc-write-command.c: address -Wmissing-braces warnings
  • mongoc-write-command.c: address C4018 signedness mismatch warnings
  • op-msg.def: address C4267 size_t conversion warnings
  • service-gcp.c: address -Wmissing-braces warnings
  • TestSuite.c: address C4018 signedness mismatch warnings
  • entity-map.c: address -Wstrict-prototypes warnings
  • json-test-operations.c: address C4018 signedness mismatch warnings
  • json-test-operations.c: address C4244 narrowing conversion warnings
  • json-test.c: address C4018 signedness mismatch warnings
  • mock-rs.c: address C4018 signedness mismatch warnings
  • mock-server.c: address C4267 size_t conversion warnings
  • operation.c: address C4018 signedness mismatch warnings
  • operation.c: address C4244 narrowing conversion warnings
  • operation.c: address C4267 size_t conversion warnings
  • request.c: address C4018 signedness mismatch warnings
  • runner.c: address C4018 signedness mismatch warnings
  • test-bson.c: address C4018 signedness mismatch warnings
  • test-conveniences.c: address C4018 signedness mismatch warnings
  • test-happy-eyeballs.c: address C4018 signedness mismatch warnings
  • test-libmongoc.c: address -Wunused-parameter warnings
  • test-libmongoc.c: suppress C4091 warning generated by DbgHelp.h
  • test-mongoc-aws.c: address C4267 size_t conversion warnings
  • test-mongoc-bulk.c: address C4267 size_t conversion warnings
  • test-mongoc-client-session.c: address C4267 size_t conversion warnings
  • test-mongoc-client-side-encryption.c: address C4267 size_t conversion warnings
  • test-mongoc-connection-uri.c: address C4244 narrowing conversion warnings
  • test-mongoc-dns.c: address C4244 narrowing conversion warnings
  • test-mongoc-dns.c: address C4267 size_t conversion warnings
  • test-mongoc-gridfs-bucket.c: address C4267 size_t conversion warnings
  • test-mongoc-gridfs.c: address C4244 size_t conversion warnings
  • test-mongoc-handshake.c: address C4267 size_t conversion warnings
  • test-mongoc-interrupt.c: address C4244 narrowing conversion warnings
  • test-mongoc-long-namespace.c: address C4267 size_t conversion warnings
  • test-mongoc-mongohouse.c: address C4244 narrowing conversion warnings
  • test-mongoc-read-write-concern.c: address C4244 narrowing conversion warnings
  • test-mongoc-rpc.c: address C4267 size_t conversion warnings
  • test-mongoc-sdam.c: address -Wmissing-braces warnings
  • test-mongoc-sdam.c: address C4018 signedness mismatch warnings
  • test-mongoc-sdam.c: address C4267 size_t conversion warnings
  • test-mongoc-socket.c: address C4244 narrowing conversion warnings
  • test-mongoc-topology.c: address C4244 narrowing conversion warnings
  • test-mongoc-uri.c: address C4244 narrowing conversion warnings
  • test-mongoc-util.c: address C4267 size_t conversion warnings
Generated at Wed Feb 07 21:20:26 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.