Dsm files are located in the Windows directory (only WM5), most of them contain a file list and certification data.
I dont know the full function of this files, but one function is to help somehow to load the mxip*.provxml files.
For mxip*.provxml files see: MSDN
All dsm files are listed in packages.sof
The file list is something like a package list
Dsm files are very useful to analyse a rom or to port some parts from one rom to another
The rgu file listed in a dsm file contains the associated registry settings for this package
Structure:
typedef struct _DeviceManifestHeader
{
const DWORD dwStructSize; // Size of this structure (in bytes)
// for versioning
const DWORD dwPackageVersion; // Version of this package
const DWORD dwPrevPkgVersion; // Version of package that this package
// updates. (0) for Canonical
const DWORD dwPackageFlags; // package specific identifiers.
const DWORD dwProcessorID; // what processor (matches defines in
// winnt.h)
const DWORD dwOSVersion; // what version of the operating system
// was this built to.
const DWORD dwPlatformID; // what was the target platform.
const DWORD dwNameLength; // length of filename in bytes.
const DWORD dwNameOffset; // offset to Friendly name of package
const DWORD dwDependentCount; // How many entries in Dependent GUID
// list.
const DWORD dwDependentOffset; // How many bytes from the front of the
// file are the dependent GUID structs.
const DWORD dwShadowCount; // How many entries in shadow GUID list.
const DWORD dwShadowOffset; // How many bytes from front of file is
// the array of shadowed package GUIDs.
const DWORD dwFileCount; // How many files are there listed in
// this manifest.
const DWORD dwFileListOffset; // How many bytes from the front of file
// to the first FileEntry.
const DWORD cbCERTData; // number of bytes of digital certificate
// data
const DWORD dwCERTDataOffset; // How many bytes from the front of file
// to the certificate data.
const GUID guidPackage; // GUID of this package
}DeviceManifestHeader, *PDeviceManifestHeader;
typedef struct _DependentEntry {
const DWORD size;
const DWORD version;
const GUID guid;
}DependentEntry,*PDependentEntry;
typedef struct _FileEntry {
const DWORD dwNameLength;
const DWORD dwFlags;
const DWORD dwOffset;
const DWORD dwBase; // Base address this file was originally linked with.
}FILEENTRY,*PFILEENTRY;