Exporter (0) Imprimer
Développer tout
Développer Réduire

Comment utiliser la validation de format de fichier binaire Microsoft Office

Office 2010

Résumé : Cet article est proposé comme documentation supplémentaire pour la Validation de format de fichier binaire Microsoft Office Bêta. Cet article présente deux exemples qui montrent comment utiliser la Validation de format de fichier binaire Microsoft Office Bêta pour trouver des problèmes de non-conformité avec les fichiers de format binaire .doc, .xls et .ppt.

Dernière modification : jeudi 10 mars 2011

S’applique à : Excel 2010 | Office 2007 | Office 2010 | Office client | Open XML | PowerPoint 2010 | SharePoint Server 2010 | VBA | Word 2010

Cette article utilise des scénarios de validation pour expliquer comment utiliser la Validation de format de fichier binaire Microsoft Office Bêta pour valider certains fichiers binaires. Dans cet article, les scénarios de validation concernent un fichier .ppt qui échoue la validation Office et pour un fichier .doc qui ne l’échoue pas, mais contient une erreur de validation détectée par la Validation de format de fichier binaire Microsoft Office Bêta.

Les types de fichiers suivants sont validés par Validation de format de fichier binaire Microsoft Office Bêta :

Extension

Applications ciblées

.doc

Microsoft Word 97, Microsoft Word 2000 et Microsoft Office Word 2003. Ces formats de fichiers sont également compris par Microsoft Office Word 2007 et Microsoft Word 2010.

.xls

Microsoft Excel 97, Microsoft Excel 2000 et Microsoft Office Excel 2003. Ces formats de fichiers sont également compris par Microsoft Office Excel 2007 et Microsoft Excel 2010.

.ppt

Microsoft PowerPoint 97, Microsoft PowerPoint 2000 et Microsoft Office PowerPoint 2003. Ces formats de fichiers sont également compris par Microsoft Office PowerPoint 2007 et Microsoft PowerPoint 2010.

Commençons par définir le scénario. Vous êtes un développeur pour une entreprise qui crée une suite d’applications qui lit et écrit des fichiers .doc, .ppt ou .xls.

Pour développer ces applications, vous avez attentivement lu et compris les spécifications des fichiers binaires produits par Microsoft. Vous testez maintenant les fichiers que vous avez produits en les ouvrant avec Word, PowerPoint ou Excel. Ces applications effectuent une étape de validation nommée validation de fichier Office lorsqu’elles ouvrent des fichiers. Lorsqu’un utilisateur ouvre un fichier au format binaire, il est d’abord validé afin d’éviter qu’un fichier altéré et potentiellement dangereux ne soit ouvert par un utilisateur.

Cet exemple utilise le fichier .ppt de Microsoft PowerPoint, ouvert dans Microsoft Office 2010. La première indication que vous avez créé un fichier .ppt présentant des problèmes de validation se produit lorsque vous tentez de l’ouvrir dans une application Office 2010 et que le fichier s’ouvre en Mode protégé. Cela indique également que le code que vous avez écrit pour générer le fichier crée du contenu qui n’est pas conforme aux spécifications Open de fichiers binaires.

Le Mode protégé est disponible uniquement dans Microsoft Office 2010 et est indiqué par la bannière rouge affichant le texte : Office a détecté un problème lié à ce fichier. Sa modification peut endommager votre ordinateur. Cliquez pour plus d’informations.

ProtectedView_PPT

Ce message indique que le fichier a été ouvert en Mode protégé. Cependant, la validation qui est intégrée dans l’application ne se charge pas du dépannage du problème. Si vos utilisateurs venaient à ouvrir le fichier et recevoir ce message, ils pourraient juger préférable de ne pas ouvrir le fichier pour un accès en écriture.

Dans ce scénario, vous vous concentrez sur le code qui a généré le fichier qui a échoué la validation de fichier Office. Comme votre code est en cours de développement, vous passez à la phase suivante d’examen du fichier à l’aide de Validation de format de fichier binaire Microsoft Office Bêta.

