Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

666 lines
19 KiB

//
// 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
);