1*f6dc9357SAndroid Build Coastguard Worker // IPassword.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_IPASSWORD_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_IPASSWORD_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyTypes.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "IDecl.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_BEGIN 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_CONSTR_PASSWORD(i, n) \ 13*f6dc9357SAndroid Build Coastguard Worker Z7_DECL_IFACE_7ZIP(i, 5, n) \ 14*f6dc9357SAndroid Build Coastguard Worker { Z7_IFACE_COM7_PURE(i) }; 15*f6dc9357SAndroid Build Coastguard Worker 16*f6dc9357SAndroid Build Coastguard Worker /* 17*f6dc9357SAndroid Build Coastguard Worker How to use output parameter (BSTR *password): 18*f6dc9357SAndroid Build Coastguard Worker 19*f6dc9357SAndroid Build Coastguard Worker in: The caller is required to set BSTR value as NULL (no string). 20*f6dc9357SAndroid Build Coastguard Worker The callee (in 7-Zip code) ignores the input value stored in BSTR variable, 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker out: The callee rewrites BSTR variable (*password) with new allocated string pointer. 23*f6dc9357SAndroid Build Coastguard Worker The caller must free BSTR string with function SysFreeString(); 24*f6dc9357SAndroid Build Coastguard Worker */ 25*f6dc9357SAndroid Build Coastguard Worker 26*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACEM_ICryptoGetTextPassword(x) \ 27*f6dc9357SAndroid Build Coastguard Worker x(CryptoGetTextPassword(BSTR *password)) 28*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword, 0x10) 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker /* 32*f6dc9357SAndroid Build Coastguard Worker CryptoGetTextPassword2() 33*f6dc9357SAndroid Build Coastguard Worker in: 34*f6dc9357SAndroid Build Coastguard Worker The caller is required to set BSTR value as NULL (no string). 35*f6dc9357SAndroid Build Coastguard Worker The caller is not required to set (*passwordIsDefined) value. 36*f6dc9357SAndroid Build Coastguard Worker 37*f6dc9357SAndroid Build Coastguard Worker out: 38*f6dc9357SAndroid Build Coastguard Worker Return code: != S_OK : error code 39*f6dc9357SAndroid Build Coastguard Worker Return code: S_OK : success 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker if (*passwordIsDefined == 1), the variable (*password) contains password string 42*f6dc9357SAndroid Build Coastguard Worker 43*f6dc9357SAndroid Build Coastguard Worker if (*passwordIsDefined == 0), the password is not defined, 44*f6dc9357SAndroid Build Coastguard Worker but the callee still could set (*password) to some allocated string, for example, as empty string. 45*f6dc9357SAndroid Build Coastguard Worker 46*f6dc9357SAndroid Build Coastguard Worker The caller must free BSTR string with function SysFreeString() 47*f6dc9357SAndroid Build Coastguard Worker */ 48*f6dc9357SAndroid Build Coastguard Worker 49*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACEM_ICryptoGetTextPassword2(x) \ 50*f6dc9357SAndroid Build Coastguard Worker x(CryptoGetTextPassword2(Int32 *passwordIsDefined, BSTR *password)) 51*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword2, 0x11) 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_END 54*f6dc9357SAndroid Build Coastguard Worker #endif 55