Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sebelum aplikasi Winsock Kernel (WSK) dapat mendaftar dengan Network Module Registrar (NMR), aplikasi harus terlebih dahulu menginisialisasi struktur berikut.
NPI_REGISTRATION_INSTANCE terkandung dalam struktur NPI_CLIENT_CHARACTERISTICS
Semua struktur data ini harus tetap valid dan tinggal dalam memori selama aplikasi WSK terdaftar di NMR.
Contoh kode berikut menunjukkan bagaimana aplikasi WSK dapat menginisialisasi semua struktur data yang tercantum sebelumnya.
// Include the WSK header file
#include "wsk.h"
// Structure for the WSK application's network module identification
const NPI_MODULEID ModuleId =
{
sizeof(NPI_MODULEID),
MIT_GUID,
{ ... } // A GUID that uniquely identifies the WSK application
};
// Prototypes for the WSK application's NMR API callback functions
NTSTATUS
ClientAttachProvider(
IN HANDLE NmrBindingHandle,
IN PVOID ClientContext,
IN PNPI_REGISTRATION_INSTANCE ProviderRegistrationInstance
);
NTSTATUS
ClientDetachProvider(
IN PVOID ClientBindingContext
);
VOID
ClientCleanupBindingContext(
IN PVOID ClientBindingContext
);
// Structure for the WSK application's characteristics
const NPI_CLIENT_CHARACTERISTICS Characteristics =
{
0,
sizeof(NPI_CLIENT_CHARACTERISTICS),
ClientAttachProvider,
ClientDetachProvider,
ClientCleanupBindingContext,
{
0,
sizeof(NPI_REGISTRATION_INSTANCE),
&NPI_WSK_INTERFACE_ID,
&ModuleId,
0,
NULL
}
};
Aplikasi WSK memanggil fungsiNmrRegisterClient untuk mendaftarkan aplikasi dengan NMR.
Misalnya:
// Variable to contain the handle for the registration with the NMR
HANDLE RegistrationHandle;
// DriverEntry function
NTSTATUS
DriverEntry(
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath
)
{
NTSTATUS Status;
.
.
.
// Register the WSK application with the NMR
Status = NmrRegisterClient(
&Characteristics,
NULL,
&RegistrationHandle
);
if(!NT_SUCCESS(Status)) {
.
.
.
return Status;
}
.
.
.
}
Aplikasi WSK tidak diwajibkan untuk memanggil NmrRegisterClient dari dalam fungsi DriverEntry. Misalnya, jika aplikasi WSK adalah subkomponen driver yang kompleks, pendaftaran aplikasi mungkin hanya terjadi ketika subkomponen aplikasi WSK diaktifkan.