L’objet de la validation de fichier Office est de protéger les fichiers binaires contre les violations de la sécurité et les menaces malveillantes perçues. Si un fichier qui passe la validation de fichier Office peut être ouvert, cela ne signifie pas l’absence de problèmes dans le fichier. Si le problème ne constitue pas une menace dangereuse pour vos fichiers Word, Excel et PowerPoint, ces applications et votre application peuvent être suffisamment robustes pour ignorer tout écart n’étant pas suffisamment grave pour empêcher l’ouverture du fichier.

Utilisation de la Validation de format de fichier binaire Microsoft Office Bêta

Vous trouverez de la documentation sur l’utilisation de la Validation de format de fichier binaire Microsoft Office Bêta dans l’aide qui l’accompagne. Vous trouverez également l’aide du Validation de format de fichier binaire Microsoft Office Bêta dans la Microsoft MSDN Library : Introduction à la validation de format de fichier binaire Microsoft Office (éventuellement en anglais).

En général, lorsque vous utilisez la Validation de format de fichier binaire Microsoft Office Bêta, vous exécutez les trois phases présentées dans l’illustration suivante :

BFFValidator_Process

La Validation de format de fichier binaire Microsoft Office Bêta s’arrête au premier point d’échec rencontré. Par conséquent, vous devrez revalider l’échec après correction pour vous assurer qu’il n’y a plus d’autres erreurs.

Modification du fichier

La présentation d’instructions sur la modification de fichiers binaires n’entre pas dans le cadre de cet article. Il est impératif de comprendre les flux au sein du fichier binaire ainsi que la notion de décalage avant de tenter de modifier les données dans un fichier spécifique échouant l’analyse de Validation de format de fichier binaire Microsoft Office Bêta.

Cette section présente deux exemples indiquant comment trouver le décalage d’une faute et comment, de façon générale, corriger une erreur dans le fichier proprement dit. Utilisez votre outil préféré pour lire les fichiers binaires, mais un outil basé sur les flux est plus simple à utiliser.

Les sections suivantes montrent comment trouver le point d’échec dans un fichier .ppt qui s’ouvre en Mode protégé, et dans un fichier .doc qui s’ouvre normalement mais contient une erreur de validation après une analyse de Validation de format de fichier binaire Microsoft Office Bêta.

Bien que ces exemples montrent comment modifier un fichier binaire à l’aide d’un éditeur, il est important de rappeler que ceci est une étape de dépannage. Le scénario concerne toujours le développement d’une application qui génère un fichier binaire conforme à la spécification.

