📄 busacc.cpp
字号:
return fReturn;
}
else {
SetLastError(ERROR_NOT_SUPPORTED);
return FALSE;
}
}
VOID SDBusAccess::SDFreeBusRequest__X(HBUS_REQUEST hRequest)
{
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_FREE_BUS_REQUEST,
&hRequest,sizeof(hRequest),
NULL,0,
NULL,NULL);
if (!fReturn)
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDFreeBusRequest__X: Failed GetLastError() = %d \n"),GetLastError()));
}
}
SD_API_STATUS SDBusAccess::SDCardInfoQuery__X( SD_DEVICE_HANDLE hHandle,
SD_INFO_TYPE InfoType,PVOID pCardInfo,ULONG StructureSize)
{
SD_API_STATUS apiStatus = SD_API_STATUS_SUCCESS ;
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
IO_SD_CARD_INFO_QUERY sdCardInfoQueryParam = {
hHandle,InfoType
};
SetLastError(SD_API_STATUS_SUCCESS);
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_CARD_INFO_QUERY,
&sdCardInfoQueryParam,sizeof(sdCardInfoQueryParam),
pCardInfo,StructureSize,
NULL,NULL);
apiStatus = GetLastError();
if (!fReturn) { // We failed on BusIoControl
if (SD_API_SUCCESS(apiStatus))
apiStatus = SD_API_STATUS_NO_SUCH_DEVICE;
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDCardInfoQuery__X: Failed GetLastError() = %d \n"),apiStatus));
}
return apiStatus ;
}
else
return SD_API_STATUS_NO_SUCH_DEVICE ;
}
SD_API_STATUS SDBusAccess::SDReadWriteRegistersDirect__X(SD_DEVICE_HANDLE hDevice,
SD_IO_TRANSFER_TYPE ReadWrite, UCHAR Function, DWORD Address, BOOLEAN ReadAfterWrite, PUCHAR pBuffer, ULONG Length)
{
SD_API_STATUS apiStatus = SD_API_STATUS_SUCCESS ;
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
IO_SD_READ_WRITE_REGISTERS_DIRECT sdReadWriteDirectParam = {
hDevice, ReadWrite, Function, Address, ReadAfterWrite,pBuffer,Length
};
SetLastError(SD_API_STATUS_SUCCESS);
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_READ_WRITE_REGISTERS_DIRECT,
&sdReadWriteDirectParam,sizeof(sdReadWriteDirectParam),
NULL,0,
NULL,NULL);
apiStatus = GetLastError();
if (!fReturn) { // We failed on BusIoControl
if (SD_API_SUCCESS(apiStatus))
apiStatus = SD_API_STATUS_NO_SUCH_DEVICE;
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDReadWriteRegistersDirect__X: Failed GetLastError() = %d \n"),apiStatus));
}
return apiStatus ;
}
else
return SD_API_STATUS_NO_SUCH_DEVICE ;
}
SD_API_STATUS SDBusAccess::SDGetTuple__X(SD_DEVICE_HANDLE hDevice,
UCHAR TupleCode, PUCHAR pBuffer,PULONG pBufferSize,BOOL CommonCIS)
{
SD_API_STATUS apiStatus = SD_API_STATUS_SUCCESS ;
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
IO_BUS_SD_GET_TUPLE sdGetTupleParam = {
hDevice, TupleCode, CommonCIS
};
SetLastError(SD_API_STATUS_SUCCESS);
DWORD dwReturn = 0;
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_GET_TUPLE,
&sdGetTupleParam,sizeof(sdGetTupleParam),
pBuffer,pBufferSize!=NULL?*pBufferSize:0,
&dwReturn,NULL);
apiStatus = GetLastError();
if (!fReturn) { // We failed on BusIoControl
if (SD_API_SUCCESS(apiStatus))
apiStatus = SD_API_STATUS_NO_SUCH_DEVICE;
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDReadWriteRegistersDirect__X: Failed GetLastError() = %d \n"),apiStatus));
}
else if (pBufferSize) {
*pBufferSize = dwReturn ;
}
return apiStatus ;
}
else
return SD_API_STATUS_NO_SUCH_DEVICE ;
}
SD_API_STATUS SDBusAccess::SDIOConnectInterrupt__X(SD_DEVICE_HANDLE hDevice,
PSD_INTERRUPT_CALLBACK pIsrFunction)
{
SD_API_STATUS apiStatus = SD_API_STATUS_SUCCESS ;
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
IO_SD_IO_CONNECT_INTERRUPT sdIoConnectInterruptParam = {
hDevice, {pIsrFunction }
};
SetLastError(SD_API_STATUS_SUCCESS);
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_IO_CONNECT_INTERRUPT,
&sdIoConnectInterruptParam,sizeof(sdIoConnectInterruptParam),
NULL,0,
NULL,NULL);
apiStatus = GetLastError();
if (!fReturn) { // We failed on BusIoControl
if (SD_API_SUCCESS(apiStatus))
apiStatus = SD_API_STATUS_NO_SUCH_DEVICE;
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDIOConnectInterrupt__X: Failed GetLastError() = %d \n"),apiStatus));
}
return apiStatus ;
}
else
return SD_API_STATUS_NO_SUCH_DEVICE ;
}
VOID SDBusAccess::SDIODisconnectInterrupt__X(SD_DEVICE_HANDLE hDevice)
{
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_IO_DISCONNECT_INTERRUPT,
&hDevice,sizeof(hDevice),
NULL,0,
NULL,NULL);
if (!fReturn)
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDIODisconnectInterrupt__X: Failed GetLastError() = %d \n"),GetLastError()));
}
}
SD_API_STATUS SDBusAccess::SDSetCardFeature__X(SD_DEVICE_HANDLE hDevice,
SD_SET_FEATURE_TYPE CardFeature, PVOID pCardInfo, ULONG StructureSize)
{
SD_API_STATUS apiStatus = SD_API_STATUS_SUCCESS ;
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
IO_SD_SET_CARD_FEATURE sdIoSetCardFeatureParam = {
hDevice, CardFeature,pCardInfo,StructureSize
};
SetLastError(SD_API_STATUS_SUCCESS);
BOOL fReturn= BusIoControl(l_pSDBusAccess->GetBusAccessHandle(),IOCTL_BUS_SD_SET_CARD_FEATURE,
&sdIoSetCardFeatureParam,sizeof(sdIoSetCardFeatureParam),
NULL,0,
NULL,NULL);
apiStatus = GetLastError();
if (!fReturn) { // We failed on BusIoControl
if (SD_API_SUCCESS(apiStatus))
apiStatus = SD_API_STATUS_NO_SUCH_DEVICE;
DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("BusIo for SDSetCardFeature__X: Failed GetLastError() = %d \n"),apiStatus));
}
return apiStatus ;
}
else
return SD_API_STATUS_NO_SUCH_DEVICE ;
}
extern "C"
SD_API_STATUS SDBusGetClientFunctions(PSDCARD_API_FUNCTIONS pClientFunctions)
{
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (pClientFunctions && pClientFunctions->dwSize>= sizeof(SDCARD_API_FUNCTIONS) && l_pSDBusAccess ) {
*pClientFunctions = *(PSDCARD_API_FUNCTIONS)l_pSDBusAccess;
pClientFunctions->dwSize = sizeof(SDCARD_API_FUNCTIONS);
return SD_API_STATUS_SUCCESS;
}
else
return SD_API_STATUS_INVALID_PARAMETER;
}
extern "C"
HANDLE GetBusAccessHandle()
{
SDBusAccess * l_pSDBusAccess = g_pSDBusAccess;
if (l_pSDBusAccess ) {
return l_pSDBusAccess->GetBusAccessHandle();
}
else
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -