W32_SD_CMD_MMC_GET_CID
Empfänget den CID der Speicherkarte.
Der lpInBuffer kann NULL sein.
Der lpOutBuffer enthält die Karten response.
sd_cmd_block structure
struct sd_cmd_block
{
char sd_cmd;
char sd_arg[4];
char sd_cmd_flags;
char sd_data_dir;
char sd_data_len;
char sd_response;
char sd_response_len;
};
sd_cmd
char SD/MMC Kommando Byte
sd_arg[4]
char Parameter für das Kommando nach SD/MMC
Spezifikation
sd_command_flags
char Flags : 0x01 Kommando mit Datentransfer
0x02 Kommando mit response
0x04 Treiber sendet zuerst APP_CMD (für SD Security
Kommandos)
sd_data_dir
char data direction
0x00 Daten werden von der Karte zum Host gesendet
0x01 Daten werden vom Host zur Karte gesendet
sd_data_len
char Datenlänge
sd_response
char response Typ :
0x00 : keine response
0x01 : R1
0x02 : R2
0x03 : R3
sd_response_len
char response Länge
Jegliche Daten, die an die Karte gesendet werden sollen (falls sd_data_dir = 0x01),
müssen direkt dem Kommand Block folgen.
Jegliche Daten, die von der Karte empfangen werden, liegen im lpOutBuffer.
Handbuch High-Speed CopyStation 6.2
30
sd_response structure
Dies ist das Standard response Format, wie im SD/MMC Standard definiert. Für weite-
re Details lesen Sie bitte in der Spezifikation nach.
struct sd_response
{
unsigned char cmd;
unsigned char arg1;
unsigned char arg2;
unsigned char arg3;
unsigned char arg4;
unsigned char crc;
};
Beispiel 2
Dies Beispiel zeigt, wie ein SD Kommando 13 an die SD/MMC Karte gesendet wird und
wie die response empfangen wird. Der Name des Logischen Laufwerks ist auf Z: fest-
gelegt.
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(int argc, char* argv[])
{
FILE *f1;
int retcode =0;
void *vdrive;
BOOL ioresult;
char buffer[512];
struct sd_response *response = (struct sd_response *)buffer;
unsigned long bytesreturned=0;
struct sd_cmd_block sd_cmd;
// display parameters..
for ( int i=0;i<argc;i++)
printf("Parameter %d = %s\n",i,argv[i]);
// Open a channel to the virtual drive
vdrive = CreateFile("\\\\.\\Z:", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL ) ;
if (vdrive == INVALID_HANDLE_VALUE) {
return (1);
}
31
Handbuch High-Speed CopyStation 6.2