Recherche d’une erreur de validation dans un fichier .ppt qui échoue la validation

  1. Pour valider le fichier Sample1_Failing.ppt, présenté dans la capture d’écran de la section « Ouverture d’un fichier en Mode protégé », tapez ceci à la suite de l’invite de commandes :

    C:\Program Files\Microsoft Office\BFFValidator>bffvalidator.exe "C:\users\Alice\Documents\Sample1_Failing.ppt"
    
  2. Après l’exécution de l’analyse, la fenêtre Invite de commandes affiche le message suivant :

    BFFValidator: "C:\users\Alice\Documents\Sample1_Failing.ppt" FAILED at 01/25/11 10:44:35
    Log at: C:\users\Alice\Sample_document.ppt.bffvalidator.01-25-11_10-44-35.xml
    See: http://msdn.microsoft.com/en-us/library/dd945780(v=office.12).aspx for more information
    

    Les informations sur l’invite de commandes incluent un horodatage indiquant à quel moment l’analyse s’est terminée, l’emplacement du fichier qui contient la pile d’analyse détaillée et les informations de décalage sur l’échec. Elles incluent également un lien vers la section Microsoft Open Specification qui décrit le dysfonctionnement du point d’échec.

  3. À ce stade, localisez le fichier journal et examinez-le pour connaître le décalage dans les données du fichier binaire où vous pouvez prévoir trouver l’erreur. Voici le fichier journal qui est créé par cette analyse de validation.

    <BFFValidation path="C:\users\Alice\Documents\Sample1_Failing.ppt" datetime="01/25/11 10:44:35" result="FAILED">
      <ParseStack>
        <Type builtinType="Docfile" docName="MS-PPT" sectionTitle="Streams and Storages" msdnLink="http://msdn.microsoft.com/en-us/library/dd945780(v=office.12).aspx">
          <Info>Built-in type "Docfile": The root storage object of an OLE compound file. For more information, see http://msdn.microsoft.com/en-us/library/dd942138.aspx.</Info>
        </Type>
        <Type builtinType="Stream" docName="MS-PPT" sectionTitle="Streams and Storages" msdnLink="http://msdn.microsoft.com/en-us/library/dd945780(v=office.12).aspx" streamName="Current User" streamOffset="0" hexStreamOffset="0x0">
          <Info>Built-in type "Stream": Any stream object for OLE compound files. The entire file contents for other files.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="CurrentUserAtom" sectionNumber="2.3.2" msdnLink="http://msdn.microsoft.com/en-us/library/940D5700-E4D7-4FC0-AB48-FED5DBC48BC1" streamName="Current User" streamOffset="0" hexStreamOffset="0x0"/>
        <Type docName="MS-PPT" sectionTitle="DocumentContainer" sectionNumber="2.4.1" msdnLink="http://msdn.microsoft.com/en-us/library/6254C4D1-5217-4E16-B20D-C04DDCCE31C9" streamName="PowerPoint Document" streamOffset="0" hexStreamOffset="0x0"/>
        <Type docName="MS-PPT" sectionTitle="SlideListWithTextContainer" sectionNumber="2.4.14.3" msdnLink="http://msdn.microsoft.com/en-us/library/307E6D12-7304-47A8-ACBD-3E7B8041AD3C" streamName="PowerPoint Document" streamOffset="1182" hexStreamOffset="0x49e"/>
        <Type docName="MS-PPT" sectionTitle="SlideListWithTextSubContainerOrAtom" sectionNumber="2.4.14.4" msdnLink="http://msdn.microsoft.com/en-us/library/FC198575-E6FC-420F-8693-6714469EB710" streamName="PowerPoint Document" streamOffset="1190" hexStreamOffset="0x4a6"/>
        <Type docName="MS-PPT" sectionTitle="SlidePersistAtom" sectionNumber="2.4.14.5" msdnLink="http://msdn.microsoft.com/en-us/library/48DCE412-9692-4F93-AEB7-3D9FDD3A0A5A" streamName="PowerPoint Document" streamOffset="1190" hexStreamOffset="0x4a6"/>
        <Type docName="MS-PPT" sectionTitle="SlideContainer" sectionNumber="2.5.1" msdnLink="http://msdn.microsoft.com/en-us/library/4CAC0976-73D0-4AB3-A70B-E98B3CF1C312" streamName="PowerPoint Document" streamOffset="35647" hexStreamOffset="0x8b3f"/>
        <Type docName="MS-PPT" sectionTitle="SlideProgTagsContainer" sectionNumber="2.5.19" msdnLink="http://msdn.microsoft.com/en-us/library/C2263E42-180E-4249-BD93-A421EFD8719B" streamName="PowerPoint Document" streamOffset="37196" hexStreamOffset="0x914c"/>
        <Type docName="MS-PPT" sectionTitle="SlideProgTagsSubContainerOrAtom" sectionNumber="2.5.20" msdnLink="http://msdn.microsoft.com/en-us/library/2BC67516-D5AB-4D9D-8676-1A825C64C2A8" streamName="PowerPoint Document" streamOffset="37204" hexStreamOffset="0x9154"/>
        <Type docName="MS-PPT" sectionTitle="SlideProgBinaryTagContainer" sectionNumber="2.5.21" msdnLink="http://msdn.microsoft.com/en-us/library/E25EB8D2-627E-4104-B293-FC8ED82A098C" streamName="PowerPoint Document" streamOffset="37204" hexStreamOffset="0x9154"/>
        <Type docName="MS-PPT" sectionTitle="SlideProgBinaryTagSubContainerOrAtom" sectionNumber="2.5.22" msdnLink="http://msdn.microsoft.com/en-us/library/AC9AA6BD-3C15-49BD-81D9-5B8BFD966053" streamName="PowerPoint Document" streamOffset="37212" hexStreamOffset="0x915c"/>
        <Type docName="MS-PPT" sectionTitle="PP10SlideBinaryTagExtension" sectionNumber="2.5.24" msdnLink="http://msdn.microsoft.com/en-us/library/CCB82F60-E1AE-4379-B1E0-00909BB70B17" streamName="PowerPoint Document" streamOffset="37212" hexStreamOffset="0x915c"/>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="37256" hexStreamOffset="0x9188"/>
        <Type builtinType="BLOB" streamName="PowerPoint Document" streamOffset="37325" hexStreamOffset="0x91cd">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="37325" hexStreamOffset="0x91cd"/>
        <Type builtinType="BLOB" streamName="PowerPoint Document" streamOffset="104277" hexStreamOffset="0x19755">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="104277" hexStreamOffset="0x19755"/>
        <Type builtinType="BLOB" streamName="PowerPoint Document" streamOffset="104365" hexStreamOffset="0x197ad">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="104365" hexStreamOffset="0x197ad"/>
        <Type builtinType="BLOB" streamName="PowerPoint Document" streamOffset="104453" hexStreamOffset="0x19805">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="104453" hexStreamOffset="0x19805"/>
        <Type builtinType="BLOB" streamName="PowerPoint Document" streamOffset="104890" hexStreamOffset="0x199ba">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-PPT" sectionTitle="ExtTimeNodeContainer" sectionNumber="2.8.15" msdnLink="http://msdn.microsoft.com/en-us/library/83D39C58-0D30-46A4-BFFB-188D792CB5A7" streamName="PowerPoint Document" streamOffset="104890" hexStreamOffset="0x199ba"/>
        <Type docName="MS-PPT" sectionTitle="TimeAnimateBehaviorContainer" sectionNumber="2.8.29" msdnLink="http://msdn.microsoft.com/en-us/library/BC65CD1C-14A7-4C0D-BC2D-192BAB64A713" streamName="PowerPoint Document" streamOffset="104946" hexStreamOffset="0x199f2"/>
        <Type docName="MS-PPT" sectionTitle="TimeBehaviorContainer" sectionNumber="2.8.34" msdnLink="http://msdn.microsoft.com/en-us/library/8D75CC5B-6F80-4B2E-980B-A521E2691E54" streamName="PowerPoint Document" streamOffset="105094" hexStreamOffset="0x19a86"/>
        <Type docName="MS-PPT" sectionTitle="TimePropertyList4TimeBehavior" sectionNumber="2.8.37" msdnLink="http://msdn.microsoft.com/en-us/library/51C4CC59-2D58-4AC9-8B25-4ABC1040780D" streamName="PowerPoint Document" streamOffset="105167" hexStreamOffset="0x19acf"/>
        <Type docName="MS-PPT" sectionTitle="TimeVariant4Behavior" sectionNumber="2.8.38" msdnLink="http://msdn.microsoft.com/en-us/library/758F2315-8EF7-4F1D-81DA-41ED4AB6683A" streamName="PowerPoint Document" streamOffset="105175" hexStreamOffset="0x19ad7"/>
        <Type docName="MS-PPT" sectionTitle="TimeOverride" sectionNumber="2.8.41" msdnLink="http://msdn.microsoft.com/en-us/library/20CE9A31-8EAA-4A42-B957-B9111BE76B2C" streamName="PowerPoint Document" streamOffset="105175" hexStreamOffset="0x19ad7"/>
        <Type builtinType="LONG" streamName="PowerPoint Document" streamOffset="105184" hexStreamOffset="0x19ae0" childId="3" hexChildId="0x3">
          <Info>Built-in type "LONG": Signed 4-byte integer.</Info>
        </Type>
      </ParseStack>
      <LastData><![CDATA[
    00 00 00 00 -- -- -- --  -- -- -- -- -- -- -- --  ....
    ]]></LastData>
    </BFFValidation>
    
  4. Pendant l’examen du fichier journal, vous noterez que l’erreur de validation se trouve dans le flux du document PowerPoint. La Validation de format de fichier binaire Microsoft Office Bêta indique un décalage de 0x0 (en hexadécimal) : streamName="PowerPoint Document" streamOffset="0" hexStreamOffset="0x0".

    Les informations d’erreur apparaissent dans la dernière entrée avec un décalage de flux 0x19ae0 et une valeur d’ID enfant égale à 3. L’attribut msdnLink nous fournit le lien de section spécifique de la spécification Open [MS-PPT] qui explique la conformité que devrait respecter le contenu du fichier binaire.

    <Type docName="MS-PPT" sectionTitle="TimeOverride" sectionNumber="2.8.41" msdnLink="http://msdn.microsoft.com/en-us/library/20CE9A31-8EAA-4A42-B957-B9111BE76B2C" streamName="PowerPoint Document" streamOffset="105175" hexStreamOffset="0x19ad7"/>
        <Type builtinType="LONG" streamName="PowerPoint Document" streamOffset="105184" hexStreamOffset="0x19ae0" childId="3" hexChildId="0x3">
          <Info>Built-in type "LONG": Signed 4-byte integer.</Info>
        </Type>
      </ParseStack>
      <LastData><![CDATA[
    00 00 00 00 -- -- -- --  -- -- -- -- -- -- -- --  ....
    ]]></LastData>
    </BFFValidation>
    
  5. Maintenant que vous disposez du lien de section et de l’ID enfant, recherchez comment devraient se présenter les données binaires. Pour cela, examinez les données dans [MS-PPT] et comparez les données aux quatre derniers octets lus signalés par Validation de format de fichier binaire Microsoft Office Bêta dans l’élément LastData.

  6. L’attribut msdnLink dans l’avant-dernier élément Type, msdnLink = http://msdn.microsoft.com/en-us/library/20CE9A31-8EAA-4A42-B957-B9111BE76B2C, pointe vers les données suivantes dans [MS-PPT].

    Enregistrement TimeOverride
  7. L’attribut childId de 3 pointe sur le troisième enregistrement dans la structure TimeOverride, à savoir l’enregistrement override.

    L’élément LastData indique que les 4 derniers octets qui ont été lus par Validation de format de fichier binaire Microsoft Office Bêta sont 00 00 00 00. Cependant, dans la spécification Open, vous pouvez voir que la valeur de cet enregistrement DOIT être 1.

  8. Vous produisez le fichier .ppt par programmation. Vous souhaitez corriger l’erreur dans le code d’application qui a généré le fichier. Cependant, pour vous assurer qu’il s’agit bien de la seule erreur de validation dans le fichier, il est également utile de corriger la valeur dans un éditeur hexadécimal. Vous pouvez utiliser n’importe quel éditeur hexadécimal, mais préférez un éditeur qui montre les flux. Pour corriger la valeur, procédez comme suit :

    1. Ouvrez le fichier dans l’éditeur hexadécimal, puis localisez le flux « PowerPoint Document ». Dans le fichier journal, ce flux est censé commencer au décalage 0x0, mais si un autre éditeur donne un décalage au début du flux, vous devez ajouter cette valeur au décalage indiqué pour l’enregistrement override.

    2. Localisez les 4 derniers octets dans l’éditeur hexadécimal en allant au décalage enregistré dans le fichier journal (0x19ae0).

    3. Une fois que vous avez localisé les octets, vous devez les inverser avant modification, car le format de fichier pour PowerPoint est dans l’ordre « petit boutisme » (little-endian).

    4. Comme les 4 derniers octets sont 00 00 00 00, à des fins d’illustration, l’inversion de chaque octet serait similaire à l’inversion de 12 34 en 34 12.

      Pour corriger le document Sample1_Failing.ppt, insérez 01 00 00 00 à la position de décalage 0x19ae0, puis enregistrez le fichier sous « Sample1_Repaired.ppt » dans l’éditeur hexadécimal.

  9. Relancez la Validation de format de fichier binaire Microsoft Office Bêta sur le fichier que vous avez corrigé pour vérifier qu’il n’y a plus d’erreur de validation de format de fichier.

    C:\Program Files\Microsoft Office\BFFValidator>bffvalidator.exe "C:\users\Alice\Documents\ Sample1_Repaired.ppt"
    

    Comme le problème que vous avez corrigé était le seul détecté, le fichier passe maintenant la validation :

    PASSED at 01/25/11 11:40:12
    Log at: C:\users\Alice\ Sample1_Repaired.ppt.bffvalidator.01-25-11_11-40-12.xml
    

    Le fichier s’ouvre désormais normalement :

    Fichier PowerPoint en mode normal

