windows-nt/Source/XPSP1/NT/windows/winstate/cobra/modules/guitrans/entry.c
2020-09-26 16:20:57 +08:00

204 lines
4.1 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
entry.c
Abstract:
Implements the DLL entry point that provides all Cobra module entry points
to the engine.
Author:
Jim Schmidt (jimschm) 11-Aug-2000
Revision History:
<alias> <date> <comments>
--*/
#include "pch.h"
#include "guitrans.h"
typedef struct {
PCTSTR Name;
TRANSPORT_ENTRYPOINTS EntryPoints;
} TRANSPORT_TABLE, *PTRANSPORT_TABLE;
#define NOPROGBAR NULL
#define NORESET NULL
#define NORESUME NULL
//
// Add an entry for each transport module in the DLL
//
TRANSPORT_TABLE g_TransportEntryPoints[] = {
{ TEXT("REMOVABLE_MEDIA"), ISM_VERSION,
RmvMedTransportInitialize,
RmvMedTransportEstimateProgressBar,
RmvMedTransportQueryCapabilities,
RmvMedTransportSetStorage,
NORESET,
RmvMedTransportTerminate,
RmvMedTransportSaveState,
NORESUME,
RmvMedTransportBeginApply,
NORESUME,
RmvMedTransportAcquireObject,
RmvMedTransportReleaseObject,
RmvMedTransportEndApply
},
{ TEXT("DIRECT_CABLE"), ISM_VERSION,
DirectCableTransportInitialize,
DirectCableTransportEstimateProgressBar,
DirectCableTransportQueryCapabilities,
DirectCableTransportSetStorage,
NORESET,
DirectCableTransportTerminate,
DirectCableTransportSaveState,
NORESUME,
DirectCableTransportBeginApply,
NORESUME,
DirectCableTransportAcquireObject,
DirectCableTransportReleaseObject,
DirectCableTransportEndApply
},
{ TEXT("HOME_NETWORKING"), ISM_VERSION,
HomeNetTransportInitialize,
HomeNetTransportEstimateProgressBar,
HomeNetTransportQueryCapabilities,
HomeNetTransportSetStorage,
HomeNetTransportResetStorage,
HomeNetTransportTerminate,
HomeNetTransportSaveState,
NORESUME,
HomeNetTransportBeginApply,
NORESUME,
HomeNetTransportAcquireObject,
HomeNetTransportReleaseObject,
HomeNetTransportEndApply
},
{ TEXT("OPAQUE_UNC_TRANSPORT"), ISM_VERSION,
OpaqueTransportInitialize,
OpaqueTransportEstimateProgressBar,
OpaqueTransportQueryCapabilities,
OpaqueTransportSetStorage,
NORESET,
OpaqueTransportTerminate,
OpaqueTransportSaveState,
NORESUME,
OpaqueTransportBeginApply,
NORESUME,
OpaqueTransportAcquireObject,
OpaqueTransportReleaseObject,
OpaqueTransportEndApply
},
{NULL}
};
EXPORT
BOOL
WINAPI
DllMain (
IN HINSTANCE hInstance,
IN DWORD dwReason,
IN LPVOID lpReserved
)
{
if (dwReason == DLL_PROCESS_ATTACH) {
g_hInst = hInstance;
}
return TRUE;
}
EXPORT
BOOL
WINAPI
ModuleInitialize (
VOID
)
{
TCHAR memDbDir[MAX_PATH];
UtInitialize (NULL);
FileEnumInitialize ();
RegInitialize ();
IsmGetTempDirectory (memDbDir, ARRAYSIZE (memDbDir));
if (!MemDbInitializeEx (memDbDir)) {
IsmSetCancel();
return FALSE;
}
return TRUE;
}
EXPORT
VOID
WINAPI
ModuleTerminate (
VOID
)
{
MemDbTerminateEx (TRUE);
RegTerminate();
FileEnumTerminate ();
UtTerminate ();
}
BOOL
WINAPI
pFindModule (
IN PCTSTR ModuleId,
OUT PVOID IsmBuffer,
IN PCTSTR *TableEntry,
IN UINT StructureSize
)
{
while (*TableEntry) {
if (StringIMatch (*TableEntry, ModuleId)) {
CopyMemory (
IsmBuffer,
(PBYTE) (TableEntry + 1),
StructureSize
);
return TRUE;
}
TableEntry = (PCTSTR *) ((PBYTE) (TableEntry + 1) + StructureSize);
}
return FALSE;
}
EXPORT
BOOL
WINAPI
TransportModule (
IN PCTSTR ModuleId,
IN OUT PTRANSPORT_ENTRYPOINTS TransportEntryPoints
)
{
return pFindModule (
ModuleId,
(PVOID) TransportEntryPoints,
(PCTSTR *) g_TransportEntryPoints,
sizeof (TRANSPORT_ENTRYPOINTS)
);
}