micetools/src/micetools/lib/am/amSram.h

57 lines
1.5 KiB
C

#pragma once
#include <Windows.h>
#include "../_am.h"
AM_LIB_H_HEADER(amSram, AM_SRAM)
typedef struct _AM_SRAM {
DWORD m_init;
HANDLE m_handle;
LARGE_INTEGER m_size;
DWORD m_sectorSize;
HANDLE m_mutex;
int m_readTimeout;
int m_writeTimeout;
int Unk20;
PSID m_sid;
} AM_SRAM;
typedef enum {
AM_SRAM_STATUS_OK = 0,
AM_SRAM_STATUS_NG = -1,
AM_SRAM_STATUS_ERR_INVALID_PARAM = -2,
AM_SRAM_STATUS_ERR_NO_INIT = -3,
AM_SRAM_STATUS_ERR_ALREADY_INIT = -4,
AM_SRAM_STATUS_ERR_PROTOCOL_VER = -5,
AM_SRAM_STATUS_ERR_SYS = -6,
AM_SRAM_STATUS_ERR_READ = -7,
AM_SRAM_STATUS_ERR_WRITE = -8,
AM_SRAM_STATUS_ERR_COPY = -9,
AM_SRAM_STATUS_ERR_DOMAIN = -10,
AM_SRAM_STATUS_ERR_GET_MUTEX = -11,
AM_SRAM_STATUS_ERR_NOT_SUPPORT = -12,
} AM_SRAM_STATUS;
#define AM_SRAM_MAX_SECTOR_SIZE 0x800
AM_SRAM_STATUS amSramCreateMutex(AM_SRAM *device);
AM_SRAM_STATUS amSramInit(void);
AM_SRAM_STATUS amSramExit(void);
AM_SRAM_STATUS amSramReadInternal(AM_SRAM *device, LONG addressLow, LONG addressHigh, LPVOID buffer,
DWORD nBytes);
AM_SRAM_STATUS amSramWriteInternal(AM_SRAM *device, LONG addressLow, LONG addressHigh,
LPCVOID buffer, DWORD nBytes);
AM_SRAM_STATUS amSramRead(DWORD src, LPVOID pDst, DWORD size);
AM_SRAM_STATUS amSramWrite(LPCVOID pSrc, DWORD dst, DWORD size);
// TODO:
void amSramCopy(void);
void amSramGetSectorSize(void);
void amSramGetSize(void);
void amSramSetTimeout(void);