Recherche d’une erreur de validation dans un fichier .doc qui échoue la validation

  1. Un fichier Word nommé Sample1_Failing.doc s’ouvre en mode normal mais contient toujours une erreur de validation.

    Mode normal Word
  2. Pour valider ce fichier, suivez des étapes similaires à la procédure de la section précédente pour produire ce fichier journal :

    <BFFValidation path="C:\users\Alice\Failing\Sample1_Failing.doc" datetime="01/25/11 09:06:44" result="FAILED">
      <ParseStack>
        <Type builtinType="Docfile" docName="MS-DOC" sectionTitle="File Structure" msdnLink="http://msdn.microsoft.com/en-us/library/4eaddc8f-4abd-43bb-8fd4-aef9c6121737">
          <Info>Built-in type "Docfile": The root storage object of an OLE compound file. For more information, see http://msdn.microsoft.com/en-us/library/dd942138.aspx.</Info>
        </Type>
        <Type builtinType="Stream" docName="MS-DOC" sectionTitle="File Structure" msdnLink="http://msdn.microsoft.com/en-us/library/4eaddc8f-4abd-43bb-8fd4-aef9c6121737" streamName="WordDocument" streamOffset="0" hexStreamOffset="0x0">
          <Info>Built-in type "Stream": Any stream object for OLE compound files. The entire file contents for other files.</Info>
        </Type>
        <Type docName="MS-DOC" sectionTitle="Fib" sectionNumber="2.5.1" msdnLink="http://msdn.microsoft.com/en-us/library/9AEAA2E7-4A45-468E-AB13-3F6193EB9394" streamName="WordDocument" streamOffset="0" hexStreamOffset="0x0"/>
        <Type docName="MS-DOC" sectionTitle="FibRgFcLcb" sectionNumber="2.5.5" msdnLink="http://msdn.microsoft.com/en-us/library/175D2FE1-92DD-45D2-B091-1FE8A0C0D40A" streamName="WordDocument" streamOffset="154" hexStreamOffset="0x9a"/>
        <Type docName="MS-DOC" sectionTitle="FibRgFcLcb2003" sectionNumber="2.5.9" msdnLink="http://msdn.microsoft.com/en-us/library/F6B7D624-570C-4057-ACFD-CBA71D12F1A0" streamName="WordDocument" streamOffset="154" hexStreamOffset="0x9a"/>
        <Type docName="MS-DOC" sectionTitle="FibRgFcLcb2002" sectionNumber="2.5.8" msdnLink="http://msdn.microsoft.com/en-us/library/FCE09F81-704B-460D-9BCA-F7DC121AED66" streamName="WordDocument" streamOffset="154" hexStreamOffset="0x9a"/>
        <Type docName="MS-DOC" sectionTitle="FibRgFcLcb2000" sectionNumber="2.5.7" msdnLink="http://msdn.microsoft.com/en-us/library/265BCA68-C4EF-4A03-8517-61D7E79850EB" streamName="WordDocument" streamOffset="154" hexStreamOffset="0x9a"/>
        <Type docName="MS-DOC" sectionTitle="FibRgFcLcb97" sectionNumber="2.5.6" msdnLink="http://msdn.microsoft.com/en-us/library/0C9DF81F-98D0-454E-AD84-B612CD05B1A4" streamName="WordDocument" streamOffset="154" hexStreamOffset="0x9a"/>
        <Type docName="MS-DOC" sectionTitle="PlcBtePapx" sectionNumber="2.8.6" msdnLink="http://msdn.microsoft.com/en-us/library/76D3B8E1-337B-4812-A3F1-6B417BA6398D" streamName="1Table" streamOffset="1172" hexStreamOffset="0x494"/>
        <Type docName="MS-DOC" sectionTitle="PnFkpPapx" sectionNumber="2.9.207" msdnLink="http://msdn.microsoft.com/en-us/library/6B3D10C0-0B95-4533-93FE-CAEF5C09679B" streamName="1Table" streamOffset="1180" hexStreamOffset="0x49c"/>
        <Type docName="MS-DOC" sectionTitle="PapxFkp" sectionNumber="2.9.174" msdnLink="http://msdn.microsoft.com/en-us/library/34AAEAF3-9578-41AF-A3F5-C12F6F66BF1B" streamName="WordDocument" streamOffset="3072" hexStreamOffset="0xc00"/>
        <Type docName="MS-DOC" sectionTitle="BxPap" sectionNumber="2.9.23" msdnLink="http://msdn.microsoft.com/en-us/library/86DF4678-FF4D-4877-B61A-6C621906973F" streamName="WordDocument" streamOffset="3101" hexStreamOffset="0xc1d"/>
        <Type docName="MS-DOC" sectionTitle="PapxInFkp" sectionNumber="2.9.175" msdnLink="http://msdn.microsoft.com/en-us/library/580510B8-DF7A-467E-A51C-0D71EB15C7CD" streamName="WordDocument" streamOffset="3362" hexStreamOffset="0xd22"/>
        <Type builtinType="BLOB" streamName="WordDocument" streamOffset="3363" hexStreamOffset="0xd23">
          <Info>Built-in type "BLOB": Binary data of any length with no further definition. The size of the data can be zero.</Info>
        </Type>
        <Type docName="MS-DOC" sectionTitle="GrpPrlAndIstd" sectionNumber="2.9.114" msdnLink="http://msdn.microsoft.com/en-us/library/BD96F2AA-1318-4066-9723-4DB035EF412B" streamName="WordDocument" streamOffset="3363" hexStreamOffset="0xd23"/>
        <Type docName="MS-DOC" sectionTitle="GrpPrlAndIstd" msdnLink="http://msdn.microsoft.com/en-us/library/dd909647(office.12).aspx" streamName="WordDocument" streamOffset="3365" hexStreamOffset="0xd25"/>
        <Type docName="MS-DOC" sectionTitle="Prl" sectionNumber="2.2.5.2" msdnLink="http://msdn.microsoft.com/en-us/library/4EABFFA2-B8B6-444C-9A92-3291AB5035EF" streamName="WordDocument" streamOffset="3387" hexStreamOffset="0xd3b"/>
        <Type docName="MS-DOC" sectionTitle="Table Properties" msdnLink="http://msdn.microsoft.com/en-us/library/b39a6648-501c-4361-8366-4f042f579469" streamName="WordDocument" streamOffset="3389" hexStreamOffset="0xd3d"/>
        <Type docName="MS-DOC" sectionTitle="TableBordersOperand80" sectionNumber="2.9.303" msdnLink="http://msdn.microsoft.com/en-us/library/E334B793-1C10-4FED-8FAC-69C3F8FB41B6" streamName="WordDocument" streamOffset="3389" hexStreamOffset="0xd3d"/>
        <Type docName="MS-DOC" sectionTitle="Brc80MayBeNil" sectionNumber="2.9.18" msdnLink="http://msdn.microsoft.com/en-us/library/8458EDBD-C81C-4EC7-B5FF-C99C50575301" streamName="WordDocument" streamOffset="3390" hexStreamOffset="0xd3e"/>
        <Type docName="MS-DOC" sectionTitle="Brc80" sectionNumber="2.9.17" msdnLink="http://msdn.microsoft.com/en-us/library/CFAB8014-E477-4E33-B50F-A23B8476F6F3" streamName="WordDocument" streamOffset="3390" hexStreamOffset="0xd3e"/>
        <Type builtinType="BYTE" streamName="WordDocument" bitfield="True" bitOffsetWithinStruct="31" hexBitOffsetWithinStruct="0x1f" bitCount="1" streamOffsetOfStruct="3390" hexStreamOffsetOfStruct="0xd3e" streamOffset="3393" hexStreamOffset="0xd41" childId="7" hexChildId="0x7">
          <Info>Built-in type "BYTE": Unsigned 1-byte integer.</Info>
        </Type>
      </ParseStack>
      <LastData><![CDATA[
    18 0B 00 80 -- -- -- --  -- -- -- -- -- -- -- --  ....
    ]]></LastData>
    </BFFValidation>
    
  3. Dans le fichier journal, le nom du flux est WordDocument, l’ID enfant est 7, le décalage est 0xd41, et les dernières données lues sont 18 0B 00 80.

  4. L’attribut msdnLink dans l’avant-dernier élément Type, msdnLink="http://msdn.microsoft.com/en-us/library/CFAB8014-E477-4E33-B50F-A23B8476F6F3", pointe vers les données suivantes sur [MS-DOC].

    Structure Brc80
  5. Dans la structure Brc80, le 7e enregistrement est C, d’une taille d’un bit, et la spécification indique que C DOIT être zéro.

  6. Une fois que vous avez localisé les 4 derniers octets lus dans le fichier en utilisant un éditeur hexadécimal, inversez les octets de nouveau car la spécification est dans un ordre « petit boutisme », en 80 00 0B 18.

    Comme C++ stocke les structures à partir de la fin, dptSpace (5 bits), A-fShadow (1 bit), B-fFrame (1 bit) et C- reserved (1 bit) sont tous stockés dans le premier 80.

    Si vous convertissez le 80 en binaire, il devient 1000 0000. De nouveau, les 5 bits dptSpace sont les 5 premiers à partir de la fin de telle sorte que C-reserved est le premier bit, 1 ici.

  7. Une fois que vous avez corrigé ceci en 0000 0000 comme requis par la spécification, la valeur hexadécimale devient 00, et les octets sont maintenant 00 00 0B 18.

  8. Pour corriger ceci dans le fichier, vous inversez de nouveau dans l’ordre « petit boutisme » afin que les derniers octets lus dans le fichier deviennent 18 0B 00 00.

Conclusion

Deux exemples vous indiquent comment dépanner les fichiers binaires conformes aux protocoles Microsoft Office. Les modalités de correction du code de l’application qui génère le fichier sont laissées à l’appréciation du lecteur. Pour les corrections simples, ponctuelles, l’utilisation de votre éditeur hexadécimal préféré pour examiner et modifier les bits constitue une meilleure pratique pour le dépannage de votre code. Les exemples montrent comment utiliser la Validation de format de fichier binaire Microsoft Office Bêta pour examiner les fichiers créés par votre application, et présentent un processus d’examen des données binaires dans le fichier afin que vous puissiez améliorer le code qui est écrit un fichier .doc, .xls ou .ppt.

Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft