![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ICカードへアクセスするPC/SC関数に
SCardGetCardTypeProviderNameという関数があります。
この関数を実行すると、
chProviderという変数に、szProviderに格納されている
変数のバイト数が格納されるはずなのですが、
chProviderには15が格納されているのに、
szProvider はnullなのです。
nullならchProviderは0ではないのでしょうか?
ソースコードは次のように書いています。
char szCard[] = "ICCard";
DWORD chProvider = SCARD_AUTOALLOCATE;
retSc = SCardGetCardTypeProviderName( hContext ,
szCard ,
SCARD_PROVIDER_CSP ,
(LPTSTR)szProvider ,
&chProvider);
OS:Win2K+Sp2 Pro,Visual Studio6.0 +SP5
どうしてなのかさっぱり分かりません。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
> LPTSTR szProvider = NULL;
> という宣言をしてます。ポインタ宣言ですが、これがおかしいですかね?
たぶんおかしい。ここに答えが格納されるんだろうと思います。確認してください。
もしそうなら、答えの格納十分な領域を用意し、zProviderがそこを指すように。
領域が十分に確保されていなかったのが原因のようです。
mallocでszProviderのメモリを確保したらうまくいきました。
どうもありがとうございました。
No.1
- 回答日時:
szProvider の'型'は何ですか?
察するに szProvider が示す領域に何らかの
情報が書き込まれるようですが、szProviderは
十分な大きさの領域を指していますか?
この回答への補足
お返事ありがとうございます。
LPTSTR szProvider = NULL;
という宣言をしてます。ポインタ宣言ですが、これがおかしいですかね?
MSDNには、
LONG SCardGetCardTypeProviderName(
IN SCARDCONTEXT hContext,
IN LPCTSTR szCardName,
IN DWORD dwProviderId,
OUT LPTSTR szProvider,
IN OUT LPDWORD pcchProvider
);
というヘルプがあるので、szProviderをLPTSTR 型で
切ったんですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
16進ダンプのプログラム
-
Win32APIでのメモリ管理について
-
MFCのCStringについて
-
callocの処理速度
-
DLLのマルチスレッドの動作につ...
-
C++で、メンバもヒープに確保さ...
-
void*型のデータサイズ
-
stringの最大サイズ
-
構造体でchar name[]と*nameの...
-
ビットをローテートするプログ...
-
指定したメモリアドレスの値の...
-
メモリに格納される文字列のバ...
-
メモリ解放について
-
Accessで、メモリを開放するタ...
-
GDI+におけるメモリの開放について
-
プログラムが途中で強制終了し...
-
newでrealloc?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
mallocについて
-
配列の添え字の最大数とは?
-
ヒープメモリの解放について
-
ビットをローテートするプログ...
-
C++で、メンバもヒープに確保さ...
-
malloc呼び出し時のセグメンテ...
-
プログラムが途中で強制終了し...
-
指定したメモリアドレスの値の...
-
スタック破壊の上手な見つけ方...
-
void*型のデータサイズ
-
ポインタのポインタの初期化法
-
free関数で動作が止まる
-
callocの処理速度
-
MSDNがgethostbynameではなくge...
-
C++のnewで確保したメモリーの...
-
sprintf()の使い方について
-
Accessで、メモリを開放するタ...
おすすめ情報