2025-04-27 07:49:33 -04:00

589 lines
14 KiB
C++

//=================================================================
//
// Cim32NetApi.h
//
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
//=================================================================
#ifndef _CIM32NETAPI_H_
#define _CIM32NETAPI_H_
#ifdef WIN9XONLY
#include "win32thk.h"
#include "DllWrapperBase.h"
/******************************************************************************
* #includes to Register this class with the CResourceManager.
*****************************************************************************/
extern const GUID g_guidCim32NetApi;
extern const TCHAR g_tstrCim32Net[];
typedef ULONG *LPULONG;
typedef DWORD CMBUSTYPE;
typedef CMBUSTYPE *PCMBUSTYPE;
typedef unsigned short *LPUSHORT;
// Config Manager definitions
typedef DWORD LOG_CONF; // Logical configuration.
typedef DWORD RES_DES; // Resource descriptor.
typedef LOG_CONF* PLOG_CONF; // Pointer to logical configuration.
typedef RES_DES* PRES_DES; // Pointer to resource descriptor.
typedef DWORD RANGE_LIST;
typedef DWORD RANGE_ELEMENT;
typedef RANGE_ELEMENT* PRANGE_ELEMENT;
typedef DWORD DEVNODE;
typedef DEVNODE* PDEVNODE;
typedef DWORD CMBUSTYPE; // Type of the bus.
typedef CMBUSTYPE *PCMBUSTYPE; // Pointer to a bus type.
typedef ULONG RESOURCEID; // Resource type ID.
typedef RESOURCEID* PRESOURCEID; // Pointer to resource type ID.
/******************************************************************************
* Function pointer typedefs. Add new functions here as required.
*****************************************************************************/
typedef WORD (WINAPI *PFN_CIM32NET_GET_WIN_9_X_BIOS_UNIT)
(
LPSTR lpDeviceID
);
typedef BYTE (WINAPI *PFN_CIM32NET_GET_WIN_9_X_PARTITION_TABLE)
(
BYTE cDrive,
pMasterBootSector pMBR
);
typedef BYTE (WINAPI *PFN_CIM32NET_WIN_9_X_DRIVE_PARAMS)
(
BYTE cDrive,
pInt13DriveParams pParams
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_USE_INFO_1)
(
LPSTR Name,
LPSTR Local,
LPSTR Remote,
LPSTR Password,
LPULONG pdwStatus,
LPULONG pdwType,
LPULONG pdwRefCount,
LPULONG pdwUseCount
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_NET_USE_ENUM)
(
LPCSTR pszServer,
short sLevel,
LPSTR pbBuffer,
use_info_1Out *pBuffer2,
unsigned short cbBuffer,
unsigned short far *pcEntriesRead,
unsigned short far *pcTotalAvail
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_USER_INFO_1)
(
LPSTR Name,
LPSTR HomeDirectory,
LPSTR Comment,
LPSTR ScriptPath,
LPULONG PasswordAge,
LPUSHORT Privileges,
LPUSHORT Flags
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_USER_INFO_2)
(
LPSTR Name,
LPSTR FullName,
LPSTR UserComment,
LPSTR Parameters,
LPSTR Workstations,
LPSTR LogonServer,
LPLOGONDETAILS LogonDetails
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_USER_INFO_1_EX)
(
LPSTR DomainName,
LPSTR Name,
DWORD fGetDC,
LPSTR HomeDirectory,
LPSTR Comment,
LPSTR ScriptPath,
LPULONG PasswordAge,
LPUSHORT Privileges,
LPUSHORT Flags
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_USER_INFO_2_EX)
(
LPSTR DomainName,
LPSTR Name,
DWORD fGetDC,
LPSTR FullName,
LPSTR UserComment,
LPSTR Parameters,
LPSTR Workstations,
LPSTR LogonServer,
LPLOGONDETAILS LogonDetails
);
typedef ULONG (WINAPI *PFN_CIM32NET_GET_WIN_9_X_CONFIG_MANAGER_STATUS)
(
LPSTR HardwareKey
);
typedef DWORD (WINAPI *PFN_CIM32NET_GET_WIN_9_X_FREE_SPACE)
(
DWORD dwOption
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_LOCATE_DEVNODE)
(
PDEVNODE pdn,
LPSTR HardwareKey,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_CHILD)
(
PDEVNODE pdn,
DEVNODE dnParent,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_SIBLING)
(
PDEVNODE pdn,
DEVNODE dnParent,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_READ_REGISTRY_VALUE)
(
DEVNODE dnDevNode,
LPSTR pszSubKey, LPCSTR pszValueName,
ULONG ulExpectedType,
LPVOID Buffer,
LPULONG pulLength,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_DEVNODE_STATUS)
(
LPULONG pulStatus,
LPULONG pulProblemNumber,
DEVNODE dnDevNode,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_DEVICE_ID)
(
DEVNODE dnDevNode,
LPVOID Buffer,
ULONG BufferLen,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_DEVICE_ID_SIZE)
(
LPULONG pulLen,
DEVNODE dnDevNode,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_FIRST_LOG_CONF)
(
PLOG_CONF plcLogConf,
DEVNODE dnDevNode,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_NEXT_RES_DES)
(
PRES_DES prdResDes,
RES_DES rdResDes,
RESOURCEID ForResource,
PRESOURCEID pResourceID,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_RES_DES_DATA_SIZE)
(
LPULONG pulSize,
RES_DES rdResDes,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_RES_DES_DATA)
(
RES_DES rdResDes,
LPVOID Buffer,
ULONG BufferLen,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_BUS_INFO)
(
DEVNODE dnDevNode,
PCMBUSTYPE pbtBusType,
LPULONG pulSizeOfInfo,
LPVOID pInfo,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_GET_PARENT)
(
PDEVNODE pdn,
DEVNODE dnChild,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_QUERY_ARBITRATOR_FREE_DATA)
(
PVOID pData,
ULONG DataLen,
DEVNODE dnDevInst,
RESOURCEID ResourceID,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_DELETE_RANGE)
(
ULONG ulStartValue,
ULONG ulEndValue,
RANGE_LIST rlh,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_FIRST_RANGE)
(
RANGE_LIST rlh,
LPULONG pulStart,
LPULONG pulEnd,
PRANGE_ELEMENT preElement,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_NEXT_RANGE)
(
PRANGE_ELEMENT preElement,
LPULONG pulStart,
LPULONG pullEnd,
ULONG ulFlags
);
typedef DWORD (WINAPI* PFN_CIM32NET_CM_FREE_RANGE_LIST)
(
RANGE_LIST rlh,
ULONG ulFlags
);
/******************************************************************************
* Wrapper class for Cim32Net load/unload, for registration with CResourceManager.
******************************************************************************/
class CCim32NetApi : public CDllWrapperBase
{
private:
// Member variables (function pointers) pointing to Cim32Net functions.
// Add new functions here as required.
PFN_CIM32NET_GET_WIN_9_X_BIOS_UNIT m_pfnGetWin9XBiosUnit;
PFN_CIM32NET_GET_WIN_9_X_PARTITION_TABLE m_pfnGetWin9XPartitionTable;
PFN_CIM32NET_WIN_9_X_DRIVE_PARAMS m_pfnGetWin9XDriveParams;
PFN_CIM32NET_GET_WIN_9_X_USE_INFO_1 m_pfnGetWin9XUseInfo1;
PFN_CIM32NET_GET_WIN_9_X_NET_USE_ENUM m_pfnGetWin9XNetUseEnum;
PFN_CIM32NET_GET_WIN_9_X_USER_INFO_1 m_pfnGetWin9XUserInfo1;
PFN_CIM32NET_GET_WIN_9_X_USER_INFO_2 m_pfnGetWin9XUserInfo2;
PFN_CIM32NET_GET_WIN_9_X_USER_INFO_1_EX m_pfnGetWin9XUserInfo1Ex;
PFN_CIM32NET_GET_WIN_9_X_USER_INFO_2_EX m_pfnGetWin9XUserInfo2Ex;
PFN_CIM32NET_GET_WIN_9_X_CONFIG_MANAGER_STATUS m_pfnGetWin9XConfigManagerStatus;
PFN_CIM32NET_GET_WIN_9_X_FREE_SPACE m_pfnGetWin9XFreeSpace ;
PFN_CIM32NET_CM_LOCATE_DEVNODE m_pfnCIM32THK_CM_Locate_DevNode;
PFN_CIM32NET_CM_GET_CHILD m_pfnCIM32THK_CM_Get_Child;
PFN_CIM32NET_CM_GET_SIBLING m_pfnCIM32THK_CM_Get_Sibling;
PFN_CIM32NET_CM_READ_REGISTRY_VALUE m_pfnCIM32THK_CM_Read_Registry_Value;
PFN_CIM32NET_CM_GET_DEVNODE_STATUS m_pfnCIM32THK_CM_Get_DevNode_Status;
PFN_CIM32NET_CM_GET_DEVICE_ID m_pfnCIM32THK_CM_Get_Device_ID;
PFN_CIM32NET_CM_GET_DEVICE_ID_SIZE m_pfnCIM32THK_CM_Get_Device_ID_Size;
PFN_CIM32NET_CM_GET_FIRST_LOG_CONF m_pfnCIM32THK_CM_Get_First_Log_Conf;
PFN_CIM32NET_CM_GET_NEXT_RES_DES m_pfnCIM32THK_CM_Get_Next_Res_Des;
PFN_CIM32NET_CM_GET_RES_DES_DATA_SIZE m_pfnCIM32THK_CM_Get_Res_Des_Data_Size;
PFN_CIM32NET_CM_GET_RES_DES_DATA m_pfnCIM32THK_CM_Get_Res_Des_Data;
PFN_CIM32NET_CM_GET_BUS_INFO m_pfnCIM32THK_CM_Get_Bus_Info;
PFN_CIM32NET_CM_GET_PARENT m_pfnCIM32THK_CM_Get_Parent;
PFN_CIM32NET_CM_QUERY_ARBITRATOR_FREE_DATA m_pfnCIM32THK_CM_Query_Arbitrator_Free_Data;
PFN_CIM32NET_CM_DELETE_RANGE m_pfnCIM32THK_CM_Delete_Range;
PFN_CIM32NET_CM_FIRST_RANGE m_pfnCIM32THK_CM_First_Range;
PFN_CIM32NET_CM_NEXT_RANGE m_pfnCIM32THK_CM_Next_Range;
PFN_CIM32NET_CM_FREE_RANGE_LIST m_pfnCIM32THK_CM_Free_Range_List;
public:
// Constructor and destructor:
CCim32NetApi(LPCTSTR a_tstrWrappedDllName);
~CCim32NetApi();
// Inherrited initialization function.
virtual bool Init();
// Member functions wrapping Cim32Net functions.
// Add new functions here as required:
WORD GetWin9XBiosUnit
(
LPSTR a_lpDeviceID
);
BYTE GetWin9XPartitionTable
(
BYTE a_cDrive,
pMasterBootSector a_pMBR
);
BYTE GetWin9XDriveParams
(
BYTE a_cDrive,
pInt13DriveParams a_pParams
);
ULONG GetWin9XUseInfo1
(
LPSTR Name,
LPSTR Local,
LPSTR Remote,
LPSTR Password,
LPULONG pdwStatus,
LPULONG pdwType,
LPULONG pdwRefCount,
LPULONG pdwUseCount
);
ULONG GetWin9XNetUseEnum(
LPCSTR pszServer,
short sLevel,
LPSTR pbBuffer,
use_info_1Out *pBuffer2,
unsigned short cbBuffer,
unsigned short far *pcEntriesRead,
unsigned short far *pcTotalAvail
);
ULONG GetWin9XUserInfo1
(
LPSTR Name,
LPSTR HomeDirectory,
LPSTR Comment,
LPSTR ScriptPath,
LPULONG PasswordAge,
LPUSHORT Privileges,
LPUSHORT Flags
);
ULONG GetWin9XUserInfo2
(
LPSTR Name,
LPSTR FullName,
LPSTR UserComment,
LPSTR Parameters,
LPSTR Workstations,
LPSTR LogonServer,
LPLOGONDETAILS LogonDetails
);
ULONG GetWin9XUserInfo1Ex
(
LPSTR DomainName,
LPSTR Name,
DWORD fGetDC,
LPSTR HomeDirectory,
LPSTR Comment,
LPSTR ScriptPath,
LPULONG PasswordAge,
LPUSHORT Privileges,
LPUSHORT Flags
);
ULONG GetWin9XUserInfo2Ex
(
LPSTR DomainName,
LPSTR Name,
DWORD fGetDC,
LPSTR FullName,
LPSTR UserComment,
LPSTR Parameters,
LPSTR Workstations,
LPSTR LogonServer,
LPLOGONDETAILS LogonDetails
);
ULONG GetWin9XConfigManagerStatus
(
LPSTR a_HardwareKey
);
DWORD CCim32NetApi::GetWin9XGetFreeSpace
(
DWORD dwOption
);
DWORD CIM32THK_CM_Locate_DevNode
(
PDEVNODE pdn,
LPSTR HardwareKey,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Child
(
PDEVNODE pdn,
DEVNODE dnParent,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Sibling
(
PDEVNODE pdn,
DEVNODE dnParent,
ULONG ulFlags
);
DWORD CIM32THK_CM_Read_Registry_Value
(
DEVNODE dnDevNode,
LPSTR pszSubKey, LPCSTR pszValueName,
ULONG ulExpectedType,
LPVOID Buffer,
LPULONG pulLength,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_DevNode_Status
(
LPULONG pulStatus,
LPULONG pulProblemNumber,
DEVNODE dnDevNode,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Device_ID
(
DEVNODE dnDevNode,
LPVOID Buffer,
ULONG BufferLen,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Device_ID_Size
(
LPULONG pulLen,
DEVNODE dnDevNode,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_First_Log_Conf
(
PLOG_CONF plcLogConf,
DEVNODE dnDevNode,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Next_Res_Des
(
PRES_DES prdResDes,
RES_DES rdResDes,
RESOURCEID ForResource,
PRESOURCEID pResourceID,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Res_Des_Data_Size
(
LPULONG pulSize,
RES_DES rdResDes,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Res_Des_Data
(
RES_DES rdResDes,
LPVOID Buffer,
ULONG BufferLen,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Bus_Info
(
DEVNODE dnDevNode,
PCMBUSTYPE pbtBusType,
LPULONG pulSizeOfInfo,
LPVOID pInfo,
ULONG ulFlags
);
DWORD CIM32THK_CM_Get_Parent
(
PDEVNODE pdn,
DEVNODE dnChild,
ULONG ulFlags
);
DWORD CIM32THK_CM_Query_Arbitrator_Free_Data
(
PVOID pData,
ULONG DataLen,
DEVNODE dnDevInst,
RESOURCEID ResourceID,
ULONG ulFlags
);
DWORD CIM32THK_CM_Delete_Range
(
ULONG ulStartValue,
ULONG ulEndValue,
RANGE_LIST rlh,
ULONG ulFlags
);
DWORD CIM32THK_CM_First_Range
(
RANGE_LIST rlh,
LPULONG pulStart,
LPULONG pulEnd,
PRANGE_ELEMENT preElement,
ULONG ulFlags
);
DWORD CIM32THK_CM_Next_Range
(
PRANGE_ELEMENT preElement,
LPULONG pulStart,
LPULONG pullEnd,
ULONG ulFlags
);
DWORD CIM32THK_CM_Free_Range_List
(
RANGE_LIST rlh,
ULONG ulFlags
);
};
#endif
#endif