2010-08-12 7 views
4

J'essaie actuellement de passer un appel à l'appel de fonction this. Voici la déclaration:Déclaration d'un const BYTE * en C++

const void* WINAPI CertCreateContext(
    __in  DWORD dwContextType, 
    __in  DWORD dwEncodingType, 
    __in  const BYTE *pbEncoded, 
    __in  DWORD cbEncoded, 
    __in  DWORD dwFlags, 
    __in_opt PCERT_CREATE_CONTEXT_PARA pCreatePara 
); 

Comme vous pouvez le voir, la troisième entrée param appelle à une const BYTE * qui représente le certificat codé que vous essayez de créer. Comment définir une telle variable en C++?

Répondre

8

Vous n'en avez pas besoin. Le paramètre function est un pointeur vers un const BYTE, ce qui signifie que la fonction ne changera pas l'octet vers lequel elle pointe. Un exemple simple:

void f(const BYTE * p) { 
    // stuff 
} 

BYTE b = 42; 
BYTE a[] = { 1, 2, 3 }; 

f(& b); 
f(a); 

Vous devrez bien sûr #include l'en-tête qui déclare le type BYTE.

+0

Et le downvote était parce que quoi? –

+0

@Neil: Down-votes sur des réponses simples sont les plus déconcertants. – GManNickG

+0

@GMan Je sais, ce qui explique pourquoi ils sont les seuls que je demande, dans l'espoir désespéré, le downvoter pourrait s'expliquer. –

0

Vous avez seulement besoin de déclarer un BYTE*, le compilateur lancera automatiquement les non const s à const s.

0

Selon le documentation:

pbEncoded est un pointeur vers un tampon qui contient le contenu existant de contexte codé à copier.

0

Passer dans un pointeur régulier vers BYTE. Le const indique que l'objet pointé ne sera pas modifié dans la fonction.

+0

Merci d'avoir attrapé ça, Neil. Je voulais dire que l'objet pointé sur * ne sera pas modifié. Le pointeur lui-même ne peut certainement pas être modifié lorsqu'il est passé par valeur, 'const' ou autrement. Fixé – bta