589 lines
14 KiB
C++
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
|