windows-nt/Source/XPSP1/NT/base/ntsetup/hwdb/utils/inc/ipc.h
2020-09-26 16:20:57 +08:00

158 lines
2.8 KiB
C

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
ipc.h
Abstract:
Implements IPC interface to allow setup to talk with migisol.exe,
in order to run migration DLLs in separate processes.
Author:
Jim Schmidt (jimschm) 28-Mar-1997
Revision History:
jimschm 23-Sep-1998 Changed from mailslots to memory mapped files
--*/
#pragma once
BOOL
IpcOpenW (
IN BOOL Win95Side,
IN PCWSTR ExePath, OPTIONAL
IN PCWSTR MigrationDllPath, OPTIONAL
IN PCWSTR WorkingDir OPTIONAL
);
BOOL
IpcOpenA (
IN BOOL Win95Side,
IN PCSTR ExePath, OPTIONAL
IN PCSTR MigrationDllPath, OPTIONAL
IN PCSTR WorkingDir OPTIONAL
);
DWORD
IpcCheckForWaitingData (
IN HANDLE Slot,
IN DWORD MinimumSize,
IN DWORD Timeout
);
BOOL
IpcProcessAlive (
VOID
);
VOID
IpcKillProcess (
VOID
);
BOOL
IpcSendCommand (
IN DWORD Command,
IN PBYTE Data, OPTIONAL
IN DWORD DataSize
);
BOOL
IpcGetCommandResults (
IN DWORD Timeout,
OUT PBYTE *ReturnData, OPTIONAL
OUT PDWORD ReturnDataSize, OPTIONAL
OUT PDWORD ResultCode, OPTIONAL
OUT PDWORD TechnicalLogId, OPTIONAL
OUT PDWORD GuiLogId OPTIONAL
);
BOOL
IpcGetCommand (
IN DWORD Timeout,
IN PDWORD Command, OPTIONAL
IN PBYTE *Data, OPTIONAL
IN PDWORD DataSize OPTIONAL
);
BOOL
IpcSendCommandResults (
IN DWORD ResultCode,
IN DWORD TechnicalLogId,
IN DWORD GuiLogId,
IN PBYTE Data, OPTIONAL
IN DWORD DataSize
);
#define IPC_GET_RESULTS_WIN9X 1000
#define IPC_GET_RESULTS_NT 7500
#define IPC_GET_COMMAND_WIN9X 10000
#define IPC_GET_COMMAND_NT 10000
#ifdef UNICODE
#define IpcOpen IpcOpenW
#else
#define IpcOpen IpcOpenA
#endif
VOID
IpcClose (
VOID
);
typedef LONG (WINAPI WINVERIFYTRUST_PROTOTYPE)(HWND hwnd, GUID *ActionId, PVOID Data);
typedef WINVERIFYTRUST_PROTOTYPE * WINVERIFYTRUST;
BOOL
IsDllSignedA (
IN WINVERIFYTRUST WinVerifyTrustApi,
IN PCSTR DllSpec
);
BOOL
IsDllSignedW (
IN WINVERIFYTRUST WinVerifyTrustApi,
IN PCWSTR DllSpec
);
#ifdef UNICODE
#define IsDllSigned IsDllSignedW
#else
#define IsDllSigned IsDllSignedA
#endif
//
// Remote commands
//
#define IPC_QUERY 1
#define IPC_INITIALIZE 2
#define IPC_MIGRATEUSER 3
#define IPC_MIGRATESYSTEM 4
#define IPC_TERMINATE 5
#define IPC_DVDCHECK 6
//
// APIs implemented in IPC
//
BOOL
IsolatedIsDvdPresentA (
PCSTR ExePath
);