At the beginning of the binary file is a simple header which describes what DirectX version the shader package is for, and the sizes of various structures.
Right after the header is the beginning of shader data. The process is identical between vertex and pixel shaders, and they're read in that order (the vertex shaders are all read first, and then the pixel shaders.)
The shaders are stored as DXBC bytecode (the bytecode used by DirectX before DXIL.) targetted to the shader level of their respective API as described in `format` above. The data blob starts at `ShaderPackageHeader::shaderDataOffset + Shader::dataOffset` to a length of `dataSize` bytes. To access the ResourceParameter name, they start at `ShaderPackageHeader::stringsOffset + ResourceParameter::localStringOffset` to a length of `stringLength` bytes.