|
|
//
// Prototype and function pointer types
//
typedef BOOL (GETFILEATTRIBUTESEXA_PROTOTYPE)(LPCSTR, GET_FILEEX_INFO_LEVELS, LPVOID); typedef GETFILEATTRIBUTESEXA_PROTOTYPE * GETFILEATTRIBUTESEXA_PROC;
typedef UINT (GETSYSTEMWINDOWSDIRECTORYA_PROTOTYPE)(LPSTR, UINT); typedef GETSYSTEMWINDOWSDIRECTORYA_PROTOTYPE * GETSYSTEMWINDOWSDIRECTORYA_PROC;
typedef BOOL (VERIFYVERSIONINFOA_PROTOTYPE)(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); typedef VERIFYVERSIONINFOA_PROTOTYPE * VERIFYVERSIONINFOA_PROC;
typedef ULONGLONG (VERSETCONDITIONMASK_PROTOTYPE)(ULONGLONG, DWORD, BYTE); typedef VERSETCONDITIONMASK_PROTOTYPE * VERSETCONDITIONMASK_PROC;
typedef HANDLE (WINAPI SFCONNECTTOSERVER_PROTOTYPE)(LPCWSTR ServerName); typedef VOID (SFCCLOSE_PROTOTYPE)(IN HANDLE RpcHandle); typedef DWORD (WINAPI SFCFILEEXCEPTION_PROTOTYPE)(HANDLE RpcHandle,PCWSTR FileName,DWORD ExpectedChangeType); typedef BOOL (WINAPI SFCISFILEPROTECTED_PROTOTYPE)(HANDLE RpcHandle,LPCWSTR ProtFileName); typedef SFCONNECTTOSERVER_PROTOTYPE * SFCONNECTTOSERVER_PROC; typedef SFCCLOSE_PROTOTYPE * SFCCLOSE_PROC; typedef SFCFILEEXCEPTION_PROTOTYPE * SFCFILEEXCEPTION_PROC; typedef SFCISFILEPROTECTED_PROTOTYPE * SFCISFILEPROTECTED_PROC;
#ifdef ANSI_SETUPAPI
typedef CONFIGRET (WINAPI *CM_GET_CLASS_REGISTRY_PROPERTYA)( IN LPGUID ClassGUID, IN ULONG ulProperty, OUT PULONG pulRegDataType, OPTIONAL OUT PVOID Buffer, OPTIONAL IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_SET_CLASS_REGISTRY_PROPERTYA)( IN LPGUID ClassGUID, IN ULONG ulProperty, IN PCVOID Buffer, OPTIONAL IN ULONG ulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_GET_DEVICE_INTERFACE_ALIAS_EXA)( IN LPCSTR pszDeviceInterface, IN LPGUID AliasInterfaceGuid, OUT LPSTR pszAliasDeviceInterface, IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_GET_DEVICE_INTERFACE_LIST_EXA)( IN LPGUID InterfaceClassGuid, IN DEVINSTID_A pDeviceID, OPTIONAL OUT PCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_GET_DEVICE_INTERFACE_LIST_SIZE_EXA)( IN PULONG pulLen, IN LPGUID InterfaceClassGuid, IN DEVINSTID_A pDeviceID, OPTIONAL IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_GET_LOG_CONF_PRIORITY_EX)( IN LOG_CONF lcLogConf, OUT PPRIORITY pPriority, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_QUERY_AND_REMOVE_SUBTREE_EXA)( IN DEVINST dnAncestor, OUT PPNP_VETO_TYPE pVetoType, OUT LPSTR pszVetoName, IN ULONG ulNameLength, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_REGISTER_DEVICE_INTERFACE_EXA)( IN DEVINST dnDevInst, IN LPGUID InterfaceClassGuid, IN LPCSTR pszReference, OPTIONAL OUT LPSTR pszDeviceInterface, IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_SET_DEVNODE_PROBLEM_EX)( IN DEVINST dnDevInst, IN ULONG ulProblem, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_UNREGISTER_DEVICE_INTERFACE_EXA)( IN LPCSTR pszDeviceInterface, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef BOOL (WINAPI *CRYPTCATADMINACQUIRECONTEXT)( OUT HCATADMIN *phCatAdmin, IN const GUID *pgSubsystem, IN DWORD dwFlags );
typedef BOOL (WINAPI *CRYPTCATADMINRELEASECONTEXT)( IN HCATADMIN hCatAdmin, IN DWORD dwFlags );
typedef BOOL (WINAPI *CRYPTCATADMINRELEASECATALOGCONTEXT)( IN HCATADMIN hCatAdmin, IN HCATINFO hCatInfo, IN DWORD dwFlags );
typedef HCATINFO (WINAPI *CRYPTCATADMINADDCATALOG)( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN OPTIONAL WCHAR *pwszSelectBaseName, IN DWORD dwFlags );
typedef BOOL (WINAPI *CRYPTCATCATALOGINFOFROMCONTEXT)( IN HCATINFO hCatInfo, IN OUT CATALOG_INFO *psCatInfo, IN DWORD dwFlags );
typedef BOOL (WINAPI *CRYPTCATADMINCALCHASHFROMFILEHANDLE)( IN HANDLE hFile, IN OUT DWORD *pcbHash, OUT OPTIONAL BYTE *pbHash, IN DWORD dwFlags );
typedef HCATINFO (WINAPI *CRYPTCATADMINENUMCATALOGFROMHASH)( IN HCATADMIN hCatAdmin, IN BYTE *pbHash, IN DWORD cbHash, IN DWORD dwFlags, IN OUT HCATINFO *phPrevCatInfo );
typedef BOOL (WINAPI *CRYPTCATADMINREMOVECATALOG)( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN DWORD dwFlags );
typedef BOOL (WINAPI *CRYPTCATADMINRESOLVECATALOGPATH)( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN OUT CATALOG_INFO *psCatInfo, IN DWORD dwFlags );
typedef BOOL (WINAPI *CERTFREECERTIFICATECONTEXT)( IN PCCERT_CONTEXT pCertContext );
typedef LONG (WINAPI *WINVERIFYTRUST)( HWND hwnd, GUID *pgActionID, LPVOID pWVTData );
typedef CONFIGRET (WINAPI *CM_QUERY_RESOURCE_CONFLICT_LIST)( OUT PCONFLICT_LIST pclConflictList, IN DEVINST dnDevInst, IN RESOURCEID ResourceID, IN PCVOID ResourceData, IN ULONG ResourceLen, IN ULONG ulFlags, IN HMACHINE hMachine );
typedef CONFIGRET (WINAPI *CM_FREE_RESOURCE_CONFLICT_HANDLE)( IN CONFLICT_LIST clConflictList );
typedef CONFIGRET (WINAPI *CM_GET_RESOURCE_CONFLICT_COUNT)( IN CONFLICT_LIST clConflictList, OUT PULONG pulCount );
typedef CONFIGRET (WINAPI *CM_GET_RESOURCE_CONFLICT_DETAILSA)( IN CONFLICT_LIST clConflictList, IN ULONG ulIndex, IN OUT PCONFLICT_DETAILS_A pConflictDetails );
#endif
//
// Pointers declared in stub.c and initialized in InitializeStubFnPtrs
//
extern GETFILEATTRIBUTESEXA_PROC Dyn_GetFileAttributesExA; extern GETSYSTEMWINDOWSDIRECTORYA_PROC Dyn_GetSystemWindowsDirectoryA; extern VERIFYVERSIONINFOA_PROC Dyn_VerifyVersionInfoA; extern VERSETCONDITIONMASK_PROC Dyn_VerSetConditionMask; extern SFCONNECTTOSERVER_PROC Dyn_SfcConnectToServer; extern SFCCLOSE_PROC Dyn_SfcClose; extern SFCFILEEXCEPTION_PROC Dyn_SfcFileException; extern SFCISFILEPROTECTED_PROC Dyn_SfcIsFileProtected;
#ifdef ANSI_SETUPAPI
extern CM_QUERY_RESOURCE_CONFLICT_LIST Dyn_CM_Query_Resource_Conflict_List; extern CM_FREE_RESOURCE_CONFLICT_HANDLE Dyn_CM_Free_Resource_Conflict_Handle; extern CM_GET_RESOURCE_CONFLICT_COUNT Dyn_CM_Get_Resource_Conflict_Count; extern CM_GET_RESOURCE_CONFLICT_DETAILSA Dyn_CM_Get_Resource_Conflict_DetailsA; extern CM_GET_CLASS_REGISTRY_PROPERTYA Dyn_CM_Get_Class_Registry_PropertyA; extern CM_SET_CLASS_REGISTRY_PROPERTYA Dyn_CM_Set_Class_Registry_PropertyA; extern CM_GET_DEVICE_INTERFACE_ALIAS_EXA Dyn_CM_Get_Device_Interface_Alias_ExA; extern CM_GET_DEVICE_INTERFACE_LIST_EXA Dyn_CM_Get_Device_Interface_List_ExA; extern CM_GET_DEVICE_INTERFACE_LIST_SIZE_EXA Dyn_CM_Get_Device_Interface_List_Size_ExA; extern CM_GET_LOG_CONF_PRIORITY_EX Dyn_CM_Get_Log_Conf_Priority_Ex; extern CM_QUERY_AND_REMOVE_SUBTREE_EXA Dyn_CM_Query_And_Remove_SubTree_ExA; extern CM_REGISTER_DEVICE_INTERFACE_EXA Dyn_CM_Register_Device_Interface_ExA; extern CM_SET_DEVNODE_PROBLEM_EX Dyn_CM_Set_DevNode_Problem_Ex; extern CM_UNREGISTER_DEVICE_INTERFACE_EXA Dyn_CM_Unregister_Device_Interface_ExA;
extern CRYPTCATADMINACQUIRECONTEXT Dyn_CryptCATAdminAcquireContext; extern CRYPTCATADMINRELEASECONTEXT Dyn_CryptCATAdminReleaseContext; extern CRYPTCATADMINRELEASECATALOGCONTEXT Dyn_CryptCATAdminReleaseCatalogContext; extern CRYPTCATADMINADDCATALOG Dyn_CryptCATAdminAddCatalog; extern CRYPTCATCATALOGINFOFROMCONTEXT Dyn_CryptCATCatalogInfoFromContext; extern CRYPTCATADMINCALCHASHFROMFILEHANDLE Dyn_CryptCATAdminCalcHashFromFileHandle; extern CRYPTCATADMINENUMCATALOGFROMHASH Dyn_CryptCATAdminEnumCatalogFromHash; extern CRYPTCATADMINREMOVECATALOG Dyn_CryptCATAdminRemoveCatalog; extern CRYPTCATADMINRESOLVECATALOGPATH Dyn_CryptCATAdminResolveCatalogPath;
extern CERTFREECERTIFICATECONTEXT Dyn_CertFreeCertificateContext;
extern WINVERIFYTRUST Dyn_WinVerifyTrust;
#endif
//
// "Not Implemented" Stubs
//
BOOL WINAPI Stub_VerifyVersionInfoA( IN LPOSVERSIONINFOEXA lpVersionInformation, IN DWORD dwTypeMask, IN DWORDLONG dwlConditionMask );
BOOL WINAPI Stub_VerifyVersionInfoW( IN LPOSVERSIONINFOEXW lpVersionInformation, IN DWORD dwTypeMask, IN DWORDLONG dwlConditionMask );
ULONGLONG NTAPI Stub_VerSetConditionMask( IN ULONGLONG ConditionMask, IN DWORD TypeMask, IN BYTE Condition );
HANDLE WINAPI Stub_SfcConnectToServer( IN LPCWSTR ServerName );
VOID Stub_SfcClose( IN HANDLE RpcHandle );
DWORD WINAPI Stub_SfcFileException( IN HANDLE RpcHandle, IN PCWSTR FileName, IN DWORD ExpectedChangeType );
BOOL WINAPI Stub_SfcIsFileProtected( IN HANDLE RpcHandle, IN LPCWSTR ProtFileName );
HANDLE WINAPI FirstLoad_SfcConnectToServer( IN LPCWSTR ServerName );
VOID FirstLoad_SfcClose( IN HANDLE RpcHandle );
DWORD WINAPI FirstLoad_SfcFileException( IN HANDLE RpcHandle, IN PCWSTR FileName, IN DWORD ExpectedChangeType );
BOOL WINAPI FirstLoad_SfcIsFileProtected( IN HANDLE RpcHandle, IN LPCWSTR ProtFileName );
#ifdef ANSI_SETUPAPI
CONFIGRET WINAPI Stub_CM_Get_Class_Registry_PropertyA( IN LPGUID ClassGUID, IN ULONG ulProperty, OUT PULONG pulRegDataType, OPTIONAL OUT PVOID Buffer, OPTIONAL IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Set_Class_Registry_PropertyA( IN LPGUID ClassGUID, IN ULONG ulProperty, IN PCVOID Buffer, OPTIONAL IN ULONG ulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Get_Device_Interface_Alias_ExA ( IN LPCSTR pszDeviceInterface, IN LPGUID AliasInterfaceGuid, OUT LPSTR pszAliasDeviceInterface, IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Get_Device_Interface_List_ExA( IN LPGUID InterfaceClassGuid, IN DEVINSTID_A pDeviceID, OPTIONAL OUT PCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Get_Device_Interface_List_Size_ExA( IN PULONG pulLen, IN LPGUID InterfaceClassGuid, IN DEVINSTID_A pDeviceID, OPTIONAL IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Get_Log_Conf_Priority_Ex( IN LOG_CONF lcLogConf, OUT PPRIORITY pPriority, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Query_And_Remove_SubTree_ExA( IN DEVINST dnAncestor, OUT PPNP_VETO_TYPE pVetoType, OUT LPSTR pszVetoName, IN ULONG ulNameLength, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Register_Device_Interface_ExA( IN DEVINST dnDevInst, IN LPGUID InterfaceClassGuid, IN LPCSTR pszReference, OPTIONAL OUT LPSTR pszDeviceInterface, IN OUT PULONG pulLength, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Set_DevNode_Problem_Ex( IN DEVINST dnDevInst, IN ULONG ulProblem, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Unregister_Device_Interface_ExA( IN LPCSTR pszDeviceInterface, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Query_Resource_Conflict_List( OUT PCONFLICT_LIST pclConflictList, IN DEVINST dnDevInst, IN RESOURCEID ResourceID, IN PCVOID ResourceData, IN ULONG ResourceLen, IN ULONG ulFlags, IN HMACHINE hMachine );
CONFIGRET WINAPI Stub_CM_Free_Resource_Conflict_Handle( IN CONFLICT_LIST clConflictList );
CONFIGRET WINAPI Stub_CM_Get_Resource_Conflict_Count( IN CONFLICT_LIST clConflictList, OUT PULONG pulCount );
CONFIGRET WINAPI Stub_CM_Get_Resource_Conflict_DetailsA( IN CONFLICT_LIST clConflictList, IN ULONG ulIndex, IN OUT PCONFLICT_DETAILS_A pConflictDetails );
BOOL WINAPI Stub_CryptCATAdminAcquireContext ( OUT HCATADMIN *phCatAdmin, IN const GUID *pgSubsystem, IN DWORD dwFlags );
BOOL WINAPI Stub_CryptCATAdminReleaseContext ( IN HCATADMIN hCatAdmin, IN DWORD dwFlags );
BOOL WINAPI Stub_CryptCATAdminReleaseCatalogContext ( IN HCATADMIN hCatAdmin, IN HCATINFO hCatInfo, IN DWORD dwFlags );
HCATINFO WINAPI Stub_CryptCATAdminAddCatalog ( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN OPTIONAL WCHAR *pwszSelectBaseName, IN DWORD dwFlags );
BOOL WINAPI Stub_CryptCATCatalogInfoFromContext ( IN HCATINFO hCatInfo, IN OUT CATALOG_INFO *psCatInfo, IN DWORD dwFlags );
BOOL WINAPI Stub_CryptCATAdminCalcHashFromFileHandle ( IN HANDLE hFile, IN OUT DWORD *pcbHash, OUT OPTIONAL BYTE *pbHash, IN DWORD dwFlags );
HCATINFO WINAPI Stub_CryptCATAdminEnumCatalogFromHash( IN HCATADMIN hCatAdmin, IN BYTE *pbHash, IN DWORD cbHash, IN DWORD dwFlags, IN OUT HCATINFO *phPrevCatInfo );
BOOL WINAPI Stub_CryptCATAdminRemoveCatalog( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN DWORD dwFlags );
BOOL WINAPI Stub_CryptCATAdminResolveCatalogPath( IN HCATADMIN hCatAdmin, IN WCHAR *pwszCatalogFile, IN OUT CATALOG_INFO *psCatInfo, IN DWORD dwFlags );
BOOL WINAPI Stub_CertFreeCertificateContext( IN PCCERT_CONTEXT pCertContext );
LONG WINAPI Stub_WinVerifyTrust( HWND hwnd, GUID *pgActionID, LPVOID pWVTData );
int Stub_wnsprintf( LPTSTR lpOut, int cchLimitIn, LPCTSTR pszFmt, ... );
#endif
//
// Macro repairs
//
#define SfcConnectToServer Dyn_SfcConnectToServer
#define SfcClose Dyn_SfcClose
#define SfcFileException Dyn_SfcFileException
#define SfcIsFileProtected Dyn_SfcIsFileProtected
#ifdef ANSI_SETUPAPI
#undef VerifyVersionInfo
#undef VerSetConditionMask
#undef GetFileAttributesEx
#undef GetSystemWindowsDirectory
#undef CM_Get_Class_Registry_Property
#undef CM_Set_Class_Registry_Property
#undef CM_Get_Device_Interface_Alias_Ex
#undef CM_Get_Device_Interface_List_Ex
#undef CM_Get_Device_Interface_List_Size_Ex
#undef CM_Query_And_Remove_SubTree_Ex
#undef CM_Register_Device_Interface_Ex
#undef CM_Unregister_Device_Interface_Ex
#undef CM_Get_Resource_Conflict_Details
#define VerifyVersionInfo Dyn_VerifyVersionInfoA
#define VerSetConditionMask Dyn_VerSetConditionMask
#define CM_Get_Class_Registry_Property Dyn_CM_Get_Class_Registry_PropertyA
#define CM_Set_Class_Registry_Property Dyn_CM_Set_Class_Registry_PropertyA
#define CM_Get_Device_Interface_Alias_Ex Dyn_CM_Get_Device_Interface_Alias_ExA
#define CM_Get_Device_Interface_List_Ex Dyn_CM_Get_Device_Interface_List_ExA
#define CM_Get_Device_Interface_List_Size_Ex Dyn_CM_Get_Device_Interface_List_Size_ExA
#define CM_Get_Log_Conf_Priority_Ex Dyn_CM_Get_Log_Conf_Priority_Ex
#define CM_Query_And_Remove_SubTree_Ex Dyn_CM_Query_And_Remove_SubTree_ExA
#define CM_Register_Device_Interface_Ex Dyn_CM_Register_Device_Interface_ExA
#define CM_Set_DevNode_Problem_Ex Dyn_CM_Set_DevNode_Problem_Ex
#define CM_Unregister_Device_Interface_Ex Dyn_CM_Unregister_Device_Interface_ExA
#define CM_Query_Resource_Conflict_List Dyn_CM_Query_Resource_Conflict_List
#define CM_Free_Resource_Conflict_Handle Dyn_CM_Free_Resource_Conflict_Handle
#define CM_Get_Resource_Conflict_Count Dyn_CM_Get_Resource_Conflict_Count
#define CM_Get_Resource_Conflict_Details Dyn_CM_Get_Resource_Conflict_DetailsA
#define CryptCATAdminAcquireContext Dyn_CryptCATAdminAcquireContext
#define CryptCATAdminReleaseContext Dyn_CryptCATAdminReleaseContext
#define CryptCATAdminReleaseCatalogContext Dyn_CryptCATAdminReleaseCatalogContext
#define CryptCATAdminAddCatalog Dyn_CryptCATAdminAddCatalog
#define CryptCATCatalogInfoFromContext Dyn_CryptCATCatalogInfoFromContext
#define CryptCATAdminCalcHashFromFileHandle Dyn_CryptCATAdminCalcHashFromFileHandle
#define CryptCATAdminEnumCatalogFromHash Dyn_CryptCATAdminEnumCatalogFromHash
#define CryptCATAdminRemoveCatalog Dyn_CryptCATAdminRemoveCatalog
#define CryptCATAdminResolveCatalogPath Dyn_CryptCATAdminResolveCatalogPath
#define CertFreeCertificateContext Dyn_CertFreeCertificateContext
#define WinVerifyTrust Dyn_WinVerifyTrust
#define GetFileAttributesEx Dyn_GetFileAttributesExA
#define GetSystemWindowsDirectory Dyn_GetSystemWindowsDirectoryA
#endif
//
// ANSI specific emulation of API's (we don't want to dynamic check)
//
#ifdef ANSI_SETUPAPI
#undef wnsprintf
#define wnsprintf Stub_wnsprintf
#endif
//
// Functions called from DllMain
//
VOID InitializeStubFnPtrs ( VOID );
VOID CleanUpStubFns ( VOID );
FARPROC ObtainFnPtr ( PCSTR DllName, PCSTR FnName, FARPROC Default );
|