OpenStreamOnFileW
S’applique à : Outlook 2013 | Outlook 2016
Alloue et initialise un objet OLE IStream pour accéder au contenu d’un fichier. Cette fonction prend des chaînes UNICODE comme arguments, contrairement à la version ANSI de cette fonction OpenStreamOnFile, et autorise donc des caractères arbitraires dans le nom de fichier, y compris le chemin d’accès et l’extension de fichier.
Info | Valeur |
---|---|
Exporté par : |
olmapi32.dll |
Implémenté par : |
Outlook |
Appelé par : |
Applications clientes et fournisseurs de services |
HRESULT STDMETHODCALLTYPE OpenStreamOnFileW(
LPALLOCATEBUFFER lpAllocateBuffer,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
LPWSTR lpszFileName,
LPWSTR lpszPrefix,
LPSTREAM FAR * lppStream
);
Paramètres
lpAllocateBuffer
[in] Pointeur vers la fonction MAPIAllocateBuffer , à utiliser pour allouer de la mémoire.
lpFreeBuffer
[in] Pointeur vers la fonction MAPIFreeBuffer , à utiliser pour libérer de la mémoire.
ulFlags
[in] Masque de bits des indicateurs utilisés pour contrôler la création ou l’ouverture du fichier accessible via l’objet OLE IStream . Les indicateurs suivants peuvent être définis :
SOF_UNIQUEFILENAME
Un fichier temporaire doit être créé pour l’objet IStream . Si cet indicateur est défini, les indicateurs STGM_CREATE et STGM_READWRITE doivent également être définis.
STGM_CREATE
Le fichier doit être créé même s’il en existe déjà un. Si le paramètre lpszFileName n’est pas défini, cet indicateur et STGM_DELETEONRELEASE doivent être définis. Si STGM_CREATE est défini, l’indicateur STGM_READWRITE doit également être défini.
STGM_DELETEONRELEASE
Le fichier doit être supprimé lorsque l’objet IStream est libéré. Si le paramètre lpszFileName n’est pas défini, cet indicateur et STGM_CREATE doivent être définis.
STGM_READ
Le fichier doit être créé ou ouvert avec un accès en lecture seule.
STGM_READWRITE
Le fichier doit être créé ou ouvert avec l’autorisation de lecture/écriture. Si cet indicateur n’est pas défini, l’indicateur STGM_CREATE ne doit pas non plus être défini.
lpszFileName
[in] Nom de fichier, y compris le chemin d’accès et l’extension, du fichier nommé Unicode pour lequel OpenStreamOnFileW initialise l’objet IStream . Si l’indicateur SOF_UNIQUEFILENAME est défini, lpszFileName contient le chemin d’accès au répertoire dans lequel créer un fichier temporaire. Si lpszFileName a la valeur NULL, OpenStreamOnFileW obtient un chemin d’accès approprié auprès du système, et les indicateurs STGM_CREATE et STGM_DELETEONRELEASE doivent être définis.
lpszPrefix
[in] Préfixe du nom de fichier Unicode sur lequel OpenStreamOnFileW initialise l’objet IStream . S’il est défini, le préfixe ne doit pas contenir plus de trois caractères. Si lpszPrefix a la valeur NULL, un préfixe de « SOF » est utilisé.
lppStream
[out] Pointeur vers un pointeur vers un objet exposant l’interface IStream .
Valeur renvoyée
S_OK
L'appel a r�ussi et a renvoy� la valeur attendue ou les valeurs.
MAPI_E_NO_ACCESS
Impossible d’accéder au fichier en raison d’autorisations utilisateur insuffisantes ou parce que les fichiers en lecture seule ne peuvent pas être modifiés.
MAPI_E_NOT_FOUND
Le fichier désigné n’existe pas.
Remarques
La fonction OpenStreamOnFileW a deux utilisations importantes en plus de la gestion d’un fichier avec un nom Unicode, qui se distingue par la définition de l’indicateur SOF_UNIQUEFILENAME. Lorsque cet indicateur n’est pas défini, OpenStreamOnFileW ouvre un objet IStream sur un fichier existant, par exemple pour copier son contenu dans la propriété PR_ATTACH_DATA_BIN (PidTagAttachDataBinary) d’une pièce jointe à l’aide de la méthode IStream ::CopyTo . Dans ce cas, le paramètre lpszFileName spécifie le chemin d’accès et le nom de fichier du fichier.
Lorsque SOF_UNIQUEFILENAME est défini, OpenStreamOnFileW crée un fichier temporaire pour contenir les données d’un objet IStream . Pour cette utilisation, le paramètre lpszFileName peut éventuellement désigner le chemin d’accès au répertoire où le fichier doit être créé, et le paramètre lpszPrefix peut éventuellement spécifier un préfixe pour le nom de fichier.
Lorsque l’application cliente appelante ou le fournisseur de services a terminé avec l’objet IStream , il doit le libérer en appelant la méthode OLE IStream ::Release .
MAPI utilise les fonctions pointées par lpAllocateBuffer et lpFreeBuffer pour la plupart des allocations et des désallocations de mémoire, en particulier pour allouer de la mémoire à utiliser par les applications clientes lors de l’appel d’interfaces objet telles que IMAPIProp ::GetProps et IMAPITable ::QueryRows.
Remarques pour les appelants
L’indicateur SOF_UNIQUEFILENAME est utilisé pour créer un fichier temporaire avec un nom unique au système de messagerie. Si cet indicateur est défini, le paramètre lpszFileName spécifie le chemin du fichier temporaire, et le paramètre lpszPrefix contient les caractères de préfixe du nom de fichier. Le nom de fichier construit est <le préfixe>HHHH. TMP, où HHHH est un nombre hexadécimal. Si lpszFileName a la valeur NULL, le fichier est créé dans le répertoire de fichiers temporaire retourné par la fonction Windows GetTempPath, ou dans le répertoire actif si aucun répertoire de fichiers temporaires n’a été désigné.
Si l’indicateur SOF_UNIQUEFILENAME n’est pas défini, lpszPrefix est ignoré et lpszFileName doit contenir le chemin complet et le nom de fichier du fichier à ouvrir ou créer. Le fichier est ouvert ou créé en fonction des autres indicateurs définis dans ulFlags.