What is WMA ? 

Introduction
Professional Tag Editor
Features Overview
What is ID3 Tagging ?
What is WMA Tagging ?
Download
For Developer
Features
ID3 Controls
WMA Controls
Samples
How it works (ID3v1)
How it works (ID3v2)
How it works (WMA)
WMA vs. MP3
About
Version History
About / Permissions
Awards
Both WMA and WMV extensions uses ASF structure to store audio and video data including additional information about them. In fact there is no WMA extension that is only ASF file.

The ASF specification is available at Windows Media. You can read this specification to find out every thing about WMA and WMV files.

ASF made of objects. In fact ASF is object that contains sub objects. Each object have it own structure. As an example there is an object contains file properties and another contain audio data. Every objects have a GUID as identifier. ASF files starts with special GUID that uses as ASF file indicator. GUID is 128 bits length. Every objects starts with GUID and follow by size of object. The data part of object have it own structure.

There is an object named "Content Description Object" the table below is structure of this object:

Field nameField typeSize (bits)
Object IDGUID128
Object SizeQWORD64
Title LengthWORD16
Author LengthWORD16
Copyright LengthWORD16
Description LengthWORD16
Rating LengthWORD16
TitleWCHARVaries
AuthorWCHARVaries
CopyrightWCHARVaries
DescriptionWCHARVaries
RatingWCHARVaries

As you can see in the table, ASF structure used 16bit number for length of strings. This technique used every time that ASF needs to store strings (Differ from string storage in ID3 tagging). And everywhere ASF use unicode encoding for strings (In ID3 string encoding is custom).

As it's clear "Content Description Object" is not enough to store file information. There is too many thing such as picture that's not supported in "Content Description Object". There is another object to store other information. In fact "Content Description Object" is for basic information of file and "Extended Content Description Object" used for more descriptions. This is the structure of this object:

Field nameField typeSize (bits)
Object IDGUID128
Object SizeQWORD64
Content Descriptors CountWORD16
Field NameField TypeSize (bits)
Descriptor Name LengthWORD16
Descriptor NameWCHARvaries
Descriptor Value Data TypeWORD16
Descriptor Value LengthWORD16
Descriptor ValueSee textvaries

As any other objects this object starts with ObjectID and Size. Indicate number of Descriptors that object contains and then for each descriptor have Descriptor structure. Descriptors can contains Strings, Digits, Binary data or any other types.

Professional Tag Editor supports "Content Description", "Extended Content Description", "Branding Object". To see how Professional Tag Editor reads and write ASF information take a look at How it works (WMA).