// The following ifdef block is the standard way of creating macros which make exporting // from a DLL simpler. All files within this DLL are compiled with the PWDMSI_EXPORTS // symbol defined on the command line. this symbol should not be defined on any project // that uses this DLL. This way any other project whose source files include this file see // PWDMSI_API functions as being imported from a DLL, wheras this DLL sees symbols // defined with this macro as being exported. #ifdef PWDMSI_EXPORTS #define PWDMSI_API __declspec(dllexport) #else #define PWDMSI_API __declspec(dllimport) #endif // This class is exported from the PwdMsi.dll class PWDMSI_API CPwdMsi { public: CPwdMsi(void); // TODO: add your methods here. }; // the function LoadOLEAUT32OnNT4 has to be called at the beginning of each function // in this dll in order to provide a workaround for the buggy implementation of // SysAllocString on NT4 // this buggy implementation of SysAllocString will cause the OLEAUT32.dll to unload // prematurely, which results in an AV when any other dll references any function // in OLEAUT32.dll void LoadOLEAUT32OnNT4(); PWDMSI_API UINT __stdcall IsDC(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall DisplayExiting(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall DeleteOldFiles(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall GetInstallEncryptionKey(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall AddToLsaNotificationPkgValue(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall DeleteFromLsaNotificationPkgValue(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall FinishWithPassword(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall PwdsDontMatch(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall BrowseForEncryptionKey(MSIHANDLE hInstall); PWDMSI_API UINT __stdcall GetDefaultPathToEncryptionKey(MSIHANDLE hInstall);