DXGKCB_MIRACAST_SEND_MESSAGE fungsi panggilan balik (dispmprt.h)

Mengirim pesan asinkron ke driver tampilan mode pengguna.

Sintaks

DXGKCB_MIRACAST_SEND_MESSAGE DxgkcbMiracastSendMessage;

NTSTATUS DxgkcbMiracastSendMessage(
  [in]           HANDLE MiracastHandle,
  [in]           ULONG InputBufferSize,
  [in]           VOID *pInputBuffer,
  [in]           ULONG OutputBufferSize,
  [out]          VOID *pOutputBuffer,
  [in, optional] DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK pCallback,
  [in, optional] PVOID pCallbackContext
)
{...}

Parameter

[in] MiracastHandle

Handel yang disediakan driver ke perangkat tampilan Miracast. Handel ini awalnya diteruskan di anggota MiracastHandle dari struktur DXGK_MIRACAST_DISPLAY_CALLBACKS dalam panggilan ke fungsi DxgkDdiMiracastCreateContext .

[in] InputBufferSize

Ukuran, dalam byte, dari buffer input yang diacu oleh pInputBuffer.

[in] pInputBuffer

Penunjuk ke buffer input. InputBufferSize menentukan ukuran buffer.

Lihat Keterangan untuk informasi selengkapnya tentang buffer input.

[in] OutputBufferSize

Ukuran, dalam byte, dari buffer output yang diacu oleh pOutputBuffer.

[out] pOutputBuffer

Penunjuk ke buffer output. OutBufferSize menentukan ukuran buffer.

Lihat Keterangan untuk informasi selengkapnya tentang buffer output.

[in, optional] pCallback

Penunjuk opsional, disediakan oleh driver miniport tampilan, ke fungsi panggilan balik DxgkCbMiracastSendMessageCallback .

Jika driver miniport tampilan memasok penunjuk ke DxgkCbMiracastSendMessageCallback, maka setelah driver mode pengguna menangani pesan, sistem operasi mengirim pesan ke driver mode pengguna secara asinkron dengan memanggil DxgkCbMiracastSendMessageCallback.

Lihat Mengembalikan nilai dan bagian Keterangan untuk informasi selengkapnya tentang panggilan ke DxgkCbMiracastSendMessageCallback.

[in, optional] pCallbackContext

Penunjuk opsional yang disediakan driver ke konteks panggilan balik yang disediakan driver. Sistem operasi meneruskan konteks ini ke rutinitas panggilan balik yang disediakan driver setelah operasi selesai.

Mengembalikan nilai

Mengembalikan STATUS_PENDING jika berhasil mengirimkan pesan. Jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.

Jika driver miniport tampilan perlu mengetahui status penanganan pesan dalam mode pengguna, driver tersebut harus menyediakan fungsi DxgkCbMiracastSendMessageCallback dalam parameter pCallback dan memeriksa status pengembalian dalam parameter pIoStatusBlock fungsi tersebut.

Keterangan

Jika driver miniport tampilan memasok buffer pInputBuffer dan pOutputBuffer , adalah tanggung jawab driver untuk menahan kedua buffer ini sampai fungsi DxgkCbMiracastSendMessageCallback dipanggil. Jika tidak, masalah kerusakan memori acak dapat dibuat.

Jika driver memasok DxgkCbMiracastSendMessageCallback dalam parameter pCallback , ada kemungkinan bahwa DxgkCbMiracastSendMessageCallback akan kembali sebelum DxgkCbMiracastSendMessage kembali.

Contoh urutan panggilan

Berikut adalah contoh kode yang menunjukkan cara menggunakan fungsi ini:
typedef struct _CALLBACK_CONTEXT
{
    UCHAR InputBuffer[INPUT_BUFFER_SIZE];
    UCHAR OutputBuffer[OUTPUT_BUFFER_SIZE];
} CALLBACK_CONTEXT, *PCALLBACK_CONTEXT;

...

_IRQL_requires_(PASSIVE_LEVEL)
VOID
DriverCallbackFunction(
    _In_ PVOID Context,
    _In_ PIO_STATUS_BLOCK pIoStatusBlock
    )
{
    PCALLBACK_CONTEXT CallbackContex = (PCALLBACK_CONTEXT)Context;

    ExFreePool(CallbackContex);
}

...

    CallbackContex = (PCALLBACK_CONTEXT)ExAllocatePoolWithTag(
                            PagedPool,
                            sizeof(CALLBACK_CONTEXT),
                            DRIVER_TAG);

    if (CallbackContex == NULL)
    {
        return STATUS_NO_MEMORY;
    }

    RtlZeroMemory(CallbackContex, sizeof(CALLBACK_CONTEXT));

    CallbackContex->InputBuffer[0] = 0xaa;
    CallbackContex->InputBuffer[1] = 0x55;

    Status = 
      pDeviceContext->MiracastCallbacks.DxgkCbMiracastSendMessage(
          pDeviceContext->MiracastCallbacks.MiracastHandle,
          sizeof(CallbackContex->InputBuffer),
          CallbackContex->InputBuffer,
          sizeof(CallbackContex->OutputBuffer),
          CallbackContext->OutputBuffer,
          &DriverCallbackFunction,
          CallbackContex);

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8.1
Server minimum yang didukung Windows Server 2012 R2
Target Platform Desktop
Header dispmprt.h (termasuk Dispmprt.h)
IRQL PASSIVE_LEVEL

Lihat juga

DXGK_MIRACAST_DISPLAY_CALLBACKS

DxgkCbMiracastSendMessageCallback

DxgkDdiMiracastCreateContext