3.1.1 Abstract Data Model

This section describes a conceptual model and possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as the external behavior is consistent with that described in this document.

In the following illustration, each table specifies a type of entity in the model, and each arrow specifies that one type of entity always contains a reference to another.

Server abstract data model

Figure 2: Server abstract data model

Revision Table: A collection of entries corresponding to the revisions available on the server. Each entry is uniquely identified by an UpdateID and RevisionNumber, and is also independently identified uniquely by a RevisionID. Each entry includes the following elements:

  • RevisionID: A server-assigned revision identifier. Because it is more compact than the globally unique (UpdateID, RevisionNumber) pair, the RevisionID is used as the revision identifier during client/server communications to minimize network traffic.

  • UpdateID: A GUID that is the same for all revisions of an update.

  • RevisionNumber: Used in conjunction with the UpdateID to uniquely identify the revision.

  • UpdateType: Specifies whether the update is a Driver, Software, Category, or Detectoid. The SyncUpdates (section 2.2.2.2.4) method treats Drivers and non-drivers differently, as specified in section 3.1.5.7.

This ADM element contains data that overlaps with the Revision Table specified in [MS-WSUSSS] section 3.1.1.

Driver Table: A collection of entries corresponding to the revisions available on the server with an UpdateType of "Driver". Each entry is uniquely identified by a RevisionID. Each entry includes the following elements:

  • RevisionID: A reference to the revision of the driver.

  • HardwareID: A value that identifies the device hardware supported by the driver.

  • DriverVerDate: The release date of the driver.

  • DriverVerVersion: The software version of the driver.

  • Class: The device function class of the driver.

  • Manufacturer: The company that created the driver.

  • Provider: The company providing the driver.

  • Model: The model of hardware that the driver targets.

  • WhqlDriverID: The ID assigned to this driver as part of the driver certification process. A higher number means the driver was submitted to the Microsoft Update live service more recently.

Driver FeatureScore Table: A collection of entries corresponding to the various feature score values for a driver revision per operating system (the same driver can have different feature scores on different operating system versions). FeatureScore is an additional metadata element used to rank drivers.

  • OperatingSystem: A string that defines the specific architecture and operating system for a particular feature score. The format is [Arch].[OSMajorVersion].[OSMinorVersion].<34>

  • FeatureScore: An integer value from 0-255 that represents the feature score of the driver. A lower feature score value is considered better.

  • RevisionID: A reference to a specific driver revision.

  • HardwareID: A value that identifies the device to which the feature score applies.

Driver Distribution ComputerHardwareID Table: A collection of entries corresponding to the distribution-targeted ComputerHardwareID values for a specific driver revision. A driver can be targeted to a particular computer HardwareId at the distribution level within the service or at the INF level within the driver package.

  • DistributionComputerHardwareId: A GUID that represents a set of computer systems to which this driver revision is distribution-targeted for a specific device HardwareId.

  • RevisionID: A reference to a specific driver revision.

  • HardwareID: A value that identifies the device to which this distribution computer HardwareId applies.

Driver Target ComputerHardwareID Table: A collection of entries corresponding to the INF-targeted ComputerHardwareID values for a specific driver revision.

  • TargetComputerHardwareId: A GUID that represents a set of targeted computer systems that this driver revision is INF-targeted to for a specific device HardwareId.

  • RevisionID: A reference to a specific driver revision.

  • HardwareID: A value that identifies the device to which this distribution computer HardwareId applies.

Metadata Table: A collection of metadata fragments, which are derived from the revision metadata, as specified in section 3.1.1.1. Each entry is uniquely identified by the combination of its RevisionID, FragmentType, and locale. Each entry includes the following elements:

  • RevisionID: A reference to the revision that this fragment was derived from.

  • XmlFragment: The metadata fragment.

  • FragmentType: The type of fragment: Core, Extended, LocalizedProperties, or Eula.

  • Locale: For entries with FragmentType of LocalizedProperties or Eula, specifies the locale of the entry. NULL for entries of other FragmentTypes.

Prerequisite Table: A collection of relationships between updates. An update's prerequisites are specified in conjunctive normal form (CNF); for example, (U6 OR U8) AND (U2) AND (U5 OR U3). A client does not treat a revision as requiring installation unless its prerequisites are satisfied (that is, at least one update in each CNF disjunctive clause is installed on the client). Each entry is uniquely identified by the combination of its RevisionID, PrerequisiteUpdateID, and ClauseID. Each entry includes the following elements:

  • RevisionID: A reference to a revision that has a prerequisite relationship on other updates.

  • PrerequisiteUpdateID: A reference to a revision that is a prerequisite. Only the UpdateID is declared, but the reference implicitly refers to the revision with the highest RevisionNumber that has the specified UpdateID.

  • ClauseID: Specifies the CNF "AND clause" in which the prerequisite appears. The ClauseID is used to group each disjunctive clause. In the above example, U6 and U8 have the same ClauseID in this table.

  • IsCategory: Specifies whether the prerequisite is an update category.

Bundle Table: A collection of relationships between updates. Bundled updates are specified in CNF form; for example, (R6 OR R8) AND (R2) AND (R5 OR R3). Each entry is uniquely identified by the combination of its RevisionID, BundledRevisionID, and ClauseID. Each entry includes the following elements:

  • RevisionID: A reference to a revision that bundles other revisions.

  • BundledRevisionID: A reference to a bundled revision.

  • ClauseID: Specifies the CNF "AND clause" in which the bundled revision appears. The ClauseID is used to group each disjunctive clause. In the above example, R6 and R8 have the same ClauseID in this table.

TargetGroup Table: A collection of named groups of clients. Each entry is uniquely identified by a TargetGroupName, the only element in each entry.

This ADM element contains data that overlaps with the TargetGroup Table specified in [MS-WSUSSS] section 3.1.1.

Client Table: A collection of clients. Each entry is uniquely identified by a ComputerID. Each entry includes the following elements:

  • ComputerID: A unique identifier for the client. The server SHOULD use ComputerID to identify clients. A suitable unique identifier is the clientID parameter passed to the GetAuthorizationCookie (section 2.2.2.1.1) method.

  • TargetGroupName: A reference to the target group to which this client belongs.

This ADM element contains data that overlaps with the Client computer table specified in [MS-WSUSSS] section 3.1.1.

Deployment Table: A collection of administrator-defined specifications that state that specific revisions will be made available to specific clients. Each entry is uniquely identified by the combination of its RevisionID and TargetGroupName. Each entry includes the following elements.

  • RevisionID: A reference to the deployed revision.

  • TargetGroupName: A reference to the target group to which the revision is deployed.

  • Action: The action that clients in the specified target group will perform on this revision: OptionalInstall, Install, Uninstall, PreDeploymentCheck (which means that clients will not offer the update, just report back on the status), Block (which means that the update will not be deployed, and is used to override another deployment ), Evaluate (which means that clients will not offer the update and will not report back on the status), or Bundle (which means that clients will not offer the update for install; it is only deployed because it is bundled by some other explicitly deployed update).

  • LastChangeTime: The time the deployment was last modified.

  • DownloadPriority: Specifies whether the client will download the revision's content as high-, medium-, or low-priority relative to other content needed by the client.

  • Deadline: An optionally specified time by which clients SHOULD perform the deployment action.

    This ADM element contains data that overlaps with the Deployment Table specified in [MS-WSUSSS] section 3.1.1.