음.. 흐음...

char *의 포인터를 넘겨줘야 하는데 에러가 난다 머지?

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);

 

그래서 강제로 하면 이렇게 에러가 나는데

error: cannot convert ‘char**’ to ‘LPSTR’ {aka ‘char*’}
  103 |     rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);
      |                                                   ^~~~~~~~~~~
      |                                                   |
      |                                                   char**

 

아래처럼 변수를 미리 선언해서 자동할당 하지 않게 하거나

char mszReaders[255];
DWORD dwReaderLen = sizeof(mszReaders); // SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, mszReaders, &dwReaderLen);

 

아래 처럼 강제 형변환을 해주어서 2중 포인터가 아닌 것으로 속여주면 된다.

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, NULL, (char*)&mszReaders, &dwReaderLen);

 

해결은 되었는데 해결책 같은 느낌이 하나도 안드네..

'하드웨어 > rfid_nfc_smartcard' 카테고리의 다른 글

NDEF 데이터 읽기  (0) 2025.03.17
ntag 213, 215 그리고 13.25MHz CUID 카드  (0) 2025.03.17
SCardListReadersA 함수(winscard.h)  (0) 2025.03.17
NTAG  (0) 2025.03.12
NDEF 읽기  (0) 2025.03.11
Posted by 